From 328f839da8a2e806a3a7f3fd2263f8940090d0f0 Mon Sep 17 00:00:00 2001 From: Caleb Date: Wed, 25 Feb 2026 21:52:48 -0500 Subject: [PATCH] initial commit for coom in opengl --- .clangd | 2 + .gitignore | 1 + Makefile | 15 + awesomeface.png | Bin 0 -> 59277 bytes build/main | Bin 0 -> 297184 bytes camera.hpp | 143 + compile_flags.txt | 1 + container.jpg | Bin 0 -> 184939 bytes fragmentshader.glsl | 14 + glad.c | 2123 ++++ image.png | Bin 0 -> 1641845 bytes include/KHR/khrplatform.h | 311 + include/glad/glad.h | 3611 ++++++ include/glm/.gitignore | 62 + include/glm/CMakeLists.txt | 304 + include/glm/cmake/cmake_uninstall.cmake.in | 21 + include/glm/copying.txt | 54 + include/glm/doc/api/a00002.html | 249 + include/glm/doc/api/a00002_source.html | 257 + include/glm/doc/api/a00005_source.html | 475 + include/glm/doc/api/a00008_source.html | 103 + include/glm/doc/api/a00011_source.html | 163 + include/glm/doc/api/a00014_source.html | 891 ++ include/glm/doc/api/a00017_source.html | 763 ++ include/glm/doc/api/a00020_source.html | 311 + include/glm/doc/api/a00023_source.html | 131 + include/glm/doc/api/a00026_source.html | 271 + include/glm/doc/api/a00029_source.html | 111 + include/glm/doc/api/a00032_source.html | 378 + include/glm/doc/api/a00035_source.html | 1242 +++ include/glm/doc/api/a00038_source.html | 150 + include/glm/doc/api/a00041_source.html | 97 + include/glm/doc/api/a00044.html | 90 + include/glm/doc/api/a00044_source.html | 258 + include/glm/doc/api/a00047.html | 90 + include/glm/doc/api/a00047_source.html | 241 + include/glm/doc/api/a00050.html | 90 + include/glm/doc/api/a00050_source.html | 243 + include/glm/doc/api/a00053.html | 90 + include/glm/doc/api/a00053_source.html | 249 + include/glm/doc/api/a00056.html | 90 + include/glm/doc/api/a00056_source.html | 265 + include/glm/doc/api/a00059.html | 90 + include/glm/doc/api/a00059_source.html | 248 + include/glm/doc/api/a00062.html | 90 + include/glm/doc/api/a00062_source.html | 253 + include/glm/doc/api/a00065.html | 90 + include/glm/doc/api/a00065_source.html | 253 + include/glm/doc/api/a00068.html | 90 + include/glm/doc/api/a00068_source.html | 270 + include/glm/doc/api/a00071.html | 90 + include/glm/doc/api/a00071_source.html | 265 + include/glm/doc/api/a00074.html | 90 + include/glm/doc/api/a00074_source.html | 383 + include/glm/doc/api/a00077.html | 90 + include/glm/doc/api/a00077_source.html | 481 + include/glm/doc/api/a00080.html | 90 + include/glm/doc/api/a00080_source.html | 519 + include/glm/doc/api/a00083.html | 90 + include/glm/doc/api/a00083_source.html | 574 + include/glm/doc/api/a00086.html | 125 + include/glm/doc/api/a00086_source.html | 128 + include/glm/doc/api/a00089_source.html | 209 + include/glm/doc/api/a00092.html | 280 + include/glm/doc/api/a00092_source.html | 328 + include/glm/doc/api/a00095.html | 90 + include/glm/doc/api/a00095_source.html | 108 + include/glm/doc/api/a00098.html | 102 + include/glm/doc/api/a00098_source.html | 95 + include/glm/doc/api/a00101.html | 114 + include/glm/doc/api/a00101_source.html | 107 + include/glm/doc/api/a00104.html | 99 + include/glm/doc/api/a00104_source.html | 92 + include/glm/doc/api/a00107.html | 105 + include/glm/doc/api/a00107_source.html | 98 + include/glm/doc/api/a00110.html | 99 + include/glm/doc/api/a00110_source.html | 92 + include/glm/doc/api/a00113.html | 105 + include/glm/doc/api/a00113_source.html | 98 + include/glm/doc/api/a00116.html | 99 + include/glm/doc/api/a00116_source.html | 92 + include/glm/doc/api/a00119.html | 105 + include/glm/doc/api/a00119_source.html | 98 + include/glm/doc/api/a00122.html | 102 + include/glm/doc/api/a00122_source.html | 95 + include/glm/doc/api/a00125.html | 114 + include/glm/doc/api/a00125_source.html | 107 + include/glm/doc/api/a00128.html | 99 + include/glm/doc/api/a00128_source.html | 92 + include/glm/doc/api/a00131.html | 105 + include/glm/doc/api/a00131_source.html | 98 + include/glm/doc/api/a00134.html | 99 + include/glm/doc/api/a00134_source.html | 92 + include/glm/doc/api/a00137.html | 105 + include/glm/doc/api/a00137_source.html | 98 + include/glm/doc/api/a00140.html | 99 + include/glm/doc/api/a00140_source.html | 92 + include/glm/doc/api/a00143.html | 105 + include/glm/doc/api/a00143_source.html | 98 + include/glm/doc/api/a00146.html | 102 + include/glm/doc/api/a00146_source.html | 95 + include/glm/doc/api/a00149.html | 114 + include/glm/doc/api/a00149_source.html | 107 + include/glm/doc/api/a00152.html | 102 + include/glm/doc/api/a00152_source.html | 95 + include/glm/doc/api/a00155.html | 114 + include/glm/doc/api/a00155_source.html | 107 + include/glm/doc/api/a00158.html | 99 + include/glm/doc/api/a00158_source.html | 92 + include/glm/doc/api/a00161.html | 105 + include/glm/doc/api/a00161_source.html | 98 + include/glm/doc/api/a00164.html | 99 + include/glm/doc/api/a00164_source.html | 92 + include/glm/doc/api/a00167.html | 105 + include/glm/doc/api/a00167_source.html | 98 + include/glm/doc/api/a00170.html | 99 + include/glm/doc/api/a00170_source.html | 92 + include/glm/doc/api/a00173.html | 105 + include/glm/doc/api/a00173_source.html | 98 + include/glm/doc/api/a00176.html | 102 + include/glm/doc/api/a00176_source.html | 95 + include/glm/doc/api/a00179.html | 114 + include/glm/doc/api/a00179_source.html | 107 + include/glm/doc/api/a00182.html | 99 + include/glm/doc/api/a00182_source.html | 92 + include/glm/doc/api/a00185.html | 105 + include/glm/doc/api/a00185_source.html | 98 + include/glm/doc/api/a00188.html | 99 + include/glm/doc/api/a00188_source.html | 92 + include/glm/doc/api/a00191_source.html | 98 + include/glm/doc/api/a00194.html | 99 + include/glm/doc/api/a00194_source.html | 92 + include/glm/doc/api/a00197.html | 105 + include/glm/doc/api/a00197_source.html | 98 + include/glm/doc/api/a00200.html | 98 + include/glm/doc/api/a00200_source.html | 95 + include/glm/doc/api/a00203.html | 114 + include/glm/doc/api/a00203_source.html | 107 + include/glm/doc/api/a00206.html | 103 + include/glm/doc/api/a00206_source.html | 101 + include/glm/doc/api/a00209.html | 121 + include/glm/doc/api/a00209_source.html | 121 + include/glm/doc/api/a00212.html | 100 + include/glm/doc/api/a00212_source.html | 98 + include/glm/doc/api/a00215.html | 109 + include/glm/doc/api/a00215_source.html | 108 + include/glm/doc/api/a00218.html | 100 + include/glm/doc/api/a00218_source.html | 98 + include/glm/doc/api/a00221.html | 109 + include/glm/doc/api/a00221_source.html | 108 + include/glm/doc/api/a00224.html | 100 + include/glm/doc/api/a00224_source.html | 98 + include/glm/doc/api/a00227.html | 110 + include/glm/doc/api/a00227_source.html | 108 + include/glm/doc/api/a00230.html | 103 + include/glm/doc/api/a00230_source.html | 101 + include/glm/doc/api/a00233.html | 121 + include/glm/doc/api/a00233_source.html | 121 + include/glm/doc/api/a00236.html | 100 + include/glm/doc/api/a00236_source.html | 98 + include/glm/doc/api/a00239_source.html | 108 + include/glm/doc/api/a00242.html | 100 + include/glm/doc/api/a00242_source.html | 98 + include/glm/doc/api/a00245.html | 109 + include/glm/doc/api/a00245_source.html | 108 + include/glm/doc/api/a00248.html | 100 + include/glm/doc/api/a00248_source.html | 98 + include/glm/doc/api/a00251.html | 109 + include/glm/doc/api/a00251_source.html | 108 + include/glm/doc/api/a00254.html | 103 + include/glm/doc/api/a00254_source.html | 101 + include/glm/doc/api/a00257.html | 121 + include/glm/doc/api/a00257_source.html | 121 + include/glm/doc/api/a00263.html | 124 + include/glm/doc/api/a00263_source.html | 136 + include/glm/doc/api/a00266.html | 136 + include/glm/doc/api/a00266_source.html | 130 + include/glm/doc/api/a00272.html | 103 + include/glm/doc/api/a00272_source.html | 101 + include/glm/doc/api/a00275.html | 121 + include/glm/doc/api/a00275_source.html | 121 + include/glm/doc/api/a00278.html | 100 + include/glm/doc/api/a00278_source.html | 98 + include/glm/doc/api/a00281.html | 109 + include/glm/doc/api/a00281_source.html | 108 + include/glm/doc/api/a00284.html | 100 + include/glm/doc/api/a00284_source.html | 98 + include/glm/doc/api/a00287.html | 109 + include/glm/doc/api/a00287_source.html | 108 + include/glm/doc/api/a00290.html | 100 + include/glm/doc/api/a00290_source.html | 98 + include/glm/doc/api/a00293.html | 110 + include/glm/doc/api/a00293_source.html | 108 + include/glm/doc/api/a00296.html | 103 + include/glm/doc/api/a00296_source.html | 101 + include/glm/doc/api/a00299.html | 121 + include/glm/doc/api/a00299_source.html | 121 + include/glm/doc/api/a00302.html | 100 + include/glm/doc/api/a00302_source.html | 98 + include/glm/doc/api/a00305_source.html | 108 + include/glm/doc/api/a00308.html | 100 + include/glm/doc/api/a00308_source.html | 98 + include/glm/doc/api/a00311.html | 109 + include/glm/doc/api/a00311_source.html | 108 + include/glm/doc/api/a00314.html | 100 + include/glm/doc/api/a00314_source.html | 98 + include/glm/doc/api/a00317.html | 109 + include/glm/doc/api/a00317_source.html | 108 + include/glm/doc/api/a00320.html | 103 + include/glm/doc/api/a00320_source.html | 101 + include/glm/doc/api/a00323.html | 121 + include/glm/doc/api/a00323_source.html | 121 + include/glm/doc/api/a00326.html | 128 + include/glm/doc/api/a00326_source.html | 133 + include/glm/doc/api/a00329.html | 100 + include/glm/doc/api/a00329_source.html | 99 + include/glm/doc/api/a00332.html | 105 + include/glm/doc/api/a00332_source.html | 105 + include/glm/doc/api/a00335.html | 112 + include/glm/doc/api/a00335_source.html | 116 + include/glm/doc/api/a00338.html | 100 + include/glm/doc/api/a00338_source.html | 99 + include/glm/doc/api/a00341.html | 108 + include/glm/doc/api/a00341_source.html | 105 + include/glm/doc/api/a00344.html | 112 + include/glm/doc/api/a00344_source.html | 115 + include/glm/doc/api/a00347.html | 112 + include/glm/doc/api/a00347_source.html | 112 + include/glm/doc/api/a00350.html | 100 + include/glm/doc/api/a00350_source.html | 104 + include/glm/doc/api/a00353.html | 108 + include/glm/doc/api/a00353_source.html | 115 + include/glm/doc/api/a00356.html | 164 + include/glm/doc/api/a00356_source.html | 159 + include/glm/doc/api/a00359.html | 111 + include/glm/doc/api/a00359_source.html | 109 + include/glm/doc/api/a00362.html | 112 + include/glm/doc/api/a00362_source.html | 140 + include/glm/doc/api/a00365.html | 125 + include/glm/doc/api/a00365_source.html | 131 + include/glm/doc/api/a00368.html | 91 + include/glm/doc/api/a00368_source.html | 98 + include/glm/doc/api/a00371.html | 145 + include/glm/doc/api/a00371_source.html | 146 + include/glm/doc/api/a00377.html | 112 + include/glm/doc/api/a00377_source.html | 140 + include/glm/doc/api/a00380.html | 118 + include/glm/doc/api/a00380_source.html | 119 + include/glm/doc/api/a00383.html | 100 + include/glm/doc/api/a00383_source.html | 97 + include/glm/doc/api/a00386.html | 108 + include/glm/doc/api/a00386_source.html | 103 + include/glm/doc/api/a00389.html | 99 + include/glm/doc/api/a00389_source.html | 92 + include/glm/doc/api/a00392.html | 105 + include/glm/doc/api/a00392_source.html | 98 + include/glm/doc/api/a00395.html | 99 + include/glm/doc/api/a00395_source.html | 92 + include/glm/doc/api/a00398.html | 105 + include/glm/doc/api/a00398_source.html | 98 + include/glm/doc/api/a00401.html | 99 + include/glm/doc/api/a00401_source.html | 92 + include/glm/doc/api/a00404.html | 105 + include/glm/doc/api/a00404_source.html | 98 + include/glm/doc/api/a00407.html | 176 + include/glm/doc/api/a00407_source.html | 169 + include/glm/doc/api/a00410.html | 100 + include/glm/doc/api/a00410_source.html | 97 + include/glm/doc/api/a00413.html | 108 + include/glm/doc/api/a00413_source.html | 103 + include/glm/doc/api/a00416.html | 99 + include/glm/doc/api/a00416_source.html | 92 + include/glm/doc/api/a00419.html | 105 + include/glm/doc/api/a00419_source.html | 98 + include/glm/doc/api/a00422.html | 99 + include/glm/doc/api/a00422_source.html | 92 + include/glm/doc/api/a00425.html | 105 + include/glm/doc/api/a00425_source.html | 98 + include/glm/doc/api/a00428.html | 99 + include/glm/doc/api/a00428_source.html | 92 + include/glm/doc/api/a00431.html | 105 + include/glm/doc/api/a00431_source.html | 99 + include/glm/doc/api/a00434.html | 100 + include/glm/doc/api/a00434_source.html | 97 + include/glm/doc/api/a00437.html | 108 + include/glm/doc/api/a00437_source.html | 103 + include/glm/doc/api/a00440.html | 99 + include/glm/doc/api/a00440_source.html | 92 + include/glm/doc/api/a00443.html | 105 + include/glm/doc/api/a00443_source.html | 98 + include/glm/doc/api/a00446.html | 99 + include/glm/doc/api/a00446_source.html | 92 + include/glm/doc/api/a00449.html | 105 + include/glm/doc/api/a00449_source.html | 98 + include/glm/doc/api/a00452.html | 99 + include/glm/doc/api/a00452_source.html | 92 + include/glm/doc/api/a00455.html | 105 + include/glm/doc/api/a00455_source.html | 98 + include/glm/doc/api/a00458.html | 100 + include/glm/doc/api/a00458_source.html | 98 + include/glm/doc/api/a00461.html | 108 + include/glm/doc/api/a00461_source.html | 107 + include/glm/doc/api/a00464.html | 99 + include/glm/doc/api/a00464_source.html | 92 + include/glm/doc/api/a00467.html | 108 + include/glm/doc/api/a00467_source.html | 107 + include/glm/doc/api/a00470.html | 99 + include/glm/doc/api/a00470_source.html | 92 + include/glm/doc/api/a00473.html | 108 + include/glm/doc/api/a00473_source.html | 107 + include/glm/doc/api/a00476.html | 99 + include/glm/doc/api/a00476_source.html | 92 + include/glm/doc/api/a00479.html | 108 + include/glm/doc/api/a00479_source.html | 107 + include/glm/doc/api/a00482.html | 139 + include/glm/doc/api/a00482_source.html | 139 + include/glm/doc/api/a00485.html | 91 + include/glm/doc/api/a00485_source.html | 98 + include/glm/doc/api/a00488.html | 145 + include/glm/doc/api/a00488_source.html | 146 + include/glm/doc/api/a00491.html | 133 + include/glm/doc/api/a00491_source.html | 129 + include/glm/doc/api/a00494.html | 100 + include/glm/doc/api/a00494_source.html | 98 + include/glm/doc/api/a00497.html | 108 + include/glm/doc/api/a00497_source.html | 107 + include/glm/doc/api/a00500.html | 99 + include/glm/doc/api/a00500_source.html | 92 + include/glm/doc/api/a00503.html | 108 + include/glm/doc/api/a00503_source.html | 107 + include/glm/doc/api/a00506.html | 99 + include/glm/doc/api/a00506_source.html | 92 + include/glm/doc/api/a00509.html | 108 + include/glm/doc/api/a00509_source.html | 107 + include/glm/doc/api/a00512.html | 99 + include/glm/doc/api/a00512_source.html | 92 + include/glm/doc/api/a00515.html | 108 + include/glm/doc/api/a00515_source.html | 107 + include/glm/doc/api/a00518.html | 128 + include/glm/doc/api/a00518_source.html | 124 + include/glm/doc/api/a00521.html | 87 + include/glm/doc/api/a00521_source.html | 562 + include/glm/doc/api/a00524_source.html | 2090 ++++ include/glm/doc/api/a00527.html | 129 + include/glm/doc/api/a00527_source.html | 133 + include/glm/doc/api/a00530_source.html | 136 + include/glm/doc/api/a00533.html | 205 + include/glm/doc/api/a00533_source.html | 197 + include/glm/doc/api/a00539.html | 209 + include/glm/doc/api/a00539_source.html | 209 + include/glm/doc/api/a00542.html | 115 + include/glm/doc/api/a00542_source.html | 113 + include/glm/doc/api/a00545.html | 149 + include/glm/doc/api/a00545_source.html | 166 + include/glm/doc/api/a00548.html | 113 + include/glm/doc/api/a00548_source.html | 121 + include/glm/doc/api/a00551.html | 105 + include/glm/doc/api/a00551_source.html | 109 + include/glm/doc/api/a00554.html | 109 + include/glm/doc/api/a00554_source.html | 120 + include/glm/doc/api/a00557.html | 135 + include/glm/doc/api/a00557_source.html | 136 + include/glm/doc/api/a00563.html | 127 + include/glm/doc/api/a00563_source.html | 126 + include/glm/doc/api/a00566.html | 91 + include/glm/doc/api/a00566_source.html | 94 + include/glm/doc/api/a00569.html | 147 + include/glm/doc/api/a00569_source.html | 144 + include/glm/doc/api/a00575.html | 93 + include/glm/doc/api/a00575_source.html | 1625 +++ include/glm/doc/api/a00578.html | 231 + include/glm/doc/api/a00578_source.html | 228 + include/glm/doc/api/a00581.html | 151 + include/glm/doc/api/a00581_source.html | 144 + include/glm/doc/api/a00584.html | 91 + include/glm/doc/api/a00584_source.html | 100 + include/glm/doc/api/a00587.html | 187 + include/glm/doc/api/a00587_source.html | 229 + include/glm/doc/api/a00590.html | 131 + include/glm/doc/api/a00590_source.html | 133 + include/glm/doc/api/a00593.html | 106 + include/glm/doc/api/a00593_source.html | 112 + include/glm/doc/api/a00596.html | 119 + include/glm/doc/api/a00596_source.html | 118 + include/glm/doc/api/a00599.html | 113 + include/glm/doc/api/a00599_source.html | 120 + include/glm/doc/api/a00602.html | 430 + include/glm/doc/api/a00602_source.html | 262 + include/glm/doc/api/a00605.html | 131 + include/glm/doc/api/a00605_source.html | 132 + include/glm/doc/api/a00608.html | 174 + include/glm/doc/api/a00608_source.html | 296 + include/glm/doc/api/a00611.html | 226 + include/glm/doc/api/a00611_source.html | 233 + include/glm/doc/api/a00614.html | 261 + include/glm/doc/api/a00614_source.html | 359 + include/glm/doc/api/a00617.html | 101 + include/glm/doc/api/a00617_source.html | 106 + include/glm/doc/api/a00620.html | 145 + include/glm/doc/api/a00620_source.html | 180 + include/glm/doc/api/a00623.html | 103 + include/glm/doc/api/a00623_source.html | 104 + include/glm/doc/api/a00626.html | 147 + include/glm/doc/api/a00626_source.html | 140 + include/glm/doc/api/a00629.html | 137 + include/glm/doc/api/a00629_source.html | 136 + include/glm/doc/api/a00632.html | 130 + include/glm/doc/api/a00632_source.html | 131 + include/glm/doc/api/a00635.html | 107 + include/glm/doc/api/a00635_source.html | 115 + include/glm/doc/api/a00638.html | 107 + include/glm/doc/api/a00638_source.html | 115 + include/glm/doc/api/a00641.html | 105 + include/glm/doc/api/a00641_source.html | 113 + include/glm/doc/api/a00644.html | 91 + include/glm/doc/api/a00644_source.html | 226 + include/glm/doc/api/a00647.html | 123 + include/glm/doc/api/a00647_source.html | 147 + include/glm/doc/api/a00650.html | 96 + include/glm/doc/api/a00650_source.html | 270 + include/glm/doc/api/a00653.html | 90 + include/glm/doc/api/a00653_source.html | 156 + include/glm/doc/api/a00656.html | 105 + include/glm/doc/api/a00656_source.html | 111 + include/glm/doc/api/a00659.html | 107 + include/glm/doc/api/a00659_source.html | 109 + include/glm/doc/api/a00662.html | 101 + include/glm/doc/api/a00662_source.html | 119 + include/glm/doc/api/a00665.html | 113 + include/glm/doc/api/a00665_source.html | 121 + include/glm/doc/api/a00668.html | 114 + include/glm/doc/api/a00668_source.html | 119 + include/glm/doc/api/a00671.html | 147 + include/glm/doc/api/a00671_source.html | 165 + include/glm/doc/api/a00674.html | 145 + include/glm/doc/api/a00674_source.html | 154 + include/glm/doc/api/a00677.html | 131 + include/glm/doc/api/a00677_source.html | 130 + include/glm/doc/api/a00680.html | 118 + include/glm/doc/api/a00680_source.html | 131 + include/glm/doc/api/a00683.html | 102 + include/glm/doc/api/a00683_source.html | 106 + include/glm/doc/api/a00686.html | 141 + include/glm/doc/api/a00686_source.html | 136 + include/glm/doc/api/a00689.html | 103 + include/glm/doc/api/a00689_source.html | 103 + include/glm/doc/api/a00692.html | 107 + include/glm/doc/api/a00692_source.html | 107 + include/glm/doc/api/a00695.html | 117 + include/glm/doc/api/a00695_source.html | 113 + include/glm/doc/api/a00698.html | 109 + include/glm/doc/api/a00698_source.html | 111 + include/glm/doc/api/a00701.html | 107 + include/glm/doc/api/a00701_source.html | 108 + include/glm/doc/api/a00704.html | 133 + include/glm/doc/api/a00704_source.html | 132 + include/glm/doc/api/a00707.html | 103 + include/glm/doc/api/a00707_source.html | 104 + include/glm/doc/api/a00710.html | 105 + include/glm/doc/api/a00710_source.html | 109 + include/glm/doc/api/a00713.html | 101 + include/glm/doc/api/a00713_source.html | 103 + include/glm/doc/api/a00716.html | 91 + include/glm/doc/api/a00716_source.html | 164 + include/glm/doc/api/a00719.html | 109 + include/glm/doc/api/a00719_source.html | 112 + include/glm/doc/api/a00722.html | 109 + include/glm/doc/api/a00722_source.html | 116 + include/glm/doc/api/a00725.html | 143 + include/glm/doc/api/a00725_source.html | 167 + include/glm/doc/api/a00728.html | 91 + include/glm/doc/api/a00728_source.html | 154 + include/glm/doc/api/a00731.html | 109 + include/glm/doc/api/a00731_source.html | 127 + include/glm/doc/api/a00734.html | 123 + include/glm/doc/api/a00734_source.html | 124 + include/glm/doc/api/a00737.html | 105 + include/glm/doc/api/a00737_source.html | 109 + include/glm/doc/api/a00740.html | 90 + include/glm/doc/api/a00740_source.html | 163 + include/glm/doc/api/a00743.html | 101 + include/glm/doc/api/a00743_source.html | 106 + include/glm/doc/api/a00746.html | 115 + include/glm/doc/api/a00746_source.html | 117 + include/glm/doc/api/a00749.html | 136 + include/glm/doc/api/a00749_source.html | 144 + include/glm/doc/api/a00752.html | 91 + include/glm/doc/api/a00752_source.html | 150 + include/glm/doc/api/a00755.html | 91 + include/glm/doc/api/a00755_source.html | 2836 +++++ include/glm/doc/api/a00758.html | 113 + include/glm/doc/api/a00758_source.html | 113 + include/glm/doc/api/a00761.html | 121 + include/glm/doc/api/a00761_source.html | 126 + include/glm/doc/api/a00764.html | 91 + include/glm/doc/api/a00764_source.html | 102 + include/glm/doc/api/a00767.html | 90 + include/glm/doc/api/a00767_source.html | 92 + include/glm/doc/api/a00770.html | 90 + include/glm/doc/api/a00770_source.html | 92 + include/glm/doc/api/a00773.html | 90 + include/glm/doc/api/a00773_source.html | 92 + include/glm/doc/api/a00776.html | 90 + include/glm/doc/api/a00776_source.html | 92 + include/glm/doc/api/a00779.html | 90 + include/glm/doc/api/a00779_source.html | 91 + include/glm/doc/api/a00782.html | 90 + include/glm/doc/api/a00782_source.html | 91 + include/glm/doc/api/a00785.html | 90 + include/glm/doc/api/a00785_source.html | 91 + include/glm/doc/api/a00788.html | 90 + include/glm/doc/api/a00788_source.html | 91 + include/glm/doc/api/a00791.html | 90 + include/glm/doc/api/a00791_source.html | 92 + include/glm/doc/api/a00794.html | 117 + include/glm/doc/api/a00794_source.html | 197 + include/glm/doc/api/a00797.html | 157 + include/glm/doc/api/a00797_source.html | 153 + include/glm/doc/api/a00800.html | 90 + include/glm/doc/api/a00800_source.html | 103 + include/glm/doc/api/a00803.html | 90 + include/glm/doc/api/a00803_source.html | 103 + include/glm/doc/api/a00806.html | 90 + include/glm/doc/api/a00806_source.html | 104 + include/glm/doc/api/a00809_source.html | 2619 +++++ include/glm/doc/api/a00812.html | 1661 +++ include/glm/doc/api/a00813.html | 375 + include/glm/doc/api/a00814.html | 3008 +++++ include/glm/doc/api/a00815.html | 81 + include/glm/doc/api/a00816.html | 135 + include/glm/doc/api/a00817.html | 263 + include/glm/doc/api/a00818.html | 111 + include/glm/doc/api/a00819.html | 175 + include/glm/doc/api/a00820.html | 111 + include/glm/doc/api/a00821.html | 175 + include/glm/doc/api/a00822.html | 111 + include/glm/doc/api/a00823.html | 175 + include/glm/doc/api/a00824.html | 135 + include/glm/doc/api/a00825.html | 263 + include/glm/doc/api/a00826.html | 111 + include/glm/doc/api/a00827.html | 175 + include/glm/doc/api/a00828.html | 111 + include/glm/doc/api/a00829.html | 175 + include/glm/doc/api/a00830.html | 111 + include/glm/doc/api/a00831.html | 175 + include/glm/doc/api/a00832.html | 135 + include/glm/doc/api/a00833.html | 263 + include/glm/doc/api/a00834.html | 303 + include/glm/doc/api/a00835.html | 537 + include/glm/doc/api/a00836.html | 580 + include/glm/doc/api/a00837.html | 525 + include/glm/doc/api/a00838.html | 135 + include/glm/doc/api/a00839.html | 263 + include/glm/doc/api/a00840.html | 111 + include/glm/doc/api/a00841.html | 175 + include/glm/doc/api/a00842.html | 111 + include/glm/doc/api/a00843.html | 175 + include/glm/doc/api/a00844.html | 111 + include/glm/doc/api/a00845.html | 175 + include/glm/doc/api/a00846.html | 135 + include/glm/doc/api/a00847.html | 263 + include/glm/doc/api/a00848.html | 112 + include/glm/doc/api/a00849.html | 175 + include/glm/doc/api/a00850.html | 111 + include/glm/doc/api/a00851.html | 175 + include/glm/doc/api/a00852.html | 111 + include/glm/doc/api/a00853.html | 175 + include/glm/doc/api/a00854.html | 135 + include/glm/doc/api/a00855.html | 263 + include/glm/doc/api/a00856.html | 464 + include/glm/doc/api/a00857.html | 105 + include/glm/doc/api/a00858.html | 153 + include/glm/doc/api/a00859.html | 84 + include/glm/doc/api/a00860.html | 105 + include/glm/doc/api/a00861.html | 98 + include/glm/doc/api/a00862.html | 240 + include/glm/doc/api/a00863.html | 272 + include/glm/doc/api/a00864.html | 287 + include/glm/doc/api/a00865.html | 214 + include/glm/doc/api/a00866.html | 842 ++ include/glm/doc/api/a00867.html | 101 + include/glm/doc/api/a00868.html | 103 + include/glm/doc/api/a00869.html | 334 + include/glm/doc/api/a00870.html | 79 + include/glm/doc/api/a00871.html | 561 + include/glm/doc/api/a00872.html | 296 + include/glm/doc/api/a00873.html | 103 + include/glm/doc/api/a00874.html | 302 + include/glm/doc/api/a00875.html | 91 + include/glm/doc/api/a00876.html | 98 + include/glm/doc/api/a00877.html | 994 ++ include/glm/doc/api/a00878.html | 93 + include/glm/doc/api/a00879.html | 99 + include/glm/doc/api/a00880.html | 93 + include/glm/doc/api/a00881.html | 99 + include/glm/doc/api/a00882.html | 93 + include/glm/doc/api/a00883.html | 178 + include/glm/doc/api/a00884.html | 178 + include/glm/doc/api/a00885.html | 178 + include/glm/doc/api/a00886.html | 178 + include/glm/doc/api/a00887.html | 514 + include/glm/doc/api/a00888.html | 79 + include/glm/doc/api/a00889.html | 79 + include/glm/doc/api/a00890.html | 484 + include/glm/doc/api/a00891.html | 93 + include/glm/doc/api/a00892.html | 178 + include/glm/doc/api/a00893.html | 178 + include/glm/doc/api/a00894.html | 178 + include/glm/doc/api/a00895.html | 178 + include/glm/doc/api/a00896.html | 414 + include/glm/doc/api/a00897.html | 431 + include/glm/doc/api/a00898.html | 119 + include/glm/doc/api/a00899.html | 419 + include/glm/doc/api/a00900.html | 746 ++ include/glm/doc/api/a00901.html | 617 ++ include/glm/doc/api/a00902.html | 1820 ++++ include/glm/doc/api/a00903.html | 256 + include/glm/doc/api/a00904.html | 131 + include/glm/doc/api/a00905.html | 226 + include/glm/doc/api/a00906.html | 1276 +++ include/glm/doc/api/a00907.html | 177 + include/glm/doc/api/a00908.html | 759 ++ include/glm/doc/api/a00909.html | 255 + include/glm/doc/api/a00910.html | 82 + include/glm/doc/api/a00911.html | 239 + include/glm/doc/api/a00912.html | 1671 +++ include/glm/doc/api/a00913.html | 161 + include/glm/doc/api/a00914.html | 80 + include/glm/doc/api/a00915.html | 172 + include/glm/doc/api/a00916.html | 2158 ++++ include/glm/doc/api/a00917.html | 633 ++ include/glm/doc/api/a00918.html | 318 + include/glm/doc/api/a00919.html | 79 + include/glm/doc/api/a00920.html | 555 + include/glm/doc/api/a00921.html | 1558 +++ include/glm/doc/api/a00922.html | 9643 +++++++++++++++++ include/glm/doc/api/a00923.html | 927 ++ include/glm/doc/api/a00924.html | 621 ++ include/glm/doc/api/a00925.html | 79 + include/glm/doc/api/a00926.html | 1388 +++ include/glm/doc/api/a00927.html | 324 + include/glm/doc/api/a00928.html | 133 + include/glm/doc/api/a00929.html | 109 + include/glm/doc/api/a00930.html | 257 + include/glm/doc/api/a00931.html | 191 + include/glm/doc/api/a00932.html | 252 + include/glm/doc/api/a00933.html | 419 + include/glm/doc/api/a00934.html | 287 + include/glm/doc/api/a00935.html | 571 + include/glm/doc/api/a00936.html | 942 ++ include/glm/doc/api/a00937.html | 1675 +++ include/glm/doc/api/a00938.html | 128 + include/glm/doc/api/a00939.html | 615 ++ include/glm/doc/api/a00940.html | 132 + include/glm/doc/api/a00941.html | 417 + include/glm/doc/api/a00942.html | 359 + include/glm/doc/api/a00943.html | 277 + include/glm/doc/api/a00944.html | 169 + include/glm/doc/api/a00945.html | 175 + include/glm/doc/api/a00946.html | 169 + include/glm/doc/api/a00947.html | 79 + include/glm/doc/api/a00948.html | 351 + include/glm/doc/api/a00949.html | 447 + include/glm/doc/api/a00950.html | 81 + include/glm/doc/api/a00951.html | 80 + include/glm/doc/api/a00952.html | 157 + include/glm/doc/api/a00953.html | 137 + include/glm/doc/api/a00954.html | 146 + include/glm/doc/api/a00955.html | 221 + include/glm/doc/api/a00956.html | 229 + include/glm/doc/api/a00957.html | 483 + include/glm/doc/api/a00958.html | 387 + include/glm/doc/api/a00959.html | 367 + include/glm/doc/api/a00960.html | 292 + include/glm/doc/api/a00961.html | 91 + include/glm/doc/api/a00962.html | 403 + include/glm/doc/api/a00963.html | 128 + include/glm/doc/api/a00964.html | 159 + include/glm/doc/api/a00965.html | 102 + include/glm/doc/api/a00966.html | 162 + include/glm/doc/api/a00967.html | 147 + include/glm/doc/api/a00968.html | 363 + include/glm/doc/api/a00969.html | 122 + include/glm/doc/api/a00970.html | 137 + include/glm/doc/api/a00971.html | 129 + include/glm/doc/api/a00972.html | 638 ++ include/glm/doc/api/a00973.html | 80 + include/glm/doc/api/a00974.html | 175 + include/glm/doc/api/a00975.html | 197 + include/glm/doc/api/a00976.html | 498 + include/glm/doc/api/a00977.html | 81 + include/glm/doc/api/a00978.html | 79 + include/glm/doc/api/a00979.html | 246 + include/glm/doc/api/a00980.html | 263 + include/glm/doc/api/a00981.html | 112 + include/glm/doc/api/a00982.html | 79 + include/glm/doc/api/a00983.html | 125 + include/glm/doc/api/a00984.html | 178 + include/glm/doc/api/a00985.html | 390 + include/glm/doc/api/a00986.html | 8341 ++++++++++++++ include/glm/doc/api/a00987.html | 80 + include/glm/doc/api/a00988.html | 80 + include/glm/doc/api/a00989.html | 198 + include/glm/doc/api/a00990.html | 315 + include/glm/doc/api/a00991.html | 79 + include/glm/doc/api/a00992.html | 649 ++ include/glm/doc/api/a00993.html | 123 + include/glm/doc/api/a00994.html | 428 + include/glm/doc/api/a00995.html | 634 ++ include/glm/doc/api/a00996.html | 453 + include/glm/doc/api/a01681.html | 116 + include/glm/doc/api/a01681_source.html | 117 + include/glm/doc/api/a01684.html | 121 + include/glm/doc/api/a01684_source.html | 129 + include/glm/doc/api/a01687.html | 113 + include/glm/doc/api/a01687_source.html | 118 + include/glm/doc/api/a01690.html | 103 + include/glm/doc/api/a01690_source.html | 108 + include/glm/doc/api/a01693.html | 133 + include/glm/doc/api/a01693_source.html | 128 + include/glm/doc/api/a01696.html | 112 + include/glm/doc/api/a01696_source.html | 116 + include/glm/doc/api/a01699.html | 151 + include/glm/doc/api/a01699_source.html | 404 + include/glm/doc/api/a01702.html | 129 + include/glm/doc/api/a01702_source.html | 141 + include/glm/doc/api/a01705.html | 95 + include/glm/doc/api/a01705_source.html | 98 + include/glm/doc/api/a01708.html | 315 + include/glm/doc/api/a01708_source.html | 342 + include/glm/doc/api/a01711.html | 159 + include/glm/doc/api/a01711_source.html | 176 + include/glm/doc/api/a01714.html | 163 + include/glm/doc/api/a01714_source.html | 200 + include/glm/doc/api/a01717.html | 112 + include/glm/doc/api/a01717_source.html | 112 + include/glm/doc/api/a01720.html | 91 + include/glm/doc/api/a01720_source.html | 101 + include/glm/doc/api/a01723.html | 1569 +++ include/glm/doc/api/a01723_source.html | 1445 +++ include/glm/doc/api/a01726.html | 717 ++ include/glm/doc/api/a01726_source.html | 829 ++ include/glm/doc/api/a01729.html | 131 + include/glm/doc/api/a01729_source.html | 124 + include/glm/doc/api/bc_s.png | Bin 0 -> 600 bytes include/glm/doc/api/bdwn.png | Bin 0 -> 200 bytes include/glm/doc/api/closed.png | Bin 0 -> 194 bytes .../dir_382f4fd018b81be8753cb53c0a41a09a.html | 127 + .../dir_50f12b6ceb23d7f6adfb377a1ae8b006.html | 85 + .../dir_628fd60eb37daf5aa9a81e3983c640b7.html | 283 + .../dir_63ed049134a778d525e06b63afc2c979.html | 81 + .../dir_885cc87fac2d91e269af0a5a959fa5f6.html | 81 + .../dir_b11711034def6a4ce452fe9c451dd3d0.html | 81 + .../dir_b171cecbb853a9ee4caace490047c53f.html | 505 + .../dir_c98a9ac98258ab9f831b188d66361a70.html | 81 + .../dir_d9678a6a9012da969e0b059b39347945.html | 145 + .../dir_fca33f1b5115d46f42c670590789c0d2.html | 150 + include/glm/doc/api/doc.png | Bin 0 -> 624 bytes include/glm/doc/api/doxygen.css | 1496 +++ include/glm/doc/api/doxygen.png | Bin 0 -> 2419 bytes include/glm/doc/api/dynsections.js | 128 + include/glm/doc/api/files.html | 362 + include/glm/doc/api/folderclosed.png | Bin 0 -> 573 bytes include/glm/doc/api/folderopen.png | Bin 0 -> 596 bytes include/glm/doc/api/index.html | 83 + include/glm/doc/api/jquery.js | 35 + include/glm/doc/api/logo-mini.png | Bin 0 -> 11967 bytes include/glm/doc/api/menu.js | 51 + include/glm/doc/api/menudata.js | 29 + include/glm/doc/api/modules.html | 266 + include/glm/doc/api/nav_f.png | Bin 0 -> 233 bytes include/glm/doc/api/nav_g.png | Bin 0 -> 95 bytes include/glm/doc/api/nav_h.png | Bin 0 -> 188 bytes include/glm/doc/api/open.png | Bin 0 -> 177 bytes include/glm/doc/api/search/all_0.html | 36 + include/glm/doc/api/search/all_0.js | 217 + include/glm/doc/api/search/all_1.html | 36 + include/glm/doc/api/search/all_1.js | 41 + include/glm/doc/api/search/all_10.html | 36 + include/glm/doc/api/search/all_10.js | 55 + include/glm/doc/api/search/all_11.html | 36 + include/glm/doc/api/search/all_11.js | 42 + include/glm/doc/api/search/all_12.html | 36 + include/glm/doc/api/search/all_12.js | 145 + include/glm/doc/api/search/all_13.html | 36 + include/glm/doc/api/search/all_13.js | 64 + include/glm/doc/api/search/all_14.html | 36 + include/glm/doc/api/search/all_14.js | 6 + include/glm/doc/api/search/all_15.html | 36 + include/glm/doc/api/search/all_15.js | 7 + include/glm/doc/api/search/all_16.html | 36 + include/glm/doc/api/search/all_16.js | 4 + include/glm/doc/api/search/all_2.html | 36 + include/glm/doc/api/search/all_2.js | 53 + include/glm/doc/api/search/all_3.html | 36 + include/glm/doc/api/search/all_3.js | 59 + include/glm/doc/api/search/all_4.html | 36 + include/glm/doc/api/search/all_4.js | 69 + include/glm/doc/api/search/all_5.html | 36 + include/glm/doc/api/search/all_5.js | 136 + include/glm/doc/api/search/all_6.html | 36 + include/glm/doc/api/search/all_6.js | 190 + include/glm/doc/api/search/all_7.html | 36 + include/glm/doc/api/search/all_7.js | 194 + include/glm/doc/api/search/all_8.html | 36 + include/glm/doc/api/search/all_8.js | 146 + include/glm/doc/api/search/all_9.html | 36 + include/glm/doc/api/search/all_9.js | 214 + include/glm/doc/api/search/all_a.html | 36 + include/glm/doc/api/search/all_a.js | 330 + include/glm/doc/api/search/all_b.html | 36 + include/glm/doc/api/search/all_b.js | 17 + include/glm/doc/api/search/all_c.html | 36 + include/glm/doc/api/search/all_c.js | 27 + include/glm/doc/api/search/all_d.html | 36 + include/glm/doc/api/search/all_d.js | 274 + include/glm/doc/api/search/all_e.html | 36 + include/glm/doc/api/search/all_e.js | 31 + include/glm/doc/api/search/all_f.html | 36 + include/glm/doc/api/search/all_f.js | 43 + include/glm/doc/api/search/close.png | Bin 0 -> 273 bytes include/glm/doc/api/search/files_0.html | 36 + include/glm/doc/api/search/files_0.js | 4 + include/glm/doc/api/search/files_1.html | 36 + include/glm/doc/api/search/files_1.js | 5 + include/glm/doc/api/search/files_10.html | 36 + include/glm/doc/api/search/files_10.js | 16 + include/glm/doc/api/search/files_11.html | 36 + include/glm/doc/api/search/files_11.js | 24 + include/glm/doc/api/search/files_12.html | 36 + include/glm/doc/api/search/files_12.js | 4 + include/glm/doc/api/search/files_13.html | 36 + include/glm/doc/api/search/files_13.js | 56 + include/glm/doc/api/search/files_14.html | 36 + include/glm/doc/api/search/files_14.js | 4 + include/glm/doc/api/search/files_2.html | 36 + include/glm/doc/api/search/files_2.js | 10 + include/glm/doc/api/search/files_3.html | 36 + include/glm/doc/api/search/files_3.js | 4 + include/glm/doc/api/search/files_4.html | 36 + include/glm/doc/api/search/files_4.js | 15 + include/glm/doc/api/search/files_5.html | 36 + include/glm/doc/api/search/files_5.js | 7 + include/glm/doc/api/search/files_6.html | 36 + include/glm/doc/api/search/files_6.js | 14 + include/glm/doc/api/search/files_7.html | 36 + include/glm/doc/api/search/files_7.js | 5 + include/glm/doc/api/search/files_8.html | 36 + include/glm/doc/api/search/files_8.js | 7 + include/glm/doc/api/search/files_9.html | 36 + include/glm/doc/api/search/files_9.js | 4 + include/glm/doc/api/search/files_a.html | 36 + include/glm/doc/api/search/files_a.js | 97 + include/glm/doc/api/search/files_b.html | 36 + include/glm/doc/api/search/files_b.js | 8 + include/glm/doc/api/search/files_c.html | 36 + include/glm/doc/api/search/files_c.js | 5 + include/glm/doc/api/search/files_d.html | 36 + include/glm/doc/api/search/files_d.js | 8 + include/glm/doc/api/search/files_e.html | 36 + include/glm/doc/api/search/files_e.js | 13 + include/glm/doc/api/search/files_f.html | 36 + include/glm/doc/api/search/files_f.js | 10 + include/glm/doc/api/search/functions_0.html | 36 + include/glm/doc/api/search/functions_0.js | 31 + include/glm/doc/api/search/functions_1.html | 36 + include/glm/doc/api/search/functions_1.js | 20 + include/glm/doc/api/search/functions_10.html | 36 + include/glm/doc/api/search/functions_10.js | 32 + include/glm/doc/api/search/functions_11.html | 36 + include/glm/doc/api/search/functions_11.js | 21 + include/glm/doc/api/search/functions_12.html | 36 + include/glm/doc/api/search/functions_12.js | 52 + include/glm/doc/api/search/functions_13.html | 36 + include/glm/doc/api/search/functions_13.js | 4 + include/glm/doc/api/search/functions_14.html | 36 + include/glm/doc/api/search/functions_14.js | 4 + include/glm/doc/api/search/functions_15.html | 36 + include/glm/doc/api/search/functions_15.js | 7 + include/glm/doc/api/search/functions_16.html | 36 + include/glm/doc/api/search/functions_16.js | 4 + include/glm/doc/api/search/functions_2.html | 36 + include/glm/doc/api/search/functions_2.js | 44 + include/glm/doc/api/search/functions_3.html | 36 + include/glm/doc/api/search/functions_3.js | 24 + include/glm/doc/api/search/functions_4.html | 36 + include/glm/doc/api/search/functions_4.js | 55 + include/glm/doc/api/search/functions_5.html | 36 + include/glm/doc/api/search/functions_5.js | 56 + include/glm/doc/api/search/functions_6.html | 36 + include/glm/doc/api/search/functions_6.js | 9 + include/glm/doc/api/search/functions_7.html | 36 + include/glm/doc/api/search/functions_7.js | 7 + include/glm/doc/api/search/functions_8.html | 36 + include/glm/doc/api/search/functions_8.js | 35 + include/glm/doc/api/search/functions_9.html | 36 + include/glm/doc/api/search/functions_9.js | 28 + include/glm/doc/api/search/functions_a.html | 36 + include/glm/doc/api/search/functions_a.js | 36 + include/glm/doc/api/search/functions_b.html | 36 + include/glm/doc/api/search/functions_b.js | 12 + include/glm/doc/api/search/functions_c.html | 36 + include/glm/doc/api/search/functions_c.js | 24 + include/glm/doc/api/search/functions_d.html | 36 + include/glm/doc/api/search/functions_d.js | 85 + include/glm/doc/api/search/functions_e.html | 36 + include/glm/doc/api/search/functions_e.js | 19 + include/glm/doc/api/search/functions_f.html | 36 + include/glm/doc/api/search/functions_f.js | 35 + include/glm/doc/api/search/groups_0.html | 36 + include/glm/doc/api/search/groups_0.js | 4 + include/glm/doc/api/search/groups_1.html | 36 + include/glm/doc/api/search/groups_1.js | 5 + include/glm/doc/api/search/groups_2.html | 36 + include/glm/doc/api/search/groups_2.js | 5 + include/glm/doc/api/search/groups_3.html | 36 + include/glm/doc/api/search/groups_3.js | 4 + include/glm/doc/api/search/groups_4.html | 36 + include/glm/doc/api/search/groups_4.js | 173 + include/glm/doc/api/search/groups_5.html | 36 + include/glm/doc/api/search/groups_5.js | 4 + include/glm/doc/api/search/groups_6.html | 36 + include/glm/doc/api/search/groups_6.js | 6 + include/glm/doc/api/search/groups_7.html | 36 + include/glm/doc/api/search/groups_7.js | 4 + include/glm/doc/api/search/groups_8.html | 36 + include/glm/doc/api/search/groups_8.js | 4 + include/glm/doc/api/search/groups_9.html | 36 + include/glm/doc/api/search/groups_9.js | 6 + include/glm/doc/api/search/mag_sel.png | Bin 0 -> 465 bytes include/glm/doc/api/search/nomatches.html | 12 + include/glm/doc/api/search/pages_0.html | 36 + include/glm/doc/api/search/pages_0.js | 4 + include/glm/doc/api/search/search.css | 271 + include/glm/doc/api/search/search.js | 814 ++ include/glm/doc/api/search/search_l.png | Bin 0 -> 567 bytes include/glm/doc/api/search/search_m.png | Bin 0 -> 158 bytes include/glm/doc/api/search/search_r.png | Bin 0 -> 553 bytes include/glm/doc/api/search/searchdata.js | 30 + include/glm/doc/api/search/typedefs_0.html | 36 + include/glm/doc/api/search/typedefs_0.js | 187 + include/glm/doc/api/search/typedefs_1.html | 36 + include/glm/doc/api/search/typedefs_1.js | 22 + include/glm/doc/api/search/typedefs_2.html | 36 + include/glm/doc/api/search/typedefs_2.js | 37 + include/glm/doc/api/search/typedefs_3.html | 36 + include/glm/doc/api/search/typedefs_3.js | 78 + include/glm/doc/api/search/typedefs_4.html | 36 + include/glm/doc/api/search/typedefs_4.js | 188 + include/glm/doc/api/search/typedefs_5.html | 36 + include/glm/doc/api/search/typedefs_5.js | 109 + include/glm/doc/api/search/typedefs_6.html | 36 + include/glm/doc/api/search/typedefs_6.js | 188 + include/glm/doc/api/search/typedefs_7.html | 36 + include/glm/doc/api/search/typedefs_7.js | 200 + include/glm/doc/api/search/typedefs_8.html | 36 + include/glm/doc/api/search/typedefs_8.js | 187 + include/glm/doc/api/search/typedefs_9.html | 36 + include/glm/doc/api/search/typedefs_9.js | 5 + include/glm/doc/api/search/typedefs_a.html | 36 + include/glm/doc/api/search/typedefs_a.js | 12 + include/glm/doc/api/search/typedefs_b.html | 36 + include/glm/doc/api/search/typedefs_b.js | 95 + include/glm/doc/api/search/typedefs_c.html | 36 + include/glm/doc/api/search/typedefs_c.js | 7 + include/glm/doc/api/search/typedefs_d.html | 36 + include/glm/doc/api/search/typedefs_d.js | 4 + include/glm/doc/api/splitbar.png | Bin 0 -> 262 bytes include/glm/doc/api/sync_off.png | Bin 0 -> 717 bytes include/glm/doc/api/sync_on.png | Bin 0 -> 712 bytes include/glm/doc/api/tab_a.png | Bin 0 -> 217 bytes include/glm/doc/api/tab_b.png | Bin 0 -> 253 bytes include/glm/doc/api/tab_h.png | Bin 0 -> 255 bytes include/glm/doc/api/tab_s.png | Bin 0 -> 260 bytes include/glm/doc/api/tabs.css | 1 + include/glm/doc/man.doxy | 2538 +++++ include/glm/doc/manual.pdf | Bin 0 -> 1466032 bytes include/glm/doc/manual/frontpage1.png | Bin 0 -> 731902 bytes include/glm/doc/manual/frontpage2.png | Bin 0 -> 233177 bytes include/glm/doc/manual/g-truc.png | Bin 0 -> 13441 bytes include/glm/doc/manual/logo-mini.png | Bin 0 -> 12008 bytes include/glm/doc/manual/logo.png | Bin 0 -> 41859 bytes include/glm/doc/manual/noise-perlin1.jpg | Bin 0 -> 8464 bytes include/glm/doc/manual/noise-perlin2.jpg | Bin 0 -> 7755 bytes include/glm/doc/manual/noise-perlin3.jpg | Bin 0 -> 7143 bytes include/glm/doc/manual/noise-perlin4.png | Bin 0 -> 1253 bytes include/glm/doc/manual/noise-perlin5.png | Bin 0 -> 1025 bytes include/glm/doc/manual/noise-perlin6.png | Bin 0 -> 1092 bytes include/glm/doc/manual/noise-simplex1.jpg | Bin 0 -> 10985 bytes include/glm/doc/manual/noise-simplex2.jpg | Bin 0 -> 9494 bytes include/glm/doc/manual/noise-simplex3.jpg | Bin 0 -> 9873 bytes include/glm/doc/manual/random-ballrand.png | Bin 0 -> 3431 bytes .../glm/doc/manual/random-circularrand.png | Bin 0 -> 503 bytes include/glm/doc/manual/random-diskrand.png | Bin 0 -> 3113 bytes include/glm/doc/manual/random-gaussrand.png | Bin 0 -> 3137 bytes include/glm/doc/manual/random-linearrand.png | Bin 0 -> 3108 bytes .../glm/doc/manual/random-sphericalrand.png | Bin 0 -> 3703 bytes include/glm/doc/manual/references-cinder.png | Bin 0 -> 77425 bytes .../glm/doc/manual/references-glsl4book.jpg | Bin 0 -> 9668 bytes .../doc/manual/references-leosfortune.jpeg | Bin 0 -> 13608 bytes .../doc/manual/references-leosfortune2.jpg | Bin 0 -> 13183 bytes .../glm/doc/manual/references-opencloth1.png | Bin 0 -> 12531 bytes .../glm/doc/manual/references-opencloth3.png | Bin 0 -> 21325 bytes .../glm/doc/manual/references-outerra1.jpg | Bin 0 -> 5355 bytes .../glm/doc/manual/references-outerra2.jpg | Bin 0 -> 4827 bytes .../glm/doc/manual/references-outerra3.jpg | Bin 0 -> 3906 bytes .../glm/doc/manual/references-outerra4.jpg | Bin 0 -> 5427 bytes include/glm/doc/theme/bc_s.png | Bin 0 -> 600 bytes include/glm/doc/theme/bdwn.png | Bin 0 -> 200 bytes include/glm/doc/theme/closed.png | Bin 0 -> 194 bytes include/glm/doc/theme/doc.png | Bin 0 -> 624 bytes include/glm/doc/theme/doxygen.css | 1496 +++ include/glm/doc/theme/doxygen.png | Bin 0 -> 2419 bytes include/glm/doc/theme/folderclosed.png | Bin 0 -> 573 bytes include/glm/doc/theme/folderopen.png | Bin 0 -> 596 bytes include/glm/doc/theme/logo-mini.png | Bin 0 -> 11967 bytes include/glm/doc/theme/nav_f.png | Bin 0 -> 233 bytes include/glm/doc/theme/nav_g.png | Bin 0 -> 95 bytes include/glm/doc/theme/nav_h.png | Bin 0 -> 188 bytes include/glm/doc/theme/open.png | Bin 0 -> 177 bytes include/glm/doc/theme/splitbar.png | Bin 0 -> 262 bytes include/glm/doc/theme/sync_off.png | Bin 0 -> 717 bytes include/glm/doc/theme/sync_on.png | Bin 0 -> 712 bytes include/glm/doc/theme/tab_a.png | Bin 0 -> 217 bytes include/glm/doc/theme/tab_b.png | Bin 0 -> 253 bytes include/glm/doc/theme/tab_h.png | Bin 0 -> 255 bytes include/glm/doc/theme/tab_s.png | Bin 0 -> 260 bytes include/glm/glm/CMakeLists.txt | 69 + include/glm/glm/common.hpp | 539 + include/glm/glm/detail/_features.hpp | 394 + include/glm/glm/detail/_fixes.hpp | 27 + include/glm/glm/detail/_noise.hpp | 81 + include/glm/glm/detail/_swizzle.hpp | 809 ++ include/glm/glm/detail/_swizzle_func.hpp | 682 ++ include/glm/glm/detail/_vectorize.hpp | 230 + include/glm/glm/detail/compute_common.hpp | 50 + .../glm/glm/detail/compute_vector_decl.hpp | 190 + .../glm/detail/compute_vector_relational.hpp | 30 + include/glm/glm/detail/func_common.inl | 936 ++ include/glm/glm/detail/func_common_simd.inl | 615 ++ include/glm/glm/detail/func_exponential.inl | 152 + .../glm/glm/detail/func_exponential_simd.inl | 37 + include/glm/glm/detail/func_geometric.inl | 259 + .../glm/glm/detail/func_geometric_simd.inl | 181 + include/glm/glm/detail/func_integer.inl | 392 + include/glm/glm/detail/func_integer_simd.inl | 65 + include/glm/glm/detail/func_matrix.inl | 484 + include/glm/glm/detail/func_matrix_simd.inl | 263 + include/glm/glm/detail/func_packing.inl | 189 + include/glm/glm/detail/func_packing_simd.inl | 6 + include/glm/glm/detail/func_trigonometric.inl | 197 + .../glm/detail/func_trigonometric_simd.inl | 0 .../glm/glm/detail/func_vector_relational.inl | 87 + .../detail/func_vector_relational_simd.inl | 6 + include/glm/glm/detail/glm.cpp | 263 + include/glm/glm/detail/qualifier.hpp | 295 + include/glm/glm/detail/setup.hpp | 1188 ++ include/glm/glm/detail/type_float.hpp | 68 + include/glm/glm/detail/type_half.hpp | 16 + include/glm/glm/detail/type_half.inl | 241 + include/glm/glm/detail/type_mat2x2.hpp | 177 + include/glm/glm/detail/type_mat2x2.inl | 536 + include/glm/glm/detail/type_mat2x3.hpp | 159 + include/glm/glm/detail/type_mat2x3.inl | 495 + include/glm/glm/detail/type_mat2x4.hpp | 161 + include/glm/glm/detail/type_mat2x4.inl | 501 + include/glm/glm/detail/type_mat3x2.hpp | 167 + include/glm/glm/detail/type_mat3x2.inl | 517 + include/glm/glm/detail/type_mat3x3.hpp | 184 + include/glm/glm/detail/type_mat3x3.inl | 631 ++ include/glm/glm/detail/type_mat3x4.hpp | 166 + include/glm/glm/detail/type_mat3x4.inl | 551 + include/glm/glm/detail/type_mat4x2.hpp | 171 + include/glm/glm/detail/type_mat4x2.inl | 555 + include/glm/glm/detail/type_mat4x3.hpp | 171 + include/glm/glm/detail/type_mat4x3.inl | 571 + include/glm/glm/detail/type_mat4x4.hpp | 189 + include/glm/glm/detail/type_mat4x4.inl | 765 ++ include/glm/glm/detail/type_mat4x4_simd.inl | 6 + include/glm/glm/detail/type_quat.hpp | 193 + include/glm/glm/detail/type_quat.inl | 424 + include/glm/glm/detail/type_quat_simd.inl | 208 + include/glm/glm/detail/type_vec1.hpp | 308 + include/glm/glm/detail/type_vec1.inl | 553 + include/glm/glm/detail/type_vec2.hpp | 406 + include/glm/glm/detail/type_vec2.inl | 915 ++ include/glm/glm/detail/type_vec3.hpp | 447 + include/glm/glm/detail/type_vec3.inl | 985 ++ include/glm/glm/detail/type_vec4.hpp | 514 + include/glm/glm/detail/type_vec4.inl | 1130 ++ include/glm/glm/detail/type_vec_simd.inl | 1032 ++ include/glm/glm/exponential.hpp | 110 + include/glm/glm/ext.hpp | 267 + include/glm/glm/ext/_matrix_vectorize.hpp | 128 + include/glm/glm/ext/matrix_clip_space.hpp | 576 + include/glm/glm/ext/matrix_clip_space.inl | 615 ++ include/glm/glm/ext/matrix_common.hpp | 39 + include/glm/glm/ext/matrix_common.inl | 34 + include/glm/glm/ext/matrix_double2x2.hpp | 23 + .../glm/ext/matrix_double2x2_precision.hpp | 49 + include/glm/glm/ext/matrix_double2x3.hpp | 18 + .../glm/ext/matrix_double2x3_precision.hpp | 31 + include/glm/glm/ext/matrix_double2x4.hpp | 18 + .../glm/ext/matrix_double2x4_precision.hpp | 31 + include/glm/glm/ext/matrix_double3x2.hpp | 18 + .../glm/ext/matrix_double3x2_precision.hpp | 31 + include/glm/glm/ext/matrix_double3x3.hpp | 23 + .../glm/ext/matrix_double3x3_precision.hpp | 49 + include/glm/glm/ext/matrix_double3x4.hpp | 18 + .../glm/ext/matrix_double3x4_precision.hpp | 31 + include/glm/glm/ext/matrix_double4x2.hpp | 18 + .../glm/ext/matrix_double4x2_precision.hpp | 31 + include/glm/glm/ext/matrix_double4x3.hpp | 18 + .../glm/ext/matrix_double4x3_precision.hpp | 31 + include/glm/glm/ext/matrix_double4x4.hpp | 23 + .../glm/ext/matrix_double4x4_precision.hpp | 49 + include/glm/glm/ext/matrix_float2x2.hpp | 23 + .../glm/glm/ext/matrix_float2x2_precision.hpp | 49 + include/glm/glm/ext/matrix_float2x3.hpp | 18 + .../glm/glm/ext/matrix_float2x3_precision.hpp | 31 + include/glm/glm/ext/matrix_float2x4.hpp | 18 + .../glm/glm/ext/matrix_float2x4_precision.hpp | 31 + include/glm/glm/ext/matrix_float3x2.hpp | 18 + .../glm/glm/ext/matrix_float3x2_precision.hpp | 31 + include/glm/glm/ext/matrix_float3x3.hpp | 23 + .../glm/glm/ext/matrix_float3x3_precision.hpp | 49 + include/glm/glm/ext/matrix_float3x4.hpp | 18 + .../glm/glm/ext/matrix_float3x4_precision.hpp | 31 + include/glm/glm/ext/matrix_float4x2.hpp | 18 + .../glm/glm/ext/matrix_float4x2_precision.hpp | 31 + include/glm/glm/ext/matrix_float4x3.hpp | 18 + .../glm/glm/ext/matrix_float4x3_precision.hpp | 31 + include/glm/glm/ext/matrix_float4x4.hpp | 23 + .../glm/glm/ext/matrix_float4x4_precision.hpp | 49 + include/glm/glm/ext/matrix_int2x2.hpp | 38 + include/glm/glm/ext/matrix_int2x2_sized.hpp | 70 + include/glm/glm/ext/matrix_int2x3.hpp | 33 + include/glm/glm/ext/matrix_int2x3_sized.hpp | 49 + include/glm/glm/ext/matrix_int2x4.hpp | 33 + include/glm/glm/ext/matrix_int2x4_sized.hpp | 49 + include/glm/glm/ext/matrix_int3x2.hpp | 33 + include/glm/glm/ext/matrix_int3x2_sized.hpp | 49 + include/glm/glm/ext/matrix_int3x3.hpp | 38 + include/glm/glm/ext/matrix_int3x3_sized.hpp | 70 + include/glm/glm/ext/matrix_int3x4.hpp | 33 + include/glm/glm/ext/matrix_int3x4_sized.hpp | 49 + include/glm/glm/ext/matrix_int4x2.hpp | 33 + include/glm/glm/ext/matrix_int4x2_sized.hpp | 49 + include/glm/glm/ext/matrix_int4x3.hpp | 33 + include/glm/glm/ext/matrix_int4x3_sized.hpp | 49 + include/glm/glm/ext/matrix_int4x4.hpp | 38 + include/glm/glm/ext/matrix_int4x4_sized.hpp | 70 + include/glm/glm/ext/matrix_integer.hpp | 91 + include/glm/glm/ext/matrix_integer.inl | 38 + include/glm/glm/ext/matrix_projection.hpp | 149 + include/glm/glm/ext/matrix_projection.inl | 106 + include/glm/glm/ext/matrix_relational.hpp | 132 + include/glm/glm/ext/matrix_relational.inl | 88 + include/glm/glm/ext/matrix_transform.hpp | 171 + include/glm/glm/ext/matrix_transform.inl | 207 + include/glm/glm/ext/matrix_uint2x2.hpp | 38 + include/glm/glm/ext/matrix_uint2x2_sized.hpp | 70 + include/glm/glm/ext/matrix_uint2x3.hpp | 33 + include/glm/glm/ext/matrix_uint2x3_sized.hpp | 49 + include/glm/glm/ext/matrix_uint2x4.hpp | 33 + include/glm/glm/ext/matrix_uint2x4_sized.hpp | 49 + include/glm/glm/ext/matrix_uint3x2.hpp | 33 + include/glm/glm/ext/matrix_uint3x2_sized.hpp | 49 + include/glm/glm/ext/matrix_uint3x3.hpp | 38 + include/glm/glm/ext/matrix_uint3x3_sized.hpp | 70 + include/glm/glm/ext/matrix_uint3x4.hpp | 33 + include/glm/glm/ext/matrix_uint3x4_sized.hpp | 49 + include/glm/glm/ext/matrix_uint4x2.hpp | 33 + include/glm/glm/ext/matrix_uint4x2_sized.hpp | 49 + include/glm/glm/ext/matrix_uint4x3.hpp | 33 + include/glm/glm/ext/matrix_uint4x3_sized.hpp | 49 + include/glm/glm/ext/matrix_uint4x4.hpp | 38 + include/glm/glm/ext/matrix_uint4x4_sized.hpp | 70 + include/glm/glm/ext/quaternion_common.hpp | 135 + include/glm/glm/ext/quaternion_common.inl | 144 + .../glm/glm/ext/quaternion_common_simd.inl | 18 + include/glm/glm/ext/quaternion_double.hpp | 39 + .../glm/ext/quaternion_double_precision.hpp | 42 + .../glm/glm/ext/quaternion_exponential.hpp | 63 + .../glm/glm/ext/quaternion_exponential.inl | 89 + include/glm/glm/ext/quaternion_float.hpp | 39 + .../glm/ext/quaternion_float_precision.hpp | 36 + include/glm/glm/ext/quaternion_geometric.hpp | 70 + include/glm/glm/ext/quaternion_geometric.inl | 36 + include/glm/glm/ext/quaternion_relational.hpp | 62 + include/glm/glm/ext/quaternion_relational.inl | 35 + include/glm/glm/ext/quaternion_transform.hpp | 47 + include/glm/glm/ext/quaternion_transform.inl | 24 + .../glm/glm/ext/quaternion_trigonometric.hpp | 65 + .../glm/glm/ext/quaternion_trigonometric.inl | 37 + include/glm/glm/ext/scalar_common.hpp | 181 + include/glm/glm/ext/scalar_common.inl | 170 + include/glm/glm/ext/scalar_constants.hpp | 40 + include/glm/glm/ext/scalar_constants.inl | 24 + include/glm/glm/ext/scalar_int_sized.hpp | 70 + include/glm/glm/ext/scalar_integer.hpp | 92 + include/glm/glm/ext/scalar_integer.inl | 243 + include/glm/glm/ext/scalar_packing.hpp | 32 + include/glm/glm/ext/scalar_packing.inl | 0 include/glm/glm/ext/scalar_reciprocal.hpp | 135 + include/glm/glm/ext/scalar_reciprocal.inl | 107 + include/glm/glm/ext/scalar_relational.hpp | 68 + include/glm/glm/ext/scalar_relational.inl | 40 + include/glm/glm/ext/scalar_uint_sized.hpp | 70 + include/glm/glm/ext/scalar_ulp.hpp | 77 + include/glm/glm/ext/scalar_ulp.inl | 291 + include/glm/glm/ext/vector_bool1.hpp | 30 + .../glm/glm/ext/vector_bool1_precision.hpp | 34 + include/glm/glm/ext/vector_bool2.hpp | 18 + .../glm/glm/ext/vector_bool2_precision.hpp | 31 + include/glm/glm/ext/vector_bool3.hpp | 18 + .../glm/glm/ext/vector_bool3_precision.hpp | 31 + include/glm/glm/ext/vector_bool4.hpp | 18 + .../glm/glm/ext/vector_bool4_precision.hpp | 31 + include/glm/glm/ext/vector_common.hpp | 228 + include/glm/glm/ext/vector_common.inl | 147 + include/glm/glm/ext/vector_double1.hpp | 31 + .../glm/glm/ext/vector_double1_precision.hpp | 36 + include/glm/glm/ext/vector_double2.hpp | 18 + .../glm/glm/ext/vector_double2_precision.hpp | 31 + include/glm/glm/ext/vector_double3.hpp | 18 + .../glm/glm/ext/vector_double3_precision.hpp | 34 + include/glm/glm/ext/vector_double4.hpp | 18 + .../glm/glm/ext/vector_double4_precision.hpp | 35 + include/glm/glm/ext/vector_float1.hpp | 31 + .../glm/glm/ext/vector_float1_precision.hpp | 36 + include/glm/glm/ext/vector_float2.hpp | 18 + .../glm/glm/ext/vector_float2_precision.hpp | 31 + include/glm/glm/ext/vector_float3.hpp | 18 + .../glm/glm/ext/vector_float3_precision.hpp | 31 + include/glm/glm/ext/vector_float4.hpp | 18 + .../glm/glm/ext/vector_float4_precision.hpp | 31 + include/glm/glm/ext/vector_int1.hpp | 32 + include/glm/glm/ext/vector_int1_sized.hpp | 49 + include/glm/glm/ext/vector_int2.hpp | 18 + include/glm/glm/ext/vector_int2_sized.hpp | 49 + include/glm/glm/ext/vector_int3.hpp | 18 + include/glm/glm/ext/vector_int3_sized.hpp | 49 + include/glm/glm/ext/vector_int4.hpp | 18 + include/glm/glm/ext/vector_int4_sized.hpp | 49 + include/glm/glm/ext/vector_integer.hpp | 149 + include/glm/glm/ext/vector_integer.inl | 85 + include/glm/glm/ext/vector_packing.hpp | 32 + include/glm/glm/ext/vector_packing.inl | 0 include/glm/glm/ext/vector_reciprocal.hpp | 135 + include/glm/glm/ext/vector_reciprocal.inl | 105 + include/glm/glm/ext/vector_relational.hpp | 107 + include/glm/glm/ext/vector_relational.inl | 75 + include/glm/glm/ext/vector_uint1.hpp | 32 + include/glm/glm/ext/vector_uint1_sized.hpp | 49 + include/glm/glm/ext/vector_uint2.hpp | 18 + include/glm/glm/ext/vector_uint2_sized.hpp | 49 + include/glm/glm/ext/vector_uint3.hpp | 18 + include/glm/glm/ext/vector_uint3_sized.hpp | 49 + include/glm/glm/ext/vector_uint4.hpp | 18 + include/glm/glm/ext/vector_uint4_sized.hpp | 49 + include/glm/glm/ext/vector_ulp.hpp | 112 + include/glm/glm/ext/vector_ulp.inl | 74 + include/glm/glm/fwd.hpp | 1233 +++ include/glm/glm/geometric.hpp | 116 + include/glm/glm/glm.cppm | 2678 +++++ include/glm/glm/glm.hpp | 137 + include/glm/glm/gtc/bitfield.hpp | 266 + include/glm/glm/gtc/bitfield.inl | 635 ++ include/glm/glm/gtc/color_space.hpp | 56 + include/glm/glm/gtc/color_space.inl | 84 + include/glm/glm/gtc/constants.hpp | 170 + include/glm/glm/gtc/constants.inl | 173 + include/glm/glm/gtc/epsilon.hpp | 60 + include/glm/glm/gtc/epsilon.inl | 80 + include/glm/glm/gtc/integer.hpp | 43 + include/glm/glm/gtc/integer.inl | 33 + include/glm/glm/gtc/matrix_access.hpp | 60 + include/glm/glm/gtc/matrix_access.inl | 62 + include/glm/glm/gtc/matrix_integer.hpp | 433 + include/glm/glm/gtc/matrix_inverse.hpp | 50 + include/glm/glm/gtc/matrix_inverse.inl | 118 + include/glm/glm/gtc/matrix_transform.hpp | 36 + include/glm/glm/gtc/matrix_transform.inl | 3 + include/glm/glm/gtc/noise.hpp | 61 + include/glm/glm/gtc/noise.inl | 807 ++ include/glm/glm/gtc/packing.hpp | 728 ++ include/glm/glm/gtc/packing.inl | 952 ++ include/glm/glm/gtc/quaternion.hpp | 173 + include/glm/glm/gtc/quaternion.inl | 208 + include/glm/glm/gtc/quaternion_simd.inl | 0 include/glm/glm/gtc/random.hpp | 82 + include/glm/glm/gtc/random.inl | 303 + include/glm/glm/gtc/reciprocal.hpp | 24 + include/glm/glm/gtc/round.hpp | 160 + include/glm/glm/gtc/round.inl | 155 + include/glm/glm/gtc/type_aligned.hpp | 1378 +++ include/glm/glm/gtc/type_precision.hpp | 2094 ++++ include/glm/glm/gtc/type_precision.inl | 6 + include/glm/glm/gtc/type_ptr.hpp | 230 + include/glm/glm/gtc/type_ptr.inl | 398 + include/glm/glm/gtc/ulp.hpp | 155 + include/glm/glm/gtc/ulp.inl | 173 + include/glm/glm/gtc/vec1.hpp | 30 + include/glm/glm/gtx/associated_min_max.hpp | 205 + include/glm/glm/gtx/associated_min_max.inl | 354 + include/glm/glm/gtx/bit.hpp | 96 + include/glm/glm/gtx/bit.inl | 92 + include/glm/glm/gtx/closest_point.hpp | 47 + include/glm/glm/gtx/closest_point.inl | 45 + include/glm/glm/gtx/color_encoding.hpp | 52 + include/glm/glm/gtx/color_encoding.inl | 45 + include/glm/glm/gtx/color_space.hpp | 70 + include/glm/glm/gtx/color_space.inl | 144 + include/glm/glm/gtx/color_space_YCoCg.hpp | 58 + include/glm/glm/gtx/color_space_YCoCg.inl | 107 + include/glm/glm/gtx/common.hpp | 74 + include/glm/glm/gtx/common.inl | 125 + include/glm/glm/gtx/compatibility.hpp | 132 + include/glm/glm/gtx/compatibility.inl | 73 + include/glm/glm/gtx/component_wise.hpp | 77 + include/glm/glm/gtx/component_wise.inl | 147 + include/glm/glm/gtx/dual_quaternion.hpp | 272 + include/glm/glm/gtx/dual_quaternion.inl | 352 + include/glm/glm/gtx/easing.hpp | 217 + include/glm/glm/gtx/easing.inl | 436 + include/glm/glm/gtx/euler_angles.hpp | 333 + include/glm/glm/gtx/euler_angles.inl | 899 ++ include/glm/glm/gtx/extend.hpp | 40 + include/glm/glm/gtx/extend.inl | 48 + include/glm/glm/gtx/extended_min_max.hpp | 135 + include/glm/glm/gtx/extended_min_max.inl | 138 + include/glm/glm/gtx/exterior_product.hpp | 43 + include/glm/glm/gtx/exterior_product.inl | 26 + include/glm/glm/gtx/fast_exponential.hpp | 93 + include/glm/glm/gtx/fast_exponential.inl | 136 + include/glm/glm/gtx/fast_square_root.hpp | 96 + include/glm/glm/gtx/fast_square_root.inl | 75 + include/glm/glm/gtx/fast_trigonometry.hpp | 77 + include/glm/glm/gtx/fast_trigonometry.inl | 142 + include/glm/glm/gtx/float_normalize.inl | 13 + include/glm/glm/gtx/functions.hpp | 54 + include/glm/glm/gtx/functions.inl | 30 + include/glm/glm/gtx/gradient_paint.hpp | 51 + include/glm/glm/gtx/gradient_paint.inl | 36 + .../glm/glm/gtx/handed_coordinate_space.hpp | 48 + .../glm/glm/gtx/handed_coordinate_space.inl | 26 + include/glm/glm/gtx/hash.hpp | 156 + include/glm/glm/gtx/hash.inl | 175 + include/glm/glm/gtx/integer.hpp | 74 + include/glm/glm/gtx/integer.inl | 185 + include/glm/glm/gtx/intersect.hpp | 90 + include/glm/glm/gtx/intersect.inl | 200 + include/glm/glm/gtx/io.hpp | 210 + include/glm/glm/gtx/io.inl | 453 + include/glm/glm/gtx/iteration.hpp | 87 + include/glm/glm/gtx/iteration.inl | 116 + include/glm/glm/gtx/log_base.hpp | 46 + include/glm/glm/gtx/log_base.inl | 16 + include/glm/glm/gtx/matrix_cross_product.hpp | 45 + include/glm/glm/gtx/matrix_cross_product.inl | 37 + include/glm/glm/gtx/matrix_decompose.hpp | 50 + include/glm/glm/gtx/matrix_decompose.inl | 234 + include/glm/glm/gtx/matrix_factorisation.hpp | 67 + include/glm/glm/gtx/matrix_factorisation.inl | 84 + include/glm/glm/gtx/matrix_interpolation.hpp | 58 + include/glm/glm/gtx/matrix_interpolation.inl | 146 + include/glm/glm/gtx/matrix_major_storage.hpp | 117 + include/glm/glm/gtx/matrix_major_storage.inl | 166 + include/glm/glm/gtx/matrix_operation.hpp | 101 + include/glm/glm/gtx/matrix_operation.inl | 176 + include/glm/glm/gtx/matrix_query.hpp | 75 + include/glm/glm/gtx/matrix_query.inl | 119 + include/glm/glm/gtx/matrix_transform_2d.hpp | 79 + include/glm/glm/gtx/matrix_transform_2d.inl | 68 + include/glm/glm/gtx/mixed_product.hpp | 39 + include/glm/glm/gtx/mixed_product.inl | 15 + include/glm/glm/gtx/norm.hpp | 85 + include/glm/glm/gtx/norm.inl | 95 + include/glm/glm/gtx/normal.hpp | 39 + include/glm/glm/gtx/normal.inl | 15 + include/glm/glm/gtx/normalize_dot.hpp | 47 + include/glm/glm/gtx/normalize_dot.inl | 16 + include/glm/glm/gtx/number_precision.hpp | 44 + include/glm/glm/gtx/optimum_pow.hpp | 50 + include/glm/glm/gtx/optimum_pow.inl | 22 + include/glm/glm/gtx/orthonormalize.hpp | 47 + include/glm/glm/gtx/orthonormalize.inl | 29 + include/glm/glm/gtx/pca.hpp | 112 + include/glm/glm/gtx/pca.inl | 342 + include/glm/glm/gtx/perpendicular.hpp | 39 + include/glm/glm/gtx/perpendicular.inl | 10 + include/glm/glm/gtx/polar_coordinates.hpp | 46 + include/glm/glm/gtx/polar_coordinates.inl | 36 + include/glm/glm/gtx/projection.hpp | 41 + include/glm/glm/gtx/projection.inl | 10 + include/glm/glm/gtx/quaternion.hpp | 172 + include/glm/glm/gtx/quaternion.inl | 159 + include/glm/glm/gtx/range.hpp | 96 + include/glm/glm/gtx/raw_data.hpp | 49 + include/glm/glm/gtx/raw_data.inl | 2 + .../glm/glm/gtx/rotate_normalized_axis.hpp | 66 + .../glm/glm/gtx/rotate_normalized_axis.inl | 58 + include/glm/glm/gtx/rotate_vector.hpp | 121 + include/glm/glm/gtx/rotate_vector.inl | 187 + include/glm/glm/gtx/scalar_multiplication.hpp | 80 + include/glm/glm/gtx/scalar_relational.hpp | 34 + include/glm/glm/gtx/scalar_relational.inl | 88 + include/glm/glm/gtx/spline.hpp | 63 + include/glm/glm/gtx/spline.inl | 60 + include/glm/glm/gtx/std_based_type.hpp | 66 + include/glm/glm/gtx/std_based_type.inl | 6 + include/glm/glm/gtx/string_cast.hpp | 45 + include/glm/glm/gtx/string_cast.inl | 497 + include/glm/glm/gtx/structured_bindings.hpp | 92 + include/glm/glm/gtx/structured_bindings.inl | 55 + include/glm/glm/gtx/texture.hpp | 44 + include/glm/glm/gtx/texture.inl | 17 + include/glm/glm/gtx/transform.hpp | 58 + include/glm/glm/gtx/transform.inl | 23 + include/glm/glm/gtx/transform2.hpp | 93 + include/glm/glm/gtx/transform2.inl | 128 + include/glm/glm/gtx/type_aligned.hpp | 980 ++ include/glm/glm/gtx/type_aligned.inl | 6 + include/glm/glm/gtx/type_trait.hpp | 83 + include/glm/glm/gtx/type_trait.inl | 61 + include/glm/glm/gtx/vec_swizzle.hpp | 2769 +++++ include/glm/glm/gtx/vector_angle.hpp | 55 + include/glm/glm/gtx/vector_angle.inl | 45 + include/glm/glm/gtx/vector_query.hpp | 64 + include/glm/glm/gtx/vector_query.inl | 154 + include/glm/glm/gtx/wrap.hpp | 35 + include/glm/glm/gtx/wrap.inl | 6 + include/glm/glm/integer.hpp | 212 + include/glm/glm/mat2x2.hpp | 9 + include/glm/glm/mat2x3.hpp | 9 + include/glm/glm/mat2x4.hpp | 9 + include/glm/glm/mat3x2.hpp | 9 + include/glm/glm/mat3x3.hpp | 8 + include/glm/glm/mat3x4.hpp | 8 + include/glm/glm/mat4x2.hpp | 9 + include/glm/glm/mat4x3.hpp | 8 + include/glm/glm/mat4x4.hpp | 9 + include/glm/glm/matrix.hpp | 161 + include/glm/glm/packing.hpp | 173 + include/glm/glm/simd/common.h | 249 + include/glm/glm/simd/exponential.h | 20 + include/glm/glm/simd/geometric.h | 130 + include/glm/glm/simd/integer.h | 115 + include/glm/glm/simd/matrix.h | 1040 ++ include/glm/glm/simd/neon.h | 155 + include/glm/glm/simd/packing.h | 8 + include/glm/glm/simd/platform.h | 469 + include/glm/glm/simd/trigonometric.h | 9 + include/glm/glm/simd/vector_relational.h | 8 + include/glm/glm/trigonometric.hpp | 210 + include/glm/glm/vec2.hpp | 14 + include/glm/glm/vec3.hpp | 14 + include/glm/glm/vec4.hpp | 15 + include/glm/glm/vector_relational.hpp | 121 + include/glm/manual.md | 2450 +++++ include/glm/readme.md | 1333 +++ include/glm/test/CMakeLists.txt | 93 + include/glm/test/bug/CMakeLists.txt | 1 + include/glm/test/bug/bug_ms_vec_static.cpp | 48 + include/glm/test/cmake/CMakeLists.txt | 9 + include/glm/test/cmake/test_find_glm.cpp | 22 + include/glm/test/core/CMakeLists.txt | 52 + include/glm/test/core/core_cpp_constexpr.cpp | 750 ++ .../glm/test/core/core_cpp_defaulted_ctor.cpp | 145 + .../test/core/core_force_aligned_gentypes.cpp | 10 + .../glm/test/core/core_force_arch_unknown.cpp | 14 + .../test/core/core_force_compiler_unknown.cpp | 38 + .../glm/test/core/core_force_ctor_init.cpp | 139 + .../core/core_force_depth_zero_to_one.cpp | 12 + .../test/core/core_force_explicit_ctor.cpp | 17 + include/glm/test/core/core_force_inline.cpp | 12 + .../glm/test/core/core_force_intrinsics.cpp | 442 + .../glm/test/core/core_force_left_handed.cpp | 12 + .../test/core/core_force_platform_unknown.cpp | 14 + include/glm/test/core/core_force_pure.cpp | 443 + .../glm/test/core/core_force_quat_wxyz.cpp | 13 + .../test/core/core_force_size_t_length.cpp | 12 + .../core/core_force_unrestricted_gentype.cpp | 12 + .../glm/test/core/core_force_xyzw_only.cpp | 58 + include/glm/test/core/core_func_common.cpp | 1431 +++ .../glm/test/core/core_func_exponential.cpp | 185 + include/glm/test/core/core_func_geometric.cpp | 210 + include/glm/test/core/core_func_integer.cpp | 1587 +++ .../test/core/core_func_integer_bit_count.cpp | 318 + .../test/core/core_func_integer_find_lsb.cpp | 455 + .../test/core/core_func_integer_find_msb.cpp | 465 + include/glm/test/core/core_func_matrix.cpp | 426 + include/glm/test/core/core_func_noise.cpp | 7 + include/glm/test/core/core_func_packing.cpp | 156 + include/glm/test/core/core_func_swizzle.cpp | 164 + .../glm/test/core/core_func_trigonometric.cpp | 10 + .../test/core/core_func_vector_relational.cpp | 180 + .../glm/test/core/core_setup_force_cxx03.cpp | 34 + .../glm/test/core/core_setup_force_cxx98.cpp | 33 + .../core/core_setup_force_cxx_unknown.cpp | 14 + .../core/core_setup_force_size_t_length.cpp | 22 + include/glm/test/core/core_setup_message.cpp | 315 + .../test/core/core_setup_platform_unknown.cpp | 45 + .../glm/test/core/core_setup_precision.cpp | 58 + include/glm/test/core/core_type_aligned.cpp | 124 + include/glm/test/core/core_type_cast.cpp | 154 + include/glm/test/core/core_type_ctor.cpp | 351 + include/glm/test/core/core_type_int.cpp | 26 + include/glm/test/core/core_type_length.cpp | 78 + include/glm/test/core/core_type_mat2x2.cpp | 198 + include/glm/test/core/core_type_mat2x3.cpp | 163 + include/glm/test/core/core_type_mat2x4.cpp | 168 + include/glm/test/core/core_type_mat3x2.cpp | 169 + include/glm/test/core/core_type_mat3x3.cpp | 216 + include/glm/test/core/core_type_mat3x4.cpp | 170 + include/glm/test/core/core_type_mat4x2.cpp | 172 + include/glm/test/core/core_type_mat4x3.cpp | 173 + include/glm/test/core/core_type_mat4x4.cpp | 223 + include/glm/test/core/core_type_vec1.cpp | 193 + include/glm/test/core/core_type_vec2.cpp | 428 + include/glm/test/core/core_type_vec3.cpp | 649 ++ include/glm/test/core/core_type_vec4.cpp | 858 ++ include/glm/test/ext/CMakeLists.txt | 55 + .../glm/test/ext/ext_matrix_clip_space.cpp | 13 + include/glm/test/ext/ext_matrix_common.cpp | 236 + .../glm/test/ext/ext_matrix_int2x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int2x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int2x4_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int3x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int3x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int3x4_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int4x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int4x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_int4x4_sized.cpp | 28 + include/glm/test/ext/ext_matrix_integer.cpp | 237 + .../glm/test/ext/ext_matrix_projection.cpp | 13 + .../glm/test/ext/ext_matrix_relational.cpp | 163 + include/glm/test/ext/ext_matrix_transform.cpp | 61 + .../glm/test/ext/ext_matrix_uint2x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint2x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint2x4_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint3x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint3x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint3x4_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint4x2_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint4x3_sized.cpp | 28 + .../glm/test/ext/ext_matrix_uint4x4_sized.cpp | 28 + .../glm/test/ext/ext_quaternion_common.cpp | 61 + .../test/ext/ext_quaternion_exponential.cpp | 87 + .../glm/test/ext/ext_quaternion_geometric.cpp | 88 + .../test/ext/ext_quaternion_relational.cpp | 51 + .../glm/test/ext/ext_quaternion_transform.cpp | 45 + .../test/ext/ext_quaternion_trigonometric.cpp | 40 + include/glm/test/ext/ext_quaternion_type.cpp | 113 + include/glm/test/ext/ext_scalar_common.cpp | 361 + include/glm/test/ext/ext_scalar_constants.cpp | 36 + include/glm/test/ext/ext_scalar_int_sized.cpp | 43 + include/glm/test/ext/ext_scalar_integer.cpp | 715 ++ include/glm/test/ext/ext_scalar_packing.cpp | 28 + .../glm/test/ext/ext_scalar_reciprocal.cpp | 171 + .../glm/test/ext/ext_scalar_relational.cpp | 106 + .../glm/test/ext/ext_scalar_uint_sized.cpp | 43 + include/glm/test/ext/ext_scalar_ulp.cpp | 96 + include/glm/test/ext/ext_vec1.cpp | 171 + include/glm/test/ext/ext_vector_bool1.cpp | 104 + include/glm/test/ext/ext_vector_common.cpp | 362 + include/glm/test/ext/ext_vector_iec559.cpp | 166 + .../glm/test/ext/ext_vector_int1_sized.cpp | 41 + .../glm/test/ext/ext_vector_int2_sized.cpp | 41 + .../glm/test/ext/ext_vector_int3_sized.cpp | 41 + .../glm/test/ext/ext_vector_int4_sized.cpp | 41 + include/glm/test/ext/ext_vector_integer.cpp | 741 ++ .../glm/test/ext/ext_vector_integer_sized.cpp | 215 + include/glm/test/ext/ext_vector_packing.cpp | 58 + .../glm/test/ext/ext_vector_reciprocal.cpp | 186 + .../glm/test/ext/ext_vector_relational.cpp | 205 + .../glm/test/ext/ext_vector_uint1_sized.cpp | 41 + .../glm/test/ext/ext_vector_uint2_sized.cpp | 41 + .../glm/test/ext/ext_vector_uint3_sized.cpp | 41 + .../glm/test/ext/ext_vector_uint4_sized.cpp | 41 + include/glm/test/ext/ext_vector_ulp.cpp | 99 + include/glm/test/glm.cppcheck | 6 + include/glm/test/gtc/CMakeLists.txt | 20 + include/glm/test/gtc/gtc_bitfield.cpp | 1061 ++ include/glm/test/gtc/gtc_color_space.cpp | 76 + include/glm/test/gtc/gtc_constants.cpp | 30 + include/glm/test/gtc/gtc_epsilon.cpp | 80 + include/glm/test/gtc/gtc_integer.cpp | 281 + include/glm/test/gtc/gtc_matrix_access.cpp | 383 + include/glm/test/gtc/gtc_matrix_integer.cpp | 8 + include/glm/test/gtc/gtc_matrix_inverse.cpp | 51 + include/glm/test/gtc/gtc_matrix_transform.cpp | 161 + include/glm/test/gtc/gtc_noise.cpp | 86 + include/glm/test/gtc/gtc_packing.cpp | 879 ++ include/glm/test/gtc/gtc_quaternion.cpp | 348 + include/glm/test/gtc/gtc_random.cpp | 383 + include/glm/test/gtc/gtc_reciprocal.cpp | 8 + include/glm/test/gtc/gtc_round.cpp | 467 + include/glm/test/gtc/gtc_type_aligned.cpp | 560 + include/glm/test/gtc/gtc_type_precision.cpp | 1044 ++ include/glm/test/gtc/gtc_type_ptr.cpp | 387 + include/glm/test/gtc/gtc_ulp.cpp | 99 + .../glm/test/gtc/gtc_user_defined_types.cpp | 30 + include/glm/test/gtc/gtc_vec1.cpp | 8 + include/glm/test/gtx/CMakeLists.txt | 62 + include/glm/test/gtx/gtx.cpp | 8 + .../glm/test/gtx/gtx_associated_min_max.cpp | 10 + include/glm/test/gtx/gtx_closest_point.cpp | 9 + include/glm/test/gtx/gtx_color_encoding.cpp | 52 + include/glm/test/gtx/gtx_color_space.cpp | 36 + .../glm/test/gtx/gtx_color_space_YCoCg.cpp | 17 + include/glm/test/gtx/gtx_common.cpp | 161 + include/glm/test/gtx/gtx_compatibility.cpp | 58 + include/glm/test/gtx/gtx_component_wise.cpp | 182 + include/glm/test/gtx/gtx_dual_quaternion.cpp | 205 + include/glm/test/gtx/gtx_easing.cpp | 91 + include/glm/test/gtx/gtx_euler_angle.cpp | 537 + include/glm/test/gtx/gtx_extend.cpp | 9 + include/glm/test/gtx/gtx_extended_min_max.cpp | 101 + include/glm/test/gtx/gtx_extented_min_max.cpp | 39 + include/glm/test/gtx/gtx_exterior_product.cpp | 15 + include/glm/test/gtx/gtx_fast_exponential.cpp | 9 + include/glm/test/gtx/gtx_fast_square_root.cpp | 45 + .../glm/test/gtx/gtx_fast_trigonometry.cpp | 592 + include/glm/test/gtx/gtx_functions.cpp | 37 + include/glm/test/gtx/gtx_gradient_paint.cpp | 34 + .../test/gtx/gtx_handed_coordinate_space.cpp | 9 + include/glm/test/gtx/gtx_hash.cpp | 80 + include/glm/test/gtx/gtx_int_10_10_10_2.cpp | 18 + include/glm/test/gtx/gtx_integer.cpp | 108 + include/glm/test/gtx/gtx_intersect.cpp | 92 + include/glm/test/gtx/gtx_io.cpp | 186 + include/glm/test/gtx/gtx_iteration.cpp | 215 + include/glm/test/gtx/gtx_load.cpp | 124 + include/glm/test/gtx/gtx_log_base.cpp | 54 + .../glm/test/gtx/gtx_matrix_cross_product.cpp | 9 + include/glm/test/gtx/gtx_matrix_decompose.cpp | 59 + .../glm/test/gtx/gtx_matrix_factorisation.cpp | 105 + .../glm/test/gtx/gtx_matrix_interpolation.cpp | 122 + .../glm/test/gtx/gtx_matrix_major_storage.cpp | 9 + include/glm/test/gtx/gtx_matrix_operation.cpp | 86 + include/glm/test/gtx/gtx_matrix_query.cpp | 72 + .../glm/test/gtx/gtx_matrix_transform_2d.cpp | 9 + include/glm/test/gtx/gtx_mixed_product.cpp | 18 + include/glm/test/gtx/gtx_norm.cpp | 84 + include/glm/test/gtx/gtx_normal.cpp | 9 + include/glm/test/gtx/gtx_normalize_dot.cpp | 9 + include/glm/test/gtx/gtx_optimum_pow.cpp | 9 + include/glm/test/gtx/gtx_orthonormalize.cpp | 9 + include/glm/test/gtx/gtx_pca.cpp | 733 ++ include/glm/test/gtx/gtx_perpendicular.cpp | 9 + .../glm/test/gtx/gtx_polar_coordinates.cpp | 9 + include/glm/test/gtx/gtx_projection.cpp | 9 + include/glm/test/gtx/gtx_quaternion.cpp | 112 + include/glm/test/gtx/gtx_random.cpp | 99 + include/glm/test/gtx/gtx_range.cpp | 83 + .../test/gtx/gtx_rotate_normalized_axis.cpp | 9 + include/glm/test/gtx/gtx_rotate_vector.cpp | 88 + .../test/gtx/gtx_scalar_multiplication.cpp | 38 + .../glm/test/gtx/gtx_scalar_relational.cpp | 174 + include/glm/test/gtx/gtx_simd_mat4.cpp | 324 + include/glm/test/gtx/gtx_simd_vec4.cpp | 71 + include/glm/test/gtx/gtx_spline.cpp | 121 + include/glm/test/gtx/gtx_string_cast.cpp | 156 + .../glm/test/gtx/gtx_structured_bindings.cpp | 366 + include/glm/test/gtx/gtx_texture.cpp | 23 + include/glm/test/gtx/gtx_transform2.cpp | 135 + include/glm/test/gtx/gtx_type_aligned.cpp | 150 + include/glm/test/gtx/gtx_type_trait.cpp | 11 + include/glm/test/gtx/gtx_vec_swizzle.cpp | 11 + include/glm/test/gtx/gtx_vector_angle.cpp | 59 + include/glm/test/gtx/gtx_vector_query.cpp | 82 + include/glm/test/gtx/gtx_wrap.cpp | 191 + include/glm/test/perf/CMakeLists.txt | 6 + include/glm/test/perf/perf_matrix_div.cpp | 153 + include/glm/test/perf/perf_matrix_inverse.cpp | 151 + include/glm/test/perf/perf_matrix_mul.cpp | 202 + .../glm/test/perf/perf_matrix_mul_vector.cpp | 159 + .../glm/test/perf/perf_matrix_transpose.cpp | 150 + .../glm/test/perf/perf_vector_mul_matrix.cpp | 192 + include/glm/util/autoexp.txt | 28 + include/glm/util/autoexp.vc2010.dat | 3896 +++++++ include/glm/util/glm.natvis | 555 + include/glm/util/usertype.dat | 407 + main.cpp | 548 + shader.hpp | 152 + sphere.hpp | 70 + stb_image.cpp | 2 + stb_image.h | 8748 +++++++++++++++ vertex.glsl | 6 + vertexshader.vs | 21 + 1692 files changed, 304900 insertions(+) create mode 100644 .clangd create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 awesomeface.png create mode 100755 build/main create mode 100644 camera.hpp create mode 100644 compile_flags.txt create mode 100644 container.jpg create mode 100644 fragmentshader.glsl create mode 100644 glad.c create mode 100644 image.png create mode 100644 include/KHR/khrplatform.h create mode 100644 include/glad/glad.h create mode 100644 include/glm/.gitignore create mode 100644 include/glm/CMakeLists.txt create mode 100644 include/glm/cmake/cmake_uninstall.cmake.in create mode 100644 include/glm/copying.txt create mode 100644 include/glm/doc/api/a00002.html create mode 100644 include/glm/doc/api/a00002_source.html create mode 100644 include/glm/doc/api/a00005_source.html create mode 100644 include/glm/doc/api/a00008_source.html create mode 100644 include/glm/doc/api/a00011_source.html create mode 100644 include/glm/doc/api/a00014_source.html create mode 100644 include/glm/doc/api/a00017_source.html create mode 100644 include/glm/doc/api/a00020_source.html create mode 100644 include/glm/doc/api/a00023_source.html create mode 100644 include/glm/doc/api/a00026_source.html create mode 100644 include/glm/doc/api/a00029_source.html create mode 100644 include/glm/doc/api/a00032_source.html create mode 100644 include/glm/doc/api/a00035_source.html create mode 100644 include/glm/doc/api/a00038_source.html create mode 100644 include/glm/doc/api/a00041_source.html create mode 100644 include/glm/doc/api/a00044.html create mode 100644 include/glm/doc/api/a00044_source.html create mode 100644 include/glm/doc/api/a00047.html create mode 100644 include/glm/doc/api/a00047_source.html create mode 100644 include/glm/doc/api/a00050.html create mode 100644 include/glm/doc/api/a00050_source.html create mode 100644 include/glm/doc/api/a00053.html create mode 100644 include/glm/doc/api/a00053_source.html create mode 100644 include/glm/doc/api/a00056.html create mode 100644 include/glm/doc/api/a00056_source.html create mode 100644 include/glm/doc/api/a00059.html create mode 100644 include/glm/doc/api/a00059_source.html create mode 100644 include/glm/doc/api/a00062.html create mode 100644 include/glm/doc/api/a00062_source.html create mode 100644 include/glm/doc/api/a00065.html create mode 100644 include/glm/doc/api/a00065_source.html create mode 100644 include/glm/doc/api/a00068.html create mode 100644 include/glm/doc/api/a00068_source.html create mode 100644 include/glm/doc/api/a00071.html create mode 100644 include/glm/doc/api/a00071_source.html create mode 100644 include/glm/doc/api/a00074.html create mode 100644 include/glm/doc/api/a00074_source.html create mode 100644 include/glm/doc/api/a00077.html create mode 100644 include/glm/doc/api/a00077_source.html create mode 100644 include/glm/doc/api/a00080.html create mode 100644 include/glm/doc/api/a00080_source.html create mode 100644 include/glm/doc/api/a00083.html create mode 100644 include/glm/doc/api/a00083_source.html create mode 100644 include/glm/doc/api/a00086.html create mode 100644 include/glm/doc/api/a00086_source.html create mode 100644 include/glm/doc/api/a00089_source.html create mode 100644 include/glm/doc/api/a00092.html create mode 100644 include/glm/doc/api/a00092_source.html create mode 100644 include/glm/doc/api/a00095.html create mode 100644 include/glm/doc/api/a00095_source.html create mode 100644 include/glm/doc/api/a00098.html create mode 100644 include/glm/doc/api/a00098_source.html create mode 100644 include/glm/doc/api/a00101.html create mode 100644 include/glm/doc/api/a00101_source.html create mode 100644 include/glm/doc/api/a00104.html create mode 100644 include/glm/doc/api/a00104_source.html create mode 100644 include/glm/doc/api/a00107.html create mode 100644 include/glm/doc/api/a00107_source.html create mode 100644 include/glm/doc/api/a00110.html create mode 100644 include/glm/doc/api/a00110_source.html create mode 100644 include/glm/doc/api/a00113.html create mode 100644 include/glm/doc/api/a00113_source.html create mode 100644 include/glm/doc/api/a00116.html create mode 100644 include/glm/doc/api/a00116_source.html create mode 100644 include/glm/doc/api/a00119.html create mode 100644 include/glm/doc/api/a00119_source.html create mode 100644 include/glm/doc/api/a00122.html create mode 100644 include/glm/doc/api/a00122_source.html create mode 100644 include/glm/doc/api/a00125.html create mode 100644 include/glm/doc/api/a00125_source.html create mode 100644 include/glm/doc/api/a00128.html create mode 100644 include/glm/doc/api/a00128_source.html create mode 100644 include/glm/doc/api/a00131.html create mode 100644 include/glm/doc/api/a00131_source.html create mode 100644 include/glm/doc/api/a00134.html create mode 100644 include/glm/doc/api/a00134_source.html create mode 100644 include/glm/doc/api/a00137.html create mode 100644 include/glm/doc/api/a00137_source.html create mode 100644 include/glm/doc/api/a00140.html create mode 100644 include/glm/doc/api/a00140_source.html create mode 100644 include/glm/doc/api/a00143.html create mode 100644 include/glm/doc/api/a00143_source.html create mode 100644 include/glm/doc/api/a00146.html create mode 100644 include/glm/doc/api/a00146_source.html create mode 100644 include/glm/doc/api/a00149.html create mode 100644 include/glm/doc/api/a00149_source.html create mode 100644 include/glm/doc/api/a00152.html create mode 100644 include/glm/doc/api/a00152_source.html create mode 100644 include/glm/doc/api/a00155.html create mode 100644 include/glm/doc/api/a00155_source.html create mode 100644 include/glm/doc/api/a00158.html create mode 100644 include/glm/doc/api/a00158_source.html create mode 100644 include/glm/doc/api/a00161.html create mode 100644 include/glm/doc/api/a00161_source.html create mode 100644 include/glm/doc/api/a00164.html create mode 100644 include/glm/doc/api/a00164_source.html create mode 100644 include/glm/doc/api/a00167.html create mode 100644 include/glm/doc/api/a00167_source.html create mode 100644 include/glm/doc/api/a00170.html create mode 100644 include/glm/doc/api/a00170_source.html create mode 100644 include/glm/doc/api/a00173.html create mode 100644 include/glm/doc/api/a00173_source.html create mode 100644 include/glm/doc/api/a00176.html create mode 100644 include/glm/doc/api/a00176_source.html create mode 100644 include/glm/doc/api/a00179.html create mode 100644 include/glm/doc/api/a00179_source.html create mode 100644 include/glm/doc/api/a00182.html create mode 100644 include/glm/doc/api/a00182_source.html create mode 100644 include/glm/doc/api/a00185.html create mode 100644 include/glm/doc/api/a00185_source.html create mode 100644 include/glm/doc/api/a00188.html create mode 100644 include/glm/doc/api/a00188_source.html create mode 100644 include/glm/doc/api/a00191_source.html create mode 100644 include/glm/doc/api/a00194.html create mode 100644 include/glm/doc/api/a00194_source.html create mode 100644 include/glm/doc/api/a00197.html create mode 100644 include/glm/doc/api/a00197_source.html create mode 100644 include/glm/doc/api/a00200.html create mode 100644 include/glm/doc/api/a00200_source.html create mode 100644 include/glm/doc/api/a00203.html create mode 100644 include/glm/doc/api/a00203_source.html create mode 100644 include/glm/doc/api/a00206.html create mode 100644 include/glm/doc/api/a00206_source.html create mode 100644 include/glm/doc/api/a00209.html create mode 100644 include/glm/doc/api/a00209_source.html create mode 100644 include/glm/doc/api/a00212.html create mode 100644 include/glm/doc/api/a00212_source.html create mode 100644 include/glm/doc/api/a00215.html create mode 100644 include/glm/doc/api/a00215_source.html create mode 100644 include/glm/doc/api/a00218.html create mode 100644 include/glm/doc/api/a00218_source.html create mode 100644 include/glm/doc/api/a00221.html create mode 100644 include/glm/doc/api/a00221_source.html create mode 100644 include/glm/doc/api/a00224.html create mode 100644 include/glm/doc/api/a00224_source.html create mode 100644 include/glm/doc/api/a00227.html create mode 100644 include/glm/doc/api/a00227_source.html create mode 100644 include/glm/doc/api/a00230.html create mode 100644 include/glm/doc/api/a00230_source.html create mode 100644 include/glm/doc/api/a00233.html create mode 100644 include/glm/doc/api/a00233_source.html create mode 100644 include/glm/doc/api/a00236.html create mode 100644 include/glm/doc/api/a00236_source.html create mode 100644 include/glm/doc/api/a00239_source.html create mode 100644 include/glm/doc/api/a00242.html create mode 100644 include/glm/doc/api/a00242_source.html create mode 100644 include/glm/doc/api/a00245.html create mode 100644 include/glm/doc/api/a00245_source.html create mode 100644 include/glm/doc/api/a00248.html create mode 100644 include/glm/doc/api/a00248_source.html create mode 100644 include/glm/doc/api/a00251.html create mode 100644 include/glm/doc/api/a00251_source.html create mode 100644 include/glm/doc/api/a00254.html create mode 100644 include/glm/doc/api/a00254_source.html create mode 100644 include/glm/doc/api/a00257.html create mode 100644 include/glm/doc/api/a00257_source.html create mode 100644 include/glm/doc/api/a00263.html create mode 100644 include/glm/doc/api/a00263_source.html create mode 100644 include/glm/doc/api/a00266.html create mode 100644 include/glm/doc/api/a00266_source.html create mode 100644 include/glm/doc/api/a00272.html create mode 100644 include/glm/doc/api/a00272_source.html create mode 100644 include/glm/doc/api/a00275.html create mode 100644 include/glm/doc/api/a00275_source.html create mode 100644 include/glm/doc/api/a00278.html create mode 100644 include/glm/doc/api/a00278_source.html create mode 100644 include/glm/doc/api/a00281.html create mode 100644 include/glm/doc/api/a00281_source.html create mode 100644 include/glm/doc/api/a00284.html create mode 100644 include/glm/doc/api/a00284_source.html create mode 100644 include/glm/doc/api/a00287.html create mode 100644 include/glm/doc/api/a00287_source.html create mode 100644 include/glm/doc/api/a00290.html create mode 100644 include/glm/doc/api/a00290_source.html create mode 100644 include/glm/doc/api/a00293.html create mode 100644 include/glm/doc/api/a00293_source.html create mode 100644 include/glm/doc/api/a00296.html create mode 100644 include/glm/doc/api/a00296_source.html create mode 100644 include/glm/doc/api/a00299.html create mode 100644 include/glm/doc/api/a00299_source.html create mode 100644 include/glm/doc/api/a00302.html create mode 100644 include/glm/doc/api/a00302_source.html create mode 100644 include/glm/doc/api/a00305_source.html create mode 100644 include/glm/doc/api/a00308.html create mode 100644 include/glm/doc/api/a00308_source.html create mode 100644 include/glm/doc/api/a00311.html create mode 100644 include/glm/doc/api/a00311_source.html create mode 100644 include/glm/doc/api/a00314.html create mode 100644 include/glm/doc/api/a00314_source.html create mode 100644 include/glm/doc/api/a00317.html create mode 100644 include/glm/doc/api/a00317_source.html create mode 100644 include/glm/doc/api/a00320.html create mode 100644 include/glm/doc/api/a00320_source.html create mode 100644 include/glm/doc/api/a00323.html create mode 100644 include/glm/doc/api/a00323_source.html create mode 100644 include/glm/doc/api/a00326.html create mode 100644 include/glm/doc/api/a00326_source.html create mode 100644 include/glm/doc/api/a00329.html create mode 100644 include/glm/doc/api/a00329_source.html create mode 100644 include/glm/doc/api/a00332.html create mode 100644 include/glm/doc/api/a00332_source.html create mode 100644 include/glm/doc/api/a00335.html create mode 100644 include/glm/doc/api/a00335_source.html create mode 100644 include/glm/doc/api/a00338.html create mode 100644 include/glm/doc/api/a00338_source.html create mode 100644 include/glm/doc/api/a00341.html create mode 100644 include/glm/doc/api/a00341_source.html create mode 100644 include/glm/doc/api/a00344.html create mode 100644 include/glm/doc/api/a00344_source.html create mode 100644 include/glm/doc/api/a00347.html create mode 100644 include/glm/doc/api/a00347_source.html create mode 100644 include/glm/doc/api/a00350.html create mode 100644 include/glm/doc/api/a00350_source.html create mode 100644 include/glm/doc/api/a00353.html create mode 100644 include/glm/doc/api/a00353_source.html create mode 100644 include/glm/doc/api/a00356.html create mode 100644 include/glm/doc/api/a00356_source.html create mode 100644 include/glm/doc/api/a00359.html create mode 100644 include/glm/doc/api/a00359_source.html create mode 100644 include/glm/doc/api/a00362.html create mode 100644 include/glm/doc/api/a00362_source.html create mode 100644 include/glm/doc/api/a00365.html create mode 100644 include/glm/doc/api/a00365_source.html create mode 100644 include/glm/doc/api/a00368.html create mode 100644 include/glm/doc/api/a00368_source.html create mode 100644 include/glm/doc/api/a00371.html create mode 100644 include/glm/doc/api/a00371_source.html create mode 100644 include/glm/doc/api/a00377.html create mode 100644 include/glm/doc/api/a00377_source.html create mode 100644 include/glm/doc/api/a00380.html create mode 100644 include/glm/doc/api/a00380_source.html create mode 100644 include/glm/doc/api/a00383.html create mode 100644 include/glm/doc/api/a00383_source.html create mode 100644 include/glm/doc/api/a00386.html create mode 100644 include/glm/doc/api/a00386_source.html create mode 100644 include/glm/doc/api/a00389.html create mode 100644 include/glm/doc/api/a00389_source.html create mode 100644 include/glm/doc/api/a00392.html create mode 100644 include/glm/doc/api/a00392_source.html create mode 100644 include/glm/doc/api/a00395.html create mode 100644 include/glm/doc/api/a00395_source.html create mode 100644 include/glm/doc/api/a00398.html create mode 100644 include/glm/doc/api/a00398_source.html create mode 100644 include/glm/doc/api/a00401.html create mode 100644 include/glm/doc/api/a00401_source.html create mode 100644 include/glm/doc/api/a00404.html create mode 100644 include/glm/doc/api/a00404_source.html create mode 100644 include/glm/doc/api/a00407.html create mode 100644 include/glm/doc/api/a00407_source.html create mode 100644 include/glm/doc/api/a00410.html create mode 100644 include/glm/doc/api/a00410_source.html create mode 100644 include/glm/doc/api/a00413.html create mode 100644 include/glm/doc/api/a00413_source.html create mode 100644 include/glm/doc/api/a00416.html create mode 100644 include/glm/doc/api/a00416_source.html create mode 100644 include/glm/doc/api/a00419.html create mode 100644 include/glm/doc/api/a00419_source.html create mode 100644 include/glm/doc/api/a00422.html create mode 100644 include/glm/doc/api/a00422_source.html create mode 100644 include/glm/doc/api/a00425.html create mode 100644 include/glm/doc/api/a00425_source.html create mode 100644 include/glm/doc/api/a00428.html create mode 100644 include/glm/doc/api/a00428_source.html create mode 100644 include/glm/doc/api/a00431.html create mode 100644 include/glm/doc/api/a00431_source.html create mode 100644 include/glm/doc/api/a00434.html create mode 100644 include/glm/doc/api/a00434_source.html create mode 100644 include/glm/doc/api/a00437.html create mode 100644 include/glm/doc/api/a00437_source.html create mode 100644 include/glm/doc/api/a00440.html create mode 100644 include/glm/doc/api/a00440_source.html create mode 100644 include/glm/doc/api/a00443.html create mode 100644 include/glm/doc/api/a00443_source.html create mode 100644 include/glm/doc/api/a00446.html create mode 100644 include/glm/doc/api/a00446_source.html create mode 100644 include/glm/doc/api/a00449.html create mode 100644 include/glm/doc/api/a00449_source.html create mode 100644 include/glm/doc/api/a00452.html create mode 100644 include/glm/doc/api/a00452_source.html create mode 100644 include/glm/doc/api/a00455.html create mode 100644 include/glm/doc/api/a00455_source.html create mode 100644 include/glm/doc/api/a00458.html create mode 100644 include/glm/doc/api/a00458_source.html create mode 100644 include/glm/doc/api/a00461.html create mode 100644 include/glm/doc/api/a00461_source.html create mode 100644 include/glm/doc/api/a00464.html create mode 100644 include/glm/doc/api/a00464_source.html create mode 100644 include/glm/doc/api/a00467.html create mode 100644 include/glm/doc/api/a00467_source.html create mode 100644 include/glm/doc/api/a00470.html create mode 100644 include/glm/doc/api/a00470_source.html create mode 100644 include/glm/doc/api/a00473.html create mode 100644 include/glm/doc/api/a00473_source.html create mode 100644 include/glm/doc/api/a00476.html create mode 100644 include/glm/doc/api/a00476_source.html create mode 100644 include/glm/doc/api/a00479.html create mode 100644 include/glm/doc/api/a00479_source.html create mode 100644 include/glm/doc/api/a00482.html create mode 100644 include/glm/doc/api/a00482_source.html create mode 100644 include/glm/doc/api/a00485.html create mode 100644 include/glm/doc/api/a00485_source.html create mode 100644 include/glm/doc/api/a00488.html create mode 100644 include/glm/doc/api/a00488_source.html create mode 100644 include/glm/doc/api/a00491.html create mode 100644 include/glm/doc/api/a00491_source.html create mode 100644 include/glm/doc/api/a00494.html create mode 100644 include/glm/doc/api/a00494_source.html create mode 100644 include/glm/doc/api/a00497.html create mode 100644 include/glm/doc/api/a00497_source.html create mode 100644 include/glm/doc/api/a00500.html create mode 100644 include/glm/doc/api/a00500_source.html create mode 100644 include/glm/doc/api/a00503.html create mode 100644 include/glm/doc/api/a00503_source.html create mode 100644 include/glm/doc/api/a00506.html create mode 100644 include/glm/doc/api/a00506_source.html create mode 100644 include/glm/doc/api/a00509.html create mode 100644 include/glm/doc/api/a00509_source.html create mode 100644 include/glm/doc/api/a00512.html create mode 100644 include/glm/doc/api/a00512_source.html create mode 100644 include/glm/doc/api/a00515.html create mode 100644 include/glm/doc/api/a00515_source.html create mode 100644 include/glm/doc/api/a00518.html create mode 100644 include/glm/doc/api/a00518_source.html create mode 100644 include/glm/doc/api/a00521.html create mode 100644 include/glm/doc/api/a00521_source.html create mode 100644 include/glm/doc/api/a00524_source.html create mode 100644 include/glm/doc/api/a00527.html create mode 100644 include/glm/doc/api/a00527_source.html create mode 100644 include/glm/doc/api/a00530_source.html create mode 100644 include/glm/doc/api/a00533.html create mode 100644 include/glm/doc/api/a00533_source.html create mode 100644 include/glm/doc/api/a00539.html create mode 100644 include/glm/doc/api/a00539_source.html create mode 100644 include/glm/doc/api/a00542.html create mode 100644 include/glm/doc/api/a00542_source.html create mode 100644 include/glm/doc/api/a00545.html create mode 100644 include/glm/doc/api/a00545_source.html create mode 100644 include/glm/doc/api/a00548.html create mode 100644 include/glm/doc/api/a00548_source.html create mode 100644 include/glm/doc/api/a00551.html create mode 100644 include/glm/doc/api/a00551_source.html create mode 100644 include/glm/doc/api/a00554.html create mode 100644 include/glm/doc/api/a00554_source.html create mode 100644 include/glm/doc/api/a00557.html create mode 100644 include/glm/doc/api/a00557_source.html create mode 100644 include/glm/doc/api/a00563.html create mode 100644 include/glm/doc/api/a00563_source.html create mode 100644 include/glm/doc/api/a00566.html create mode 100644 include/glm/doc/api/a00566_source.html create mode 100644 include/glm/doc/api/a00569.html create mode 100644 include/glm/doc/api/a00569_source.html create mode 100644 include/glm/doc/api/a00575.html create mode 100644 include/glm/doc/api/a00575_source.html create mode 100644 include/glm/doc/api/a00578.html create mode 100644 include/glm/doc/api/a00578_source.html create mode 100644 include/glm/doc/api/a00581.html create mode 100644 include/glm/doc/api/a00581_source.html create mode 100644 include/glm/doc/api/a00584.html create mode 100644 include/glm/doc/api/a00584_source.html create mode 100644 include/glm/doc/api/a00587.html create mode 100644 include/glm/doc/api/a00587_source.html create mode 100644 include/glm/doc/api/a00590.html create mode 100644 include/glm/doc/api/a00590_source.html create mode 100644 include/glm/doc/api/a00593.html create mode 100644 include/glm/doc/api/a00593_source.html create mode 100644 include/glm/doc/api/a00596.html create mode 100644 include/glm/doc/api/a00596_source.html create mode 100644 include/glm/doc/api/a00599.html create mode 100644 include/glm/doc/api/a00599_source.html create mode 100644 include/glm/doc/api/a00602.html create mode 100644 include/glm/doc/api/a00602_source.html create mode 100644 include/glm/doc/api/a00605.html create mode 100644 include/glm/doc/api/a00605_source.html create mode 100644 include/glm/doc/api/a00608.html create mode 100644 include/glm/doc/api/a00608_source.html create mode 100644 include/glm/doc/api/a00611.html create mode 100644 include/glm/doc/api/a00611_source.html create mode 100644 include/glm/doc/api/a00614.html create mode 100644 include/glm/doc/api/a00614_source.html create mode 100644 include/glm/doc/api/a00617.html create mode 100644 include/glm/doc/api/a00617_source.html create mode 100644 include/glm/doc/api/a00620.html create mode 100644 include/glm/doc/api/a00620_source.html create mode 100644 include/glm/doc/api/a00623.html create mode 100644 include/glm/doc/api/a00623_source.html create mode 100644 include/glm/doc/api/a00626.html create mode 100644 include/glm/doc/api/a00626_source.html create mode 100644 include/glm/doc/api/a00629.html create mode 100644 include/glm/doc/api/a00629_source.html create mode 100644 include/glm/doc/api/a00632.html create mode 100644 include/glm/doc/api/a00632_source.html create mode 100644 include/glm/doc/api/a00635.html create mode 100644 include/glm/doc/api/a00635_source.html create mode 100644 include/glm/doc/api/a00638.html create mode 100644 include/glm/doc/api/a00638_source.html create mode 100644 include/glm/doc/api/a00641.html create mode 100644 include/glm/doc/api/a00641_source.html create mode 100644 include/glm/doc/api/a00644.html create mode 100644 include/glm/doc/api/a00644_source.html create mode 100644 include/glm/doc/api/a00647.html create mode 100644 include/glm/doc/api/a00647_source.html create mode 100644 include/glm/doc/api/a00650.html create mode 100644 include/glm/doc/api/a00650_source.html create mode 100644 include/glm/doc/api/a00653.html create mode 100644 include/glm/doc/api/a00653_source.html create mode 100644 include/glm/doc/api/a00656.html create mode 100644 include/glm/doc/api/a00656_source.html create mode 100644 include/glm/doc/api/a00659.html create mode 100644 include/glm/doc/api/a00659_source.html create mode 100644 include/glm/doc/api/a00662.html create mode 100644 include/glm/doc/api/a00662_source.html create mode 100644 include/glm/doc/api/a00665.html create mode 100644 include/glm/doc/api/a00665_source.html create mode 100644 include/glm/doc/api/a00668.html create mode 100644 include/glm/doc/api/a00668_source.html create mode 100644 include/glm/doc/api/a00671.html create mode 100644 include/glm/doc/api/a00671_source.html create mode 100644 include/glm/doc/api/a00674.html create mode 100644 include/glm/doc/api/a00674_source.html create mode 100644 include/glm/doc/api/a00677.html create mode 100644 include/glm/doc/api/a00677_source.html create mode 100644 include/glm/doc/api/a00680.html create mode 100644 include/glm/doc/api/a00680_source.html create mode 100644 include/glm/doc/api/a00683.html create mode 100644 include/glm/doc/api/a00683_source.html create mode 100644 include/glm/doc/api/a00686.html create mode 100644 include/glm/doc/api/a00686_source.html create mode 100644 include/glm/doc/api/a00689.html create mode 100644 include/glm/doc/api/a00689_source.html create mode 100644 include/glm/doc/api/a00692.html create mode 100644 include/glm/doc/api/a00692_source.html create mode 100644 include/glm/doc/api/a00695.html create mode 100644 include/glm/doc/api/a00695_source.html create mode 100644 include/glm/doc/api/a00698.html create mode 100644 include/glm/doc/api/a00698_source.html create mode 100644 include/glm/doc/api/a00701.html create mode 100644 include/glm/doc/api/a00701_source.html create mode 100644 include/glm/doc/api/a00704.html create mode 100644 include/glm/doc/api/a00704_source.html create mode 100644 include/glm/doc/api/a00707.html create mode 100644 include/glm/doc/api/a00707_source.html create mode 100644 include/glm/doc/api/a00710.html create mode 100644 include/glm/doc/api/a00710_source.html create mode 100644 include/glm/doc/api/a00713.html create mode 100644 include/glm/doc/api/a00713_source.html create mode 100644 include/glm/doc/api/a00716.html create mode 100644 include/glm/doc/api/a00716_source.html create mode 100644 include/glm/doc/api/a00719.html create mode 100644 include/glm/doc/api/a00719_source.html create mode 100644 include/glm/doc/api/a00722.html create mode 100644 include/glm/doc/api/a00722_source.html create mode 100644 include/glm/doc/api/a00725.html create mode 100644 include/glm/doc/api/a00725_source.html create mode 100644 include/glm/doc/api/a00728.html create mode 100644 include/glm/doc/api/a00728_source.html create mode 100644 include/glm/doc/api/a00731.html create mode 100644 include/glm/doc/api/a00731_source.html create mode 100644 include/glm/doc/api/a00734.html create mode 100644 include/glm/doc/api/a00734_source.html create mode 100644 include/glm/doc/api/a00737.html create mode 100644 include/glm/doc/api/a00737_source.html create mode 100644 include/glm/doc/api/a00740.html create mode 100644 include/glm/doc/api/a00740_source.html create mode 100644 include/glm/doc/api/a00743.html create mode 100644 include/glm/doc/api/a00743_source.html create mode 100644 include/glm/doc/api/a00746.html create mode 100644 include/glm/doc/api/a00746_source.html create mode 100644 include/glm/doc/api/a00749.html create mode 100644 include/glm/doc/api/a00749_source.html create mode 100644 include/glm/doc/api/a00752.html create mode 100644 include/glm/doc/api/a00752_source.html create mode 100644 include/glm/doc/api/a00755.html create mode 100644 include/glm/doc/api/a00755_source.html create mode 100644 include/glm/doc/api/a00758.html create mode 100644 include/glm/doc/api/a00758_source.html create mode 100644 include/glm/doc/api/a00761.html create mode 100644 include/glm/doc/api/a00761_source.html create mode 100644 include/glm/doc/api/a00764.html create mode 100644 include/glm/doc/api/a00764_source.html create mode 100644 include/glm/doc/api/a00767.html create mode 100644 include/glm/doc/api/a00767_source.html create mode 100644 include/glm/doc/api/a00770.html create mode 100644 include/glm/doc/api/a00770_source.html create mode 100644 include/glm/doc/api/a00773.html create mode 100644 include/glm/doc/api/a00773_source.html create mode 100644 include/glm/doc/api/a00776.html create mode 100644 include/glm/doc/api/a00776_source.html create mode 100644 include/glm/doc/api/a00779.html create mode 100644 include/glm/doc/api/a00779_source.html create mode 100644 include/glm/doc/api/a00782.html create mode 100644 include/glm/doc/api/a00782_source.html create mode 100644 include/glm/doc/api/a00785.html create mode 100644 include/glm/doc/api/a00785_source.html create mode 100644 include/glm/doc/api/a00788.html create mode 100644 include/glm/doc/api/a00788_source.html create mode 100644 include/glm/doc/api/a00791.html create mode 100644 include/glm/doc/api/a00791_source.html create mode 100644 include/glm/doc/api/a00794.html create mode 100644 include/glm/doc/api/a00794_source.html create mode 100644 include/glm/doc/api/a00797.html create mode 100644 include/glm/doc/api/a00797_source.html create mode 100644 include/glm/doc/api/a00800.html create mode 100644 include/glm/doc/api/a00800_source.html create mode 100644 include/glm/doc/api/a00803.html create mode 100644 include/glm/doc/api/a00803_source.html create mode 100644 include/glm/doc/api/a00806.html create mode 100644 include/glm/doc/api/a00806_source.html create mode 100644 include/glm/doc/api/a00809_source.html create mode 100644 include/glm/doc/api/a00812.html create mode 100644 include/glm/doc/api/a00813.html create mode 100644 include/glm/doc/api/a00814.html create mode 100644 include/glm/doc/api/a00815.html create mode 100644 include/glm/doc/api/a00816.html create mode 100644 include/glm/doc/api/a00817.html create mode 100644 include/glm/doc/api/a00818.html create mode 100644 include/glm/doc/api/a00819.html create mode 100644 include/glm/doc/api/a00820.html create mode 100644 include/glm/doc/api/a00821.html create mode 100644 include/glm/doc/api/a00822.html create mode 100644 include/glm/doc/api/a00823.html create mode 100644 include/glm/doc/api/a00824.html create mode 100644 include/glm/doc/api/a00825.html create mode 100644 include/glm/doc/api/a00826.html create mode 100644 include/glm/doc/api/a00827.html create mode 100644 include/glm/doc/api/a00828.html create mode 100644 include/glm/doc/api/a00829.html create mode 100644 include/glm/doc/api/a00830.html create mode 100644 include/glm/doc/api/a00831.html create mode 100644 include/glm/doc/api/a00832.html create mode 100644 include/glm/doc/api/a00833.html create mode 100644 include/glm/doc/api/a00834.html create mode 100644 include/glm/doc/api/a00835.html create mode 100644 include/glm/doc/api/a00836.html create mode 100644 include/glm/doc/api/a00837.html create mode 100644 include/glm/doc/api/a00838.html create mode 100644 include/glm/doc/api/a00839.html create mode 100644 include/glm/doc/api/a00840.html create mode 100644 include/glm/doc/api/a00841.html create mode 100644 include/glm/doc/api/a00842.html create mode 100644 include/glm/doc/api/a00843.html create mode 100644 include/glm/doc/api/a00844.html create mode 100644 include/glm/doc/api/a00845.html create mode 100644 include/glm/doc/api/a00846.html create mode 100644 include/glm/doc/api/a00847.html create mode 100644 include/glm/doc/api/a00848.html create mode 100644 include/glm/doc/api/a00849.html create mode 100644 include/glm/doc/api/a00850.html create mode 100644 include/glm/doc/api/a00851.html create mode 100644 include/glm/doc/api/a00852.html create mode 100644 include/glm/doc/api/a00853.html create mode 100644 include/glm/doc/api/a00854.html create mode 100644 include/glm/doc/api/a00855.html create mode 100644 include/glm/doc/api/a00856.html create mode 100644 include/glm/doc/api/a00857.html create mode 100644 include/glm/doc/api/a00858.html create mode 100644 include/glm/doc/api/a00859.html create mode 100644 include/glm/doc/api/a00860.html create mode 100644 include/glm/doc/api/a00861.html create mode 100644 include/glm/doc/api/a00862.html create mode 100644 include/glm/doc/api/a00863.html create mode 100644 include/glm/doc/api/a00864.html create mode 100644 include/glm/doc/api/a00865.html create mode 100644 include/glm/doc/api/a00866.html create mode 100644 include/glm/doc/api/a00867.html create mode 100644 include/glm/doc/api/a00868.html create mode 100644 include/glm/doc/api/a00869.html create mode 100644 include/glm/doc/api/a00870.html create mode 100644 include/glm/doc/api/a00871.html create mode 100644 include/glm/doc/api/a00872.html create mode 100644 include/glm/doc/api/a00873.html create mode 100644 include/glm/doc/api/a00874.html create mode 100644 include/glm/doc/api/a00875.html create mode 100644 include/glm/doc/api/a00876.html create mode 100644 include/glm/doc/api/a00877.html create mode 100644 include/glm/doc/api/a00878.html create mode 100644 include/glm/doc/api/a00879.html create mode 100644 include/glm/doc/api/a00880.html create mode 100644 include/glm/doc/api/a00881.html create mode 100644 include/glm/doc/api/a00882.html create mode 100644 include/glm/doc/api/a00883.html create mode 100644 include/glm/doc/api/a00884.html create mode 100644 include/glm/doc/api/a00885.html create mode 100644 include/glm/doc/api/a00886.html create mode 100644 include/glm/doc/api/a00887.html create mode 100644 include/glm/doc/api/a00888.html create mode 100644 include/glm/doc/api/a00889.html create mode 100644 include/glm/doc/api/a00890.html create mode 100644 include/glm/doc/api/a00891.html create mode 100644 include/glm/doc/api/a00892.html create mode 100644 include/glm/doc/api/a00893.html create mode 100644 include/glm/doc/api/a00894.html create mode 100644 include/glm/doc/api/a00895.html create mode 100644 include/glm/doc/api/a00896.html create mode 100644 include/glm/doc/api/a00897.html create mode 100644 include/glm/doc/api/a00898.html create mode 100644 include/glm/doc/api/a00899.html create mode 100644 include/glm/doc/api/a00900.html create mode 100644 include/glm/doc/api/a00901.html create mode 100644 include/glm/doc/api/a00902.html create mode 100644 include/glm/doc/api/a00903.html create mode 100644 include/glm/doc/api/a00904.html create mode 100644 include/glm/doc/api/a00905.html create mode 100644 include/glm/doc/api/a00906.html create mode 100644 include/glm/doc/api/a00907.html create mode 100644 include/glm/doc/api/a00908.html create mode 100644 include/glm/doc/api/a00909.html create mode 100644 include/glm/doc/api/a00910.html create mode 100644 include/glm/doc/api/a00911.html create mode 100644 include/glm/doc/api/a00912.html create mode 100644 include/glm/doc/api/a00913.html create mode 100644 include/glm/doc/api/a00914.html create mode 100644 include/glm/doc/api/a00915.html create mode 100644 include/glm/doc/api/a00916.html create mode 100644 include/glm/doc/api/a00917.html create mode 100644 include/glm/doc/api/a00918.html create mode 100644 include/glm/doc/api/a00919.html create mode 100644 include/glm/doc/api/a00920.html create mode 100644 include/glm/doc/api/a00921.html create mode 100644 include/glm/doc/api/a00922.html create mode 100644 include/glm/doc/api/a00923.html create mode 100644 include/glm/doc/api/a00924.html create mode 100644 include/glm/doc/api/a00925.html create mode 100644 include/glm/doc/api/a00926.html create mode 100644 include/glm/doc/api/a00927.html create mode 100644 include/glm/doc/api/a00928.html create mode 100644 include/glm/doc/api/a00929.html create mode 100644 include/glm/doc/api/a00930.html create mode 100644 include/glm/doc/api/a00931.html create mode 100644 include/glm/doc/api/a00932.html create mode 100644 include/glm/doc/api/a00933.html create mode 100644 include/glm/doc/api/a00934.html create mode 100644 include/glm/doc/api/a00935.html create mode 100644 include/glm/doc/api/a00936.html create mode 100644 include/glm/doc/api/a00937.html create mode 100644 include/glm/doc/api/a00938.html create mode 100644 include/glm/doc/api/a00939.html create mode 100644 include/glm/doc/api/a00940.html create mode 100644 include/glm/doc/api/a00941.html create mode 100644 include/glm/doc/api/a00942.html create mode 100644 include/glm/doc/api/a00943.html create mode 100644 include/glm/doc/api/a00944.html create mode 100644 include/glm/doc/api/a00945.html create mode 100644 include/glm/doc/api/a00946.html create mode 100644 include/glm/doc/api/a00947.html create mode 100644 include/glm/doc/api/a00948.html create mode 100644 include/glm/doc/api/a00949.html create mode 100644 include/glm/doc/api/a00950.html create mode 100644 include/glm/doc/api/a00951.html create mode 100644 include/glm/doc/api/a00952.html create mode 100644 include/glm/doc/api/a00953.html create mode 100644 include/glm/doc/api/a00954.html create mode 100644 include/glm/doc/api/a00955.html create mode 100644 include/glm/doc/api/a00956.html create mode 100644 include/glm/doc/api/a00957.html create mode 100644 include/glm/doc/api/a00958.html create mode 100644 include/glm/doc/api/a00959.html create mode 100644 include/glm/doc/api/a00960.html create mode 100644 include/glm/doc/api/a00961.html create mode 100644 include/glm/doc/api/a00962.html create mode 100644 include/glm/doc/api/a00963.html create mode 100644 include/glm/doc/api/a00964.html create mode 100644 include/glm/doc/api/a00965.html create mode 100644 include/glm/doc/api/a00966.html create mode 100644 include/glm/doc/api/a00967.html create mode 100644 include/glm/doc/api/a00968.html create mode 100644 include/glm/doc/api/a00969.html create mode 100644 include/glm/doc/api/a00970.html create mode 100644 include/glm/doc/api/a00971.html create mode 100644 include/glm/doc/api/a00972.html create mode 100644 include/glm/doc/api/a00973.html create mode 100644 include/glm/doc/api/a00974.html create mode 100644 include/glm/doc/api/a00975.html create mode 100644 include/glm/doc/api/a00976.html create mode 100644 include/glm/doc/api/a00977.html create mode 100644 include/glm/doc/api/a00978.html create mode 100644 include/glm/doc/api/a00979.html create mode 100644 include/glm/doc/api/a00980.html create mode 100644 include/glm/doc/api/a00981.html create mode 100644 include/glm/doc/api/a00982.html create mode 100644 include/glm/doc/api/a00983.html create mode 100644 include/glm/doc/api/a00984.html create mode 100644 include/glm/doc/api/a00985.html create mode 100644 include/glm/doc/api/a00986.html create mode 100644 include/glm/doc/api/a00987.html create mode 100644 include/glm/doc/api/a00988.html create mode 100644 include/glm/doc/api/a00989.html create mode 100644 include/glm/doc/api/a00990.html create mode 100644 include/glm/doc/api/a00991.html create mode 100644 include/glm/doc/api/a00992.html create mode 100644 include/glm/doc/api/a00993.html create mode 100644 include/glm/doc/api/a00994.html create mode 100644 include/glm/doc/api/a00995.html create mode 100644 include/glm/doc/api/a00996.html create mode 100644 include/glm/doc/api/a01681.html create mode 100644 include/glm/doc/api/a01681_source.html create mode 100644 include/glm/doc/api/a01684.html create mode 100644 include/glm/doc/api/a01684_source.html create mode 100644 include/glm/doc/api/a01687.html create mode 100644 include/glm/doc/api/a01687_source.html create mode 100644 include/glm/doc/api/a01690.html create mode 100644 include/glm/doc/api/a01690_source.html create mode 100644 include/glm/doc/api/a01693.html create mode 100644 include/glm/doc/api/a01693_source.html create mode 100644 include/glm/doc/api/a01696.html create mode 100644 include/glm/doc/api/a01696_source.html create mode 100644 include/glm/doc/api/a01699.html create mode 100644 include/glm/doc/api/a01699_source.html create mode 100644 include/glm/doc/api/a01702.html create mode 100644 include/glm/doc/api/a01702_source.html create mode 100644 include/glm/doc/api/a01705.html create mode 100644 include/glm/doc/api/a01705_source.html create mode 100644 include/glm/doc/api/a01708.html create mode 100644 include/glm/doc/api/a01708_source.html create mode 100644 include/glm/doc/api/a01711.html create mode 100644 include/glm/doc/api/a01711_source.html create mode 100644 include/glm/doc/api/a01714.html create mode 100644 include/glm/doc/api/a01714_source.html create mode 100644 include/glm/doc/api/a01717.html create mode 100644 include/glm/doc/api/a01717_source.html create mode 100644 include/glm/doc/api/a01720.html create mode 100644 include/glm/doc/api/a01720_source.html create mode 100644 include/glm/doc/api/a01723.html create mode 100644 include/glm/doc/api/a01723_source.html create mode 100644 include/glm/doc/api/a01726.html create mode 100644 include/glm/doc/api/a01726_source.html create mode 100644 include/glm/doc/api/a01729.html create mode 100644 include/glm/doc/api/a01729_source.html create mode 100644 include/glm/doc/api/bc_s.png create mode 100644 include/glm/doc/api/bdwn.png create mode 100644 include/glm/doc/api/closed.png create mode 100644 include/glm/doc/api/dir_382f4fd018b81be8753cb53c0a41a09a.html create mode 100644 include/glm/doc/api/dir_50f12b6ceb23d7f6adfb377a1ae8b006.html create mode 100644 include/glm/doc/api/dir_628fd60eb37daf5aa9a81e3983c640b7.html create mode 100644 include/glm/doc/api/dir_63ed049134a778d525e06b63afc2c979.html create mode 100644 include/glm/doc/api/dir_885cc87fac2d91e269af0a5a959fa5f6.html create mode 100644 include/glm/doc/api/dir_b11711034def6a4ce452fe9c451dd3d0.html create mode 100644 include/glm/doc/api/dir_b171cecbb853a9ee4caace490047c53f.html create mode 100644 include/glm/doc/api/dir_c98a9ac98258ab9f831b188d66361a70.html create mode 100644 include/glm/doc/api/dir_d9678a6a9012da969e0b059b39347945.html create mode 100644 include/glm/doc/api/dir_fca33f1b5115d46f42c670590789c0d2.html create mode 100644 include/glm/doc/api/doc.png create mode 100644 include/glm/doc/api/doxygen.css create mode 100644 include/glm/doc/api/doxygen.png create mode 100644 include/glm/doc/api/dynsections.js create mode 100644 include/glm/doc/api/files.html create mode 100644 include/glm/doc/api/folderclosed.png create mode 100644 include/glm/doc/api/folderopen.png create mode 100644 include/glm/doc/api/index.html create mode 100644 include/glm/doc/api/jquery.js create mode 100644 include/glm/doc/api/logo-mini.png create mode 100644 include/glm/doc/api/menu.js create mode 100644 include/glm/doc/api/menudata.js create mode 100644 include/glm/doc/api/modules.html create mode 100644 include/glm/doc/api/nav_f.png create mode 100644 include/glm/doc/api/nav_g.png create mode 100644 include/glm/doc/api/nav_h.png create mode 100644 include/glm/doc/api/open.png create mode 100644 include/glm/doc/api/search/all_0.html create mode 100644 include/glm/doc/api/search/all_0.js create mode 100644 include/glm/doc/api/search/all_1.html create mode 100644 include/glm/doc/api/search/all_1.js create mode 100644 include/glm/doc/api/search/all_10.html create mode 100644 include/glm/doc/api/search/all_10.js create mode 100644 include/glm/doc/api/search/all_11.html create mode 100644 include/glm/doc/api/search/all_11.js create mode 100644 include/glm/doc/api/search/all_12.html create mode 100644 include/glm/doc/api/search/all_12.js create mode 100644 include/glm/doc/api/search/all_13.html create mode 100644 include/glm/doc/api/search/all_13.js create mode 100644 include/glm/doc/api/search/all_14.html create mode 100644 include/glm/doc/api/search/all_14.js create mode 100644 include/glm/doc/api/search/all_15.html create mode 100644 include/glm/doc/api/search/all_15.js create mode 100644 include/glm/doc/api/search/all_16.html create mode 100644 include/glm/doc/api/search/all_16.js create mode 100644 include/glm/doc/api/search/all_2.html create mode 100644 include/glm/doc/api/search/all_2.js create mode 100644 include/glm/doc/api/search/all_3.html create mode 100644 include/glm/doc/api/search/all_3.js create mode 100644 include/glm/doc/api/search/all_4.html create mode 100644 include/glm/doc/api/search/all_4.js create mode 100644 include/glm/doc/api/search/all_5.html create mode 100644 include/glm/doc/api/search/all_5.js create mode 100644 include/glm/doc/api/search/all_6.html create mode 100644 include/glm/doc/api/search/all_6.js create mode 100644 include/glm/doc/api/search/all_7.html create mode 100644 include/glm/doc/api/search/all_7.js create mode 100644 include/glm/doc/api/search/all_8.html create mode 100644 include/glm/doc/api/search/all_8.js create mode 100644 include/glm/doc/api/search/all_9.html create mode 100644 include/glm/doc/api/search/all_9.js create mode 100644 include/glm/doc/api/search/all_a.html create mode 100644 include/glm/doc/api/search/all_a.js create mode 100644 include/glm/doc/api/search/all_b.html create mode 100644 include/glm/doc/api/search/all_b.js create mode 100644 include/glm/doc/api/search/all_c.html create mode 100644 include/glm/doc/api/search/all_c.js create mode 100644 include/glm/doc/api/search/all_d.html create mode 100644 include/glm/doc/api/search/all_d.js create mode 100644 include/glm/doc/api/search/all_e.html create mode 100644 include/glm/doc/api/search/all_e.js create mode 100644 include/glm/doc/api/search/all_f.html create mode 100644 include/glm/doc/api/search/all_f.js create mode 100644 include/glm/doc/api/search/close.png create mode 100644 include/glm/doc/api/search/files_0.html create mode 100644 include/glm/doc/api/search/files_0.js create mode 100644 include/glm/doc/api/search/files_1.html create mode 100644 include/glm/doc/api/search/files_1.js create mode 100644 include/glm/doc/api/search/files_10.html create mode 100644 include/glm/doc/api/search/files_10.js create mode 100644 include/glm/doc/api/search/files_11.html create mode 100644 include/glm/doc/api/search/files_11.js create mode 100644 include/glm/doc/api/search/files_12.html create mode 100644 include/glm/doc/api/search/files_12.js create mode 100644 include/glm/doc/api/search/files_13.html create mode 100644 include/glm/doc/api/search/files_13.js create mode 100644 include/glm/doc/api/search/files_14.html create mode 100644 include/glm/doc/api/search/files_14.js create mode 100644 include/glm/doc/api/search/files_2.html create mode 100644 include/glm/doc/api/search/files_2.js create mode 100644 include/glm/doc/api/search/files_3.html create mode 100644 include/glm/doc/api/search/files_3.js create mode 100644 include/glm/doc/api/search/files_4.html create mode 100644 include/glm/doc/api/search/files_4.js create mode 100644 include/glm/doc/api/search/files_5.html create mode 100644 include/glm/doc/api/search/files_5.js create mode 100644 include/glm/doc/api/search/files_6.html create mode 100644 include/glm/doc/api/search/files_6.js create mode 100644 include/glm/doc/api/search/files_7.html create mode 100644 include/glm/doc/api/search/files_7.js create mode 100644 include/glm/doc/api/search/files_8.html create mode 100644 include/glm/doc/api/search/files_8.js create mode 100644 include/glm/doc/api/search/files_9.html create mode 100644 include/glm/doc/api/search/files_9.js create mode 100644 include/glm/doc/api/search/files_a.html create mode 100644 include/glm/doc/api/search/files_a.js create mode 100644 include/glm/doc/api/search/files_b.html create mode 100644 include/glm/doc/api/search/files_b.js create mode 100644 include/glm/doc/api/search/files_c.html create mode 100644 include/glm/doc/api/search/files_c.js create mode 100644 include/glm/doc/api/search/files_d.html create mode 100644 include/glm/doc/api/search/files_d.js create mode 100644 include/glm/doc/api/search/files_e.html create mode 100644 include/glm/doc/api/search/files_e.js create mode 100644 include/glm/doc/api/search/files_f.html create mode 100644 include/glm/doc/api/search/files_f.js create mode 100644 include/glm/doc/api/search/functions_0.html create mode 100644 include/glm/doc/api/search/functions_0.js create mode 100644 include/glm/doc/api/search/functions_1.html create mode 100644 include/glm/doc/api/search/functions_1.js create mode 100644 include/glm/doc/api/search/functions_10.html create mode 100644 include/glm/doc/api/search/functions_10.js create mode 100644 include/glm/doc/api/search/functions_11.html create mode 100644 include/glm/doc/api/search/functions_11.js create mode 100644 include/glm/doc/api/search/functions_12.html create mode 100644 include/glm/doc/api/search/functions_12.js create mode 100644 include/glm/doc/api/search/functions_13.html create mode 100644 include/glm/doc/api/search/functions_13.js create mode 100644 include/glm/doc/api/search/functions_14.html create mode 100644 include/glm/doc/api/search/functions_14.js create mode 100644 include/glm/doc/api/search/functions_15.html create mode 100644 include/glm/doc/api/search/functions_15.js create mode 100644 include/glm/doc/api/search/functions_16.html create mode 100644 include/glm/doc/api/search/functions_16.js create mode 100644 include/glm/doc/api/search/functions_2.html create mode 100644 include/glm/doc/api/search/functions_2.js create mode 100644 include/glm/doc/api/search/functions_3.html create mode 100644 include/glm/doc/api/search/functions_3.js create mode 100644 include/glm/doc/api/search/functions_4.html create mode 100644 include/glm/doc/api/search/functions_4.js create mode 100644 include/glm/doc/api/search/functions_5.html create mode 100644 include/glm/doc/api/search/functions_5.js create mode 100644 include/glm/doc/api/search/functions_6.html create mode 100644 include/glm/doc/api/search/functions_6.js create mode 100644 include/glm/doc/api/search/functions_7.html create mode 100644 include/glm/doc/api/search/functions_7.js create mode 100644 include/glm/doc/api/search/functions_8.html create mode 100644 include/glm/doc/api/search/functions_8.js create mode 100644 include/glm/doc/api/search/functions_9.html create mode 100644 include/glm/doc/api/search/functions_9.js create mode 100644 include/glm/doc/api/search/functions_a.html create mode 100644 include/glm/doc/api/search/functions_a.js create mode 100644 include/glm/doc/api/search/functions_b.html create mode 100644 include/glm/doc/api/search/functions_b.js create mode 100644 include/glm/doc/api/search/functions_c.html create mode 100644 include/glm/doc/api/search/functions_c.js create mode 100644 include/glm/doc/api/search/functions_d.html create mode 100644 include/glm/doc/api/search/functions_d.js create mode 100644 include/glm/doc/api/search/functions_e.html create mode 100644 include/glm/doc/api/search/functions_e.js create mode 100644 include/glm/doc/api/search/functions_f.html create mode 100644 include/glm/doc/api/search/functions_f.js create mode 100644 include/glm/doc/api/search/groups_0.html create mode 100644 include/glm/doc/api/search/groups_0.js create mode 100644 include/glm/doc/api/search/groups_1.html create mode 100644 include/glm/doc/api/search/groups_1.js create mode 100644 include/glm/doc/api/search/groups_2.html create mode 100644 include/glm/doc/api/search/groups_2.js create mode 100644 include/glm/doc/api/search/groups_3.html create mode 100644 include/glm/doc/api/search/groups_3.js create mode 100644 include/glm/doc/api/search/groups_4.html create mode 100644 include/glm/doc/api/search/groups_4.js create mode 100644 include/glm/doc/api/search/groups_5.html create mode 100644 include/glm/doc/api/search/groups_5.js create mode 100644 include/glm/doc/api/search/groups_6.html create mode 100644 include/glm/doc/api/search/groups_6.js create mode 100644 include/glm/doc/api/search/groups_7.html create mode 100644 include/glm/doc/api/search/groups_7.js create mode 100644 include/glm/doc/api/search/groups_8.html create mode 100644 include/glm/doc/api/search/groups_8.js create mode 100644 include/glm/doc/api/search/groups_9.html create mode 100644 include/glm/doc/api/search/groups_9.js create mode 100644 include/glm/doc/api/search/mag_sel.png create mode 100644 include/glm/doc/api/search/nomatches.html create mode 100644 include/glm/doc/api/search/pages_0.html create mode 100644 include/glm/doc/api/search/pages_0.js create mode 100644 include/glm/doc/api/search/search.css create mode 100644 include/glm/doc/api/search/search.js create mode 100644 include/glm/doc/api/search/search_l.png create mode 100644 include/glm/doc/api/search/search_m.png create mode 100644 include/glm/doc/api/search/search_r.png create mode 100644 include/glm/doc/api/search/searchdata.js create mode 100644 include/glm/doc/api/search/typedefs_0.html create mode 100644 include/glm/doc/api/search/typedefs_0.js create mode 100644 include/glm/doc/api/search/typedefs_1.html create mode 100644 include/glm/doc/api/search/typedefs_1.js create mode 100644 include/glm/doc/api/search/typedefs_2.html create mode 100644 include/glm/doc/api/search/typedefs_2.js create mode 100644 include/glm/doc/api/search/typedefs_3.html create mode 100644 include/glm/doc/api/search/typedefs_3.js create mode 100644 include/glm/doc/api/search/typedefs_4.html create mode 100644 include/glm/doc/api/search/typedefs_4.js create mode 100644 include/glm/doc/api/search/typedefs_5.html create mode 100644 include/glm/doc/api/search/typedefs_5.js create mode 100644 include/glm/doc/api/search/typedefs_6.html create mode 100644 include/glm/doc/api/search/typedefs_6.js create mode 100644 include/glm/doc/api/search/typedefs_7.html create mode 100644 include/glm/doc/api/search/typedefs_7.js create mode 100644 include/glm/doc/api/search/typedefs_8.html create mode 100644 include/glm/doc/api/search/typedefs_8.js create mode 100644 include/glm/doc/api/search/typedefs_9.html create mode 100644 include/glm/doc/api/search/typedefs_9.js create mode 100644 include/glm/doc/api/search/typedefs_a.html create mode 100644 include/glm/doc/api/search/typedefs_a.js create mode 100644 include/glm/doc/api/search/typedefs_b.html create mode 100644 include/glm/doc/api/search/typedefs_b.js create mode 100644 include/glm/doc/api/search/typedefs_c.html create mode 100644 include/glm/doc/api/search/typedefs_c.js create mode 100644 include/glm/doc/api/search/typedefs_d.html create mode 100644 include/glm/doc/api/search/typedefs_d.js create mode 100644 include/glm/doc/api/splitbar.png create mode 100644 include/glm/doc/api/sync_off.png create mode 100644 include/glm/doc/api/sync_on.png create mode 100644 include/glm/doc/api/tab_a.png create mode 100644 include/glm/doc/api/tab_b.png create mode 100644 include/glm/doc/api/tab_h.png create mode 100644 include/glm/doc/api/tab_s.png create mode 100644 include/glm/doc/api/tabs.css create mode 100644 include/glm/doc/man.doxy create mode 100644 include/glm/doc/manual.pdf create mode 100644 include/glm/doc/manual/frontpage1.png create mode 100644 include/glm/doc/manual/frontpage2.png create mode 100644 include/glm/doc/manual/g-truc.png create mode 100644 include/glm/doc/manual/logo-mini.png create mode 100644 include/glm/doc/manual/logo.png create mode 100644 include/glm/doc/manual/noise-perlin1.jpg create mode 100644 include/glm/doc/manual/noise-perlin2.jpg create mode 100644 include/glm/doc/manual/noise-perlin3.jpg create mode 100644 include/glm/doc/manual/noise-perlin4.png create mode 100644 include/glm/doc/manual/noise-perlin5.png create mode 100644 include/glm/doc/manual/noise-perlin6.png create mode 100644 include/glm/doc/manual/noise-simplex1.jpg create mode 100644 include/glm/doc/manual/noise-simplex2.jpg create mode 100644 include/glm/doc/manual/noise-simplex3.jpg create mode 100644 include/glm/doc/manual/random-ballrand.png create mode 100644 include/glm/doc/manual/random-circularrand.png create mode 100644 include/glm/doc/manual/random-diskrand.png create mode 100644 include/glm/doc/manual/random-gaussrand.png create mode 100644 include/glm/doc/manual/random-linearrand.png create mode 100644 include/glm/doc/manual/random-sphericalrand.png create mode 100644 include/glm/doc/manual/references-cinder.png create mode 100644 include/glm/doc/manual/references-glsl4book.jpg create mode 100644 include/glm/doc/manual/references-leosfortune.jpeg create mode 100644 include/glm/doc/manual/references-leosfortune2.jpg create mode 100644 include/glm/doc/manual/references-opencloth1.png create mode 100644 include/glm/doc/manual/references-opencloth3.png create mode 100644 include/glm/doc/manual/references-outerra1.jpg create mode 100644 include/glm/doc/manual/references-outerra2.jpg create mode 100644 include/glm/doc/manual/references-outerra3.jpg create mode 100644 include/glm/doc/manual/references-outerra4.jpg create mode 100644 include/glm/doc/theme/bc_s.png create mode 100644 include/glm/doc/theme/bdwn.png create mode 100644 include/glm/doc/theme/closed.png create mode 100644 include/glm/doc/theme/doc.png create mode 100644 include/glm/doc/theme/doxygen.css create mode 100644 include/glm/doc/theme/doxygen.png create mode 100644 include/glm/doc/theme/folderclosed.png create mode 100644 include/glm/doc/theme/folderopen.png create mode 100644 include/glm/doc/theme/logo-mini.png create mode 100644 include/glm/doc/theme/nav_f.png create mode 100644 include/glm/doc/theme/nav_g.png create mode 100644 include/glm/doc/theme/nav_h.png create mode 100644 include/glm/doc/theme/open.png create mode 100644 include/glm/doc/theme/splitbar.png create mode 100644 include/glm/doc/theme/sync_off.png create mode 100644 include/glm/doc/theme/sync_on.png create mode 100644 include/glm/doc/theme/tab_a.png create mode 100644 include/glm/doc/theme/tab_b.png create mode 100644 include/glm/doc/theme/tab_h.png create mode 100644 include/glm/doc/theme/tab_s.png create mode 100644 include/glm/glm/CMakeLists.txt create mode 100644 include/glm/glm/common.hpp create mode 100644 include/glm/glm/detail/_features.hpp create mode 100644 include/glm/glm/detail/_fixes.hpp create mode 100644 include/glm/glm/detail/_noise.hpp create mode 100644 include/glm/glm/detail/_swizzle.hpp create mode 100644 include/glm/glm/detail/_swizzle_func.hpp create mode 100644 include/glm/glm/detail/_vectorize.hpp create mode 100644 include/glm/glm/detail/compute_common.hpp create mode 100644 include/glm/glm/detail/compute_vector_decl.hpp create mode 100644 include/glm/glm/detail/compute_vector_relational.hpp create mode 100644 include/glm/glm/detail/func_common.inl create mode 100644 include/glm/glm/detail/func_common_simd.inl create mode 100644 include/glm/glm/detail/func_exponential.inl create mode 100644 include/glm/glm/detail/func_exponential_simd.inl create mode 100644 include/glm/glm/detail/func_geometric.inl create mode 100644 include/glm/glm/detail/func_geometric_simd.inl create mode 100644 include/glm/glm/detail/func_integer.inl create mode 100644 include/glm/glm/detail/func_integer_simd.inl create mode 100644 include/glm/glm/detail/func_matrix.inl create mode 100644 include/glm/glm/detail/func_matrix_simd.inl create mode 100644 include/glm/glm/detail/func_packing.inl create mode 100644 include/glm/glm/detail/func_packing_simd.inl create mode 100644 include/glm/glm/detail/func_trigonometric.inl create mode 100644 include/glm/glm/detail/func_trigonometric_simd.inl create mode 100644 include/glm/glm/detail/func_vector_relational.inl create mode 100644 include/glm/glm/detail/func_vector_relational_simd.inl create mode 100644 include/glm/glm/detail/glm.cpp create mode 100644 include/glm/glm/detail/qualifier.hpp create mode 100644 include/glm/glm/detail/setup.hpp create mode 100644 include/glm/glm/detail/type_float.hpp create mode 100644 include/glm/glm/detail/type_half.hpp create mode 100644 include/glm/glm/detail/type_half.inl create mode 100644 include/glm/glm/detail/type_mat2x2.hpp create mode 100644 include/glm/glm/detail/type_mat2x2.inl create mode 100644 include/glm/glm/detail/type_mat2x3.hpp create mode 100644 include/glm/glm/detail/type_mat2x3.inl create mode 100644 include/glm/glm/detail/type_mat2x4.hpp create mode 100644 include/glm/glm/detail/type_mat2x4.inl create mode 100644 include/glm/glm/detail/type_mat3x2.hpp create mode 100644 include/glm/glm/detail/type_mat3x2.inl create mode 100644 include/glm/glm/detail/type_mat3x3.hpp create mode 100644 include/glm/glm/detail/type_mat3x3.inl create mode 100644 include/glm/glm/detail/type_mat3x4.hpp create mode 100644 include/glm/glm/detail/type_mat3x4.inl create mode 100644 include/glm/glm/detail/type_mat4x2.hpp create mode 100644 include/glm/glm/detail/type_mat4x2.inl create mode 100644 include/glm/glm/detail/type_mat4x3.hpp create mode 100644 include/glm/glm/detail/type_mat4x3.inl create mode 100644 include/glm/glm/detail/type_mat4x4.hpp create mode 100644 include/glm/glm/detail/type_mat4x4.inl create mode 100644 include/glm/glm/detail/type_mat4x4_simd.inl create mode 100644 include/glm/glm/detail/type_quat.hpp create mode 100644 include/glm/glm/detail/type_quat.inl create mode 100644 include/glm/glm/detail/type_quat_simd.inl create mode 100644 include/glm/glm/detail/type_vec1.hpp create mode 100644 include/glm/glm/detail/type_vec1.inl create mode 100644 include/glm/glm/detail/type_vec2.hpp create mode 100644 include/glm/glm/detail/type_vec2.inl create mode 100644 include/glm/glm/detail/type_vec3.hpp create mode 100644 include/glm/glm/detail/type_vec3.inl create mode 100644 include/glm/glm/detail/type_vec4.hpp create mode 100644 include/glm/glm/detail/type_vec4.inl create mode 100644 include/glm/glm/detail/type_vec_simd.inl create mode 100644 include/glm/glm/exponential.hpp create mode 100644 include/glm/glm/ext.hpp create mode 100644 include/glm/glm/ext/_matrix_vectorize.hpp create mode 100644 include/glm/glm/ext/matrix_clip_space.hpp create mode 100644 include/glm/glm/ext/matrix_clip_space.inl create mode 100644 include/glm/glm/ext/matrix_common.hpp create mode 100644 include/glm/glm/ext/matrix_common.inl create mode 100644 include/glm/glm/ext/matrix_double2x2.hpp create mode 100644 include/glm/glm/ext/matrix_double2x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double2x3.hpp create mode 100644 include/glm/glm/ext/matrix_double2x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double2x4.hpp create mode 100644 include/glm/glm/ext/matrix_double2x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double3x2.hpp create mode 100644 include/glm/glm/ext/matrix_double3x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double3x3.hpp create mode 100644 include/glm/glm/ext/matrix_double3x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double3x4.hpp create mode 100644 include/glm/glm/ext/matrix_double3x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double4x2.hpp create mode 100644 include/glm/glm/ext/matrix_double4x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double4x3.hpp create mode 100644 include/glm/glm/ext/matrix_double4x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_double4x4.hpp create mode 100644 include/glm/glm/ext/matrix_double4x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float2x2.hpp create mode 100644 include/glm/glm/ext/matrix_float2x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float2x3.hpp create mode 100644 include/glm/glm/ext/matrix_float2x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float2x4.hpp create mode 100644 include/glm/glm/ext/matrix_float2x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float3x2.hpp create mode 100644 include/glm/glm/ext/matrix_float3x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float3x3.hpp create mode 100644 include/glm/glm/ext/matrix_float3x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float3x4.hpp create mode 100644 include/glm/glm/ext/matrix_float3x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float4x2.hpp create mode 100644 include/glm/glm/ext/matrix_float4x2_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float4x3.hpp create mode 100644 include/glm/glm/ext/matrix_float4x3_precision.hpp create mode 100644 include/glm/glm/ext/matrix_float4x4.hpp create mode 100644 include/glm/glm/ext/matrix_float4x4_precision.hpp create mode 100644 include/glm/glm/ext/matrix_int2x2.hpp create mode 100644 include/glm/glm/ext/matrix_int2x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int2x3.hpp create mode 100644 include/glm/glm/ext/matrix_int2x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int2x4.hpp create mode 100644 include/glm/glm/ext/matrix_int2x4_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int3x2.hpp create mode 100644 include/glm/glm/ext/matrix_int3x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int3x3.hpp create mode 100644 include/glm/glm/ext/matrix_int3x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int3x4.hpp create mode 100644 include/glm/glm/ext/matrix_int3x4_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int4x2.hpp create mode 100644 include/glm/glm/ext/matrix_int4x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int4x3.hpp create mode 100644 include/glm/glm/ext/matrix_int4x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_int4x4.hpp create mode 100644 include/glm/glm/ext/matrix_int4x4_sized.hpp create mode 100644 include/glm/glm/ext/matrix_integer.hpp create mode 100644 include/glm/glm/ext/matrix_integer.inl create mode 100644 include/glm/glm/ext/matrix_projection.hpp create mode 100644 include/glm/glm/ext/matrix_projection.inl create mode 100644 include/glm/glm/ext/matrix_relational.hpp create mode 100644 include/glm/glm/ext/matrix_relational.inl create mode 100644 include/glm/glm/ext/matrix_transform.hpp create mode 100644 include/glm/glm/ext/matrix_transform.inl create mode 100644 include/glm/glm/ext/matrix_uint2x2.hpp create mode 100644 include/glm/glm/ext/matrix_uint2x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint2x3.hpp create mode 100644 include/glm/glm/ext/matrix_uint2x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint2x4.hpp create mode 100644 include/glm/glm/ext/matrix_uint2x4_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x2.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x3.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x4.hpp create mode 100644 include/glm/glm/ext/matrix_uint3x4_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x2.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x2_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x3.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x3_sized.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x4.hpp create mode 100644 include/glm/glm/ext/matrix_uint4x4_sized.hpp create mode 100644 include/glm/glm/ext/quaternion_common.hpp create mode 100644 include/glm/glm/ext/quaternion_common.inl create mode 100644 include/glm/glm/ext/quaternion_common_simd.inl create mode 100644 include/glm/glm/ext/quaternion_double.hpp create mode 100644 include/glm/glm/ext/quaternion_double_precision.hpp create mode 100644 include/glm/glm/ext/quaternion_exponential.hpp create mode 100644 include/glm/glm/ext/quaternion_exponential.inl create mode 100644 include/glm/glm/ext/quaternion_float.hpp create mode 100644 include/glm/glm/ext/quaternion_float_precision.hpp create mode 100644 include/glm/glm/ext/quaternion_geometric.hpp create mode 100644 include/glm/glm/ext/quaternion_geometric.inl create mode 100644 include/glm/glm/ext/quaternion_relational.hpp create mode 100644 include/glm/glm/ext/quaternion_relational.inl create mode 100644 include/glm/glm/ext/quaternion_transform.hpp create mode 100644 include/glm/glm/ext/quaternion_transform.inl create mode 100644 include/glm/glm/ext/quaternion_trigonometric.hpp create mode 100644 include/glm/glm/ext/quaternion_trigonometric.inl create mode 100644 include/glm/glm/ext/scalar_common.hpp create mode 100644 include/glm/glm/ext/scalar_common.inl create mode 100644 include/glm/glm/ext/scalar_constants.hpp create mode 100644 include/glm/glm/ext/scalar_constants.inl create mode 100644 include/glm/glm/ext/scalar_int_sized.hpp create mode 100644 include/glm/glm/ext/scalar_integer.hpp create mode 100644 include/glm/glm/ext/scalar_integer.inl create mode 100644 include/glm/glm/ext/scalar_packing.hpp create mode 100644 include/glm/glm/ext/scalar_packing.inl create mode 100644 include/glm/glm/ext/scalar_reciprocal.hpp create mode 100644 include/glm/glm/ext/scalar_reciprocal.inl create mode 100644 include/glm/glm/ext/scalar_relational.hpp create mode 100644 include/glm/glm/ext/scalar_relational.inl create mode 100644 include/glm/glm/ext/scalar_uint_sized.hpp create mode 100644 include/glm/glm/ext/scalar_ulp.hpp create mode 100644 include/glm/glm/ext/scalar_ulp.inl create mode 100644 include/glm/glm/ext/vector_bool1.hpp create mode 100644 include/glm/glm/ext/vector_bool1_precision.hpp create mode 100644 include/glm/glm/ext/vector_bool2.hpp create mode 100644 include/glm/glm/ext/vector_bool2_precision.hpp create mode 100644 include/glm/glm/ext/vector_bool3.hpp create mode 100644 include/glm/glm/ext/vector_bool3_precision.hpp create mode 100644 include/glm/glm/ext/vector_bool4.hpp create mode 100644 include/glm/glm/ext/vector_bool4_precision.hpp create mode 100644 include/glm/glm/ext/vector_common.hpp create mode 100644 include/glm/glm/ext/vector_common.inl create mode 100644 include/glm/glm/ext/vector_double1.hpp create mode 100644 include/glm/glm/ext/vector_double1_precision.hpp create mode 100644 include/glm/glm/ext/vector_double2.hpp create mode 100644 include/glm/glm/ext/vector_double2_precision.hpp create mode 100644 include/glm/glm/ext/vector_double3.hpp create mode 100644 include/glm/glm/ext/vector_double3_precision.hpp create mode 100644 include/glm/glm/ext/vector_double4.hpp create mode 100644 include/glm/glm/ext/vector_double4_precision.hpp create mode 100644 include/glm/glm/ext/vector_float1.hpp create mode 100644 include/glm/glm/ext/vector_float1_precision.hpp create mode 100644 include/glm/glm/ext/vector_float2.hpp create mode 100644 include/glm/glm/ext/vector_float2_precision.hpp create mode 100644 include/glm/glm/ext/vector_float3.hpp create mode 100644 include/glm/glm/ext/vector_float3_precision.hpp create mode 100644 include/glm/glm/ext/vector_float4.hpp create mode 100644 include/glm/glm/ext/vector_float4_precision.hpp create mode 100644 include/glm/glm/ext/vector_int1.hpp create mode 100644 include/glm/glm/ext/vector_int1_sized.hpp create mode 100644 include/glm/glm/ext/vector_int2.hpp create mode 100644 include/glm/glm/ext/vector_int2_sized.hpp create mode 100644 include/glm/glm/ext/vector_int3.hpp create mode 100644 include/glm/glm/ext/vector_int3_sized.hpp create mode 100644 include/glm/glm/ext/vector_int4.hpp create mode 100644 include/glm/glm/ext/vector_int4_sized.hpp create mode 100644 include/glm/glm/ext/vector_integer.hpp create mode 100644 include/glm/glm/ext/vector_integer.inl create mode 100644 include/glm/glm/ext/vector_packing.hpp create mode 100644 include/glm/glm/ext/vector_packing.inl create mode 100644 include/glm/glm/ext/vector_reciprocal.hpp create mode 100644 include/glm/glm/ext/vector_reciprocal.inl create mode 100644 include/glm/glm/ext/vector_relational.hpp create mode 100644 include/glm/glm/ext/vector_relational.inl create mode 100644 include/glm/glm/ext/vector_uint1.hpp create mode 100644 include/glm/glm/ext/vector_uint1_sized.hpp create mode 100644 include/glm/glm/ext/vector_uint2.hpp create mode 100644 include/glm/glm/ext/vector_uint2_sized.hpp create mode 100644 include/glm/glm/ext/vector_uint3.hpp create mode 100644 include/glm/glm/ext/vector_uint3_sized.hpp create mode 100644 include/glm/glm/ext/vector_uint4.hpp create mode 100644 include/glm/glm/ext/vector_uint4_sized.hpp create mode 100644 include/glm/glm/ext/vector_ulp.hpp create mode 100644 include/glm/glm/ext/vector_ulp.inl create mode 100644 include/glm/glm/fwd.hpp create mode 100644 include/glm/glm/geometric.hpp create mode 100644 include/glm/glm/glm.cppm create mode 100644 include/glm/glm/glm.hpp create mode 100644 include/glm/glm/gtc/bitfield.hpp create mode 100644 include/glm/glm/gtc/bitfield.inl create mode 100644 include/glm/glm/gtc/color_space.hpp create mode 100644 include/glm/glm/gtc/color_space.inl create mode 100644 include/glm/glm/gtc/constants.hpp create mode 100644 include/glm/glm/gtc/constants.inl create mode 100644 include/glm/glm/gtc/epsilon.hpp create mode 100644 include/glm/glm/gtc/epsilon.inl create mode 100644 include/glm/glm/gtc/integer.hpp create mode 100644 include/glm/glm/gtc/integer.inl create mode 100644 include/glm/glm/gtc/matrix_access.hpp create mode 100644 include/glm/glm/gtc/matrix_access.inl create mode 100644 include/glm/glm/gtc/matrix_integer.hpp create mode 100644 include/glm/glm/gtc/matrix_inverse.hpp create mode 100644 include/glm/glm/gtc/matrix_inverse.inl create mode 100644 include/glm/glm/gtc/matrix_transform.hpp create mode 100644 include/glm/glm/gtc/matrix_transform.inl create mode 100644 include/glm/glm/gtc/noise.hpp create mode 100644 include/glm/glm/gtc/noise.inl create mode 100644 include/glm/glm/gtc/packing.hpp create mode 100644 include/glm/glm/gtc/packing.inl create mode 100644 include/glm/glm/gtc/quaternion.hpp create mode 100644 include/glm/glm/gtc/quaternion.inl create mode 100644 include/glm/glm/gtc/quaternion_simd.inl create mode 100644 include/glm/glm/gtc/random.hpp create mode 100644 include/glm/glm/gtc/random.inl create mode 100644 include/glm/glm/gtc/reciprocal.hpp create mode 100644 include/glm/glm/gtc/round.hpp create mode 100644 include/glm/glm/gtc/round.inl create mode 100644 include/glm/glm/gtc/type_aligned.hpp create mode 100644 include/glm/glm/gtc/type_precision.hpp create mode 100644 include/glm/glm/gtc/type_precision.inl create mode 100644 include/glm/glm/gtc/type_ptr.hpp create mode 100644 include/glm/glm/gtc/type_ptr.inl create mode 100644 include/glm/glm/gtc/ulp.hpp create mode 100644 include/glm/glm/gtc/ulp.inl create mode 100644 include/glm/glm/gtc/vec1.hpp create mode 100644 include/glm/glm/gtx/associated_min_max.hpp create mode 100644 include/glm/glm/gtx/associated_min_max.inl create mode 100644 include/glm/glm/gtx/bit.hpp create mode 100644 include/glm/glm/gtx/bit.inl create mode 100644 include/glm/glm/gtx/closest_point.hpp create mode 100644 include/glm/glm/gtx/closest_point.inl create mode 100644 include/glm/glm/gtx/color_encoding.hpp create mode 100644 include/glm/glm/gtx/color_encoding.inl create mode 100644 include/glm/glm/gtx/color_space.hpp create mode 100644 include/glm/glm/gtx/color_space.inl create mode 100644 include/glm/glm/gtx/color_space_YCoCg.hpp create mode 100644 include/glm/glm/gtx/color_space_YCoCg.inl create mode 100644 include/glm/glm/gtx/common.hpp create mode 100644 include/glm/glm/gtx/common.inl create mode 100644 include/glm/glm/gtx/compatibility.hpp create mode 100644 include/glm/glm/gtx/compatibility.inl create mode 100644 include/glm/glm/gtx/component_wise.hpp create mode 100644 include/glm/glm/gtx/component_wise.inl create mode 100644 include/glm/glm/gtx/dual_quaternion.hpp create mode 100644 include/glm/glm/gtx/dual_quaternion.inl create mode 100644 include/glm/glm/gtx/easing.hpp create mode 100644 include/glm/glm/gtx/easing.inl create mode 100644 include/glm/glm/gtx/euler_angles.hpp create mode 100644 include/glm/glm/gtx/euler_angles.inl create mode 100644 include/glm/glm/gtx/extend.hpp create mode 100644 include/glm/glm/gtx/extend.inl create mode 100644 include/glm/glm/gtx/extended_min_max.hpp create mode 100644 include/glm/glm/gtx/extended_min_max.inl create mode 100644 include/glm/glm/gtx/exterior_product.hpp create mode 100644 include/glm/glm/gtx/exterior_product.inl create mode 100644 include/glm/glm/gtx/fast_exponential.hpp create mode 100644 include/glm/glm/gtx/fast_exponential.inl create mode 100644 include/glm/glm/gtx/fast_square_root.hpp create mode 100644 include/glm/glm/gtx/fast_square_root.inl create mode 100644 include/glm/glm/gtx/fast_trigonometry.hpp create mode 100644 include/glm/glm/gtx/fast_trigonometry.inl create mode 100644 include/glm/glm/gtx/float_normalize.inl create mode 100644 include/glm/glm/gtx/functions.hpp create mode 100644 include/glm/glm/gtx/functions.inl create mode 100644 include/glm/glm/gtx/gradient_paint.hpp create mode 100644 include/glm/glm/gtx/gradient_paint.inl create mode 100644 include/glm/glm/gtx/handed_coordinate_space.hpp create mode 100644 include/glm/glm/gtx/handed_coordinate_space.inl create mode 100644 include/glm/glm/gtx/hash.hpp create mode 100644 include/glm/glm/gtx/hash.inl create mode 100644 include/glm/glm/gtx/integer.hpp create mode 100644 include/glm/glm/gtx/integer.inl create mode 100644 include/glm/glm/gtx/intersect.hpp create mode 100644 include/glm/glm/gtx/intersect.inl create mode 100644 include/glm/glm/gtx/io.hpp create mode 100644 include/glm/glm/gtx/io.inl create mode 100644 include/glm/glm/gtx/iteration.hpp create mode 100644 include/glm/glm/gtx/iteration.inl create mode 100644 include/glm/glm/gtx/log_base.hpp create mode 100644 include/glm/glm/gtx/log_base.inl create mode 100644 include/glm/glm/gtx/matrix_cross_product.hpp create mode 100644 include/glm/glm/gtx/matrix_cross_product.inl create mode 100644 include/glm/glm/gtx/matrix_decompose.hpp create mode 100644 include/glm/glm/gtx/matrix_decompose.inl create mode 100644 include/glm/glm/gtx/matrix_factorisation.hpp create mode 100644 include/glm/glm/gtx/matrix_factorisation.inl create mode 100644 include/glm/glm/gtx/matrix_interpolation.hpp create mode 100644 include/glm/glm/gtx/matrix_interpolation.inl create mode 100644 include/glm/glm/gtx/matrix_major_storage.hpp create mode 100644 include/glm/glm/gtx/matrix_major_storage.inl create mode 100644 include/glm/glm/gtx/matrix_operation.hpp create mode 100644 include/glm/glm/gtx/matrix_operation.inl create mode 100644 include/glm/glm/gtx/matrix_query.hpp create mode 100644 include/glm/glm/gtx/matrix_query.inl create mode 100644 include/glm/glm/gtx/matrix_transform_2d.hpp create mode 100644 include/glm/glm/gtx/matrix_transform_2d.inl create mode 100644 include/glm/glm/gtx/mixed_product.hpp create mode 100644 include/glm/glm/gtx/mixed_product.inl create mode 100644 include/glm/glm/gtx/norm.hpp create mode 100644 include/glm/glm/gtx/norm.inl create mode 100644 include/glm/glm/gtx/normal.hpp create mode 100644 include/glm/glm/gtx/normal.inl create mode 100644 include/glm/glm/gtx/normalize_dot.hpp create mode 100644 include/glm/glm/gtx/normalize_dot.inl create mode 100644 include/glm/glm/gtx/number_precision.hpp create mode 100644 include/glm/glm/gtx/optimum_pow.hpp create mode 100644 include/glm/glm/gtx/optimum_pow.inl create mode 100644 include/glm/glm/gtx/orthonormalize.hpp create mode 100644 include/glm/glm/gtx/orthonormalize.inl create mode 100644 include/glm/glm/gtx/pca.hpp create mode 100644 include/glm/glm/gtx/pca.inl create mode 100644 include/glm/glm/gtx/perpendicular.hpp create mode 100644 include/glm/glm/gtx/perpendicular.inl create mode 100644 include/glm/glm/gtx/polar_coordinates.hpp create mode 100644 include/glm/glm/gtx/polar_coordinates.inl create mode 100644 include/glm/glm/gtx/projection.hpp create mode 100644 include/glm/glm/gtx/projection.inl create mode 100644 include/glm/glm/gtx/quaternion.hpp create mode 100644 include/glm/glm/gtx/quaternion.inl create mode 100644 include/glm/glm/gtx/range.hpp create mode 100644 include/glm/glm/gtx/raw_data.hpp create mode 100644 include/glm/glm/gtx/raw_data.inl create mode 100644 include/glm/glm/gtx/rotate_normalized_axis.hpp create mode 100644 include/glm/glm/gtx/rotate_normalized_axis.inl create mode 100644 include/glm/glm/gtx/rotate_vector.hpp create mode 100644 include/glm/glm/gtx/rotate_vector.inl create mode 100644 include/glm/glm/gtx/scalar_multiplication.hpp create mode 100644 include/glm/glm/gtx/scalar_relational.hpp create mode 100644 include/glm/glm/gtx/scalar_relational.inl create mode 100644 include/glm/glm/gtx/spline.hpp create mode 100644 include/glm/glm/gtx/spline.inl create mode 100644 include/glm/glm/gtx/std_based_type.hpp create mode 100644 include/glm/glm/gtx/std_based_type.inl create mode 100644 include/glm/glm/gtx/string_cast.hpp create mode 100644 include/glm/glm/gtx/string_cast.inl create mode 100644 include/glm/glm/gtx/structured_bindings.hpp create mode 100644 include/glm/glm/gtx/structured_bindings.inl create mode 100644 include/glm/glm/gtx/texture.hpp create mode 100644 include/glm/glm/gtx/texture.inl create mode 100644 include/glm/glm/gtx/transform.hpp create mode 100644 include/glm/glm/gtx/transform.inl create mode 100644 include/glm/glm/gtx/transform2.hpp create mode 100644 include/glm/glm/gtx/transform2.inl create mode 100644 include/glm/glm/gtx/type_aligned.hpp create mode 100644 include/glm/glm/gtx/type_aligned.inl create mode 100644 include/glm/glm/gtx/type_trait.hpp create mode 100644 include/glm/glm/gtx/type_trait.inl create mode 100644 include/glm/glm/gtx/vec_swizzle.hpp create mode 100644 include/glm/glm/gtx/vector_angle.hpp create mode 100644 include/glm/glm/gtx/vector_angle.inl create mode 100644 include/glm/glm/gtx/vector_query.hpp create mode 100644 include/glm/glm/gtx/vector_query.inl create mode 100644 include/glm/glm/gtx/wrap.hpp create mode 100644 include/glm/glm/gtx/wrap.inl create mode 100644 include/glm/glm/integer.hpp create mode 100644 include/glm/glm/mat2x2.hpp create mode 100644 include/glm/glm/mat2x3.hpp create mode 100644 include/glm/glm/mat2x4.hpp create mode 100644 include/glm/glm/mat3x2.hpp create mode 100644 include/glm/glm/mat3x3.hpp create mode 100644 include/glm/glm/mat3x4.hpp create mode 100644 include/glm/glm/mat4x2.hpp create mode 100644 include/glm/glm/mat4x3.hpp create mode 100644 include/glm/glm/mat4x4.hpp create mode 100644 include/glm/glm/matrix.hpp create mode 100644 include/glm/glm/packing.hpp create mode 100644 include/glm/glm/simd/common.h create mode 100644 include/glm/glm/simd/exponential.h create mode 100644 include/glm/glm/simd/geometric.h create mode 100644 include/glm/glm/simd/integer.h create mode 100644 include/glm/glm/simd/matrix.h create mode 100644 include/glm/glm/simd/neon.h create mode 100644 include/glm/glm/simd/packing.h create mode 100644 include/glm/glm/simd/platform.h create mode 100644 include/glm/glm/simd/trigonometric.h create mode 100644 include/glm/glm/simd/vector_relational.h create mode 100644 include/glm/glm/trigonometric.hpp create mode 100644 include/glm/glm/vec2.hpp create mode 100644 include/glm/glm/vec3.hpp create mode 100644 include/glm/glm/vec4.hpp create mode 100644 include/glm/glm/vector_relational.hpp create mode 100644 include/glm/manual.md create mode 100644 include/glm/readme.md create mode 100644 include/glm/test/CMakeLists.txt create mode 100644 include/glm/test/bug/CMakeLists.txt create mode 100644 include/glm/test/bug/bug_ms_vec_static.cpp create mode 100644 include/glm/test/cmake/CMakeLists.txt create mode 100644 include/glm/test/cmake/test_find_glm.cpp create mode 100644 include/glm/test/core/CMakeLists.txt create mode 100644 include/glm/test/core/core_cpp_constexpr.cpp create mode 100644 include/glm/test/core/core_cpp_defaulted_ctor.cpp create mode 100644 include/glm/test/core/core_force_aligned_gentypes.cpp create mode 100644 include/glm/test/core/core_force_arch_unknown.cpp create mode 100644 include/glm/test/core/core_force_compiler_unknown.cpp create mode 100644 include/glm/test/core/core_force_ctor_init.cpp create mode 100644 include/glm/test/core/core_force_depth_zero_to_one.cpp create mode 100644 include/glm/test/core/core_force_explicit_ctor.cpp create mode 100644 include/glm/test/core/core_force_inline.cpp create mode 100644 include/glm/test/core/core_force_intrinsics.cpp create mode 100644 include/glm/test/core/core_force_left_handed.cpp create mode 100644 include/glm/test/core/core_force_platform_unknown.cpp create mode 100644 include/glm/test/core/core_force_pure.cpp create mode 100644 include/glm/test/core/core_force_quat_wxyz.cpp create mode 100644 include/glm/test/core/core_force_size_t_length.cpp create mode 100644 include/glm/test/core/core_force_unrestricted_gentype.cpp create mode 100644 include/glm/test/core/core_force_xyzw_only.cpp create mode 100644 include/glm/test/core/core_func_common.cpp create mode 100644 include/glm/test/core/core_func_exponential.cpp create mode 100644 include/glm/test/core/core_func_geometric.cpp create mode 100644 include/glm/test/core/core_func_integer.cpp create mode 100644 include/glm/test/core/core_func_integer_bit_count.cpp create mode 100644 include/glm/test/core/core_func_integer_find_lsb.cpp create mode 100644 include/glm/test/core/core_func_integer_find_msb.cpp create mode 100644 include/glm/test/core/core_func_matrix.cpp create mode 100644 include/glm/test/core/core_func_noise.cpp create mode 100644 include/glm/test/core/core_func_packing.cpp create mode 100644 include/glm/test/core/core_func_swizzle.cpp create mode 100644 include/glm/test/core/core_func_trigonometric.cpp create mode 100644 include/glm/test/core/core_func_vector_relational.cpp create mode 100644 include/glm/test/core/core_setup_force_cxx03.cpp create mode 100644 include/glm/test/core/core_setup_force_cxx98.cpp create mode 100644 include/glm/test/core/core_setup_force_cxx_unknown.cpp create mode 100644 include/glm/test/core/core_setup_force_size_t_length.cpp create mode 100644 include/glm/test/core/core_setup_message.cpp create mode 100644 include/glm/test/core/core_setup_platform_unknown.cpp create mode 100644 include/glm/test/core/core_setup_precision.cpp create mode 100644 include/glm/test/core/core_type_aligned.cpp create mode 100644 include/glm/test/core/core_type_cast.cpp create mode 100644 include/glm/test/core/core_type_ctor.cpp create mode 100644 include/glm/test/core/core_type_int.cpp create mode 100644 include/glm/test/core/core_type_length.cpp create mode 100644 include/glm/test/core/core_type_mat2x2.cpp create mode 100644 include/glm/test/core/core_type_mat2x3.cpp create mode 100644 include/glm/test/core/core_type_mat2x4.cpp create mode 100644 include/glm/test/core/core_type_mat3x2.cpp create mode 100644 include/glm/test/core/core_type_mat3x3.cpp create mode 100644 include/glm/test/core/core_type_mat3x4.cpp create mode 100644 include/glm/test/core/core_type_mat4x2.cpp create mode 100644 include/glm/test/core/core_type_mat4x3.cpp create mode 100644 include/glm/test/core/core_type_mat4x4.cpp create mode 100644 include/glm/test/core/core_type_vec1.cpp create mode 100644 include/glm/test/core/core_type_vec2.cpp create mode 100644 include/glm/test/core/core_type_vec3.cpp create mode 100644 include/glm/test/core/core_type_vec4.cpp create mode 100644 include/glm/test/ext/CMakeLists.txt create mode 100644 include/glm/test/ext/ext_matrix_clip_space.cpp create mode 100644 include/glm/test/ext/ext_matrix_common.cpp create mode 100644 include/glm/test/ext/ext_matrix_int2x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int2x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int2x4_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int3x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int3x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int3x4_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int4x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int4x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_int4x4_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_integer.cpp create mode 100644 include/glm/test/ext/ext_matrix_projection.cpp create mode 100644 include/glm/test/ext/ext_matrix_relational.cpp create mode 100644 include/glm/test/ext/ext_matrix_transform.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint2x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint2x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint2x4_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint3x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint3x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint3x4_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint4x2_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint4x3_sized.cpp create mode 100644 include/glm/test/ext/ext_matrix_uint4x4_sized.cpp create mode 100644 include/glm/test/ext/ext_quaternion_common.cpp create mode 100644 include/glm/test/ext/ext_quaternion_exponential.cpp create mode 100644 include/glm/test/ext/ext_quaternion_geometric.cpp create mode 100644 include/glm/test/ext/ext_quaternion_relational.cpp create mode 100644 include/glm/test/ext/ext_quaternion_transform.cpp create mode 100644 include/glm/test/ext/ext_quaternion_trigonometric.cpp create mode 100644 include/glm/test/ext/ext_quaternion_type.cpp create mode 100644 include/glm/test/ext/ext_scalar_common.cpp create mode 100644 include/glm/test/ext/ext_scalar_constants.cpp create mode 100644 include/glm/test/ext/ext_scalar_int_sized.cpp create mode 100644 include/glm/test/ext/ext_scalar_integer.cpp create mode 100644 include/glm/test/ext/ext_scalar_packing.cpp create mode 100644 include/glm/test/ext/ext_scalar_reciprocal.cpp create mode 100644 include/glm/test/ext/ext_scalar_relational.cpp create mode 100644 include/glm/test/ext/ext_scalar_uint_sized.cpp create mode 100644 include/glm/test/ext/ext_scalar_ulp.cpp create mode 100644 include/glm/test/ext/ext_vec1.cpp create mode 100644 include/glm/test/ext/ext_vector_bool1.cpp create mode 100644 include/glm/test/ext/ext_vector_common.cpp create mode 100644 include/glm/test/ext/ext_vector_iec559.cpp create mode 100644 include/glm/test/ext/ext_vector_int1_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_int2_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_int3_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_int4_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_integer.cpp create mode 100644 include/glm/test/ext/ext_vector_integer_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_packing.cpp create mode 100644 include/glm/test/ext/ext_vector_reciprocal.cpp create mode 100644 include/glm/test/ext/ext_vector_relational.cpp create mode 100644 include/glm/test/ext/ext_vector_uint1_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_uint2_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_uint3_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_uint4_sized.cpp create mode 100644 include/glm/test/ext/ext_vector_ulp.cpp create mode 100644 include/glm/test/glm.cppcheck create mode 100644 include/glm/test/gtc/CMakeLists.txt create mode 100644 include/glm/test/gtc/gtc_bitfield.cpp create mode 100644 include/glm/test/gtc/gtc_color_space.cpp create mode 100644 include/glm/test/gtc/gtc_constants.cpp create mode 100644 include/glm/test/gtc/gtc_epsilon.cpp create mode 100644 include/glm/test/gtc/gtc_integer.cpp create mode 100644 include/glm/test/gtc/gtc_matrix_access.cpp create mode 100644 include/glm/test/gtc/gtc_matrix_integer.cpp create mode 100644 include/glm/test/gtc/gtc_matrix_inverse.cpp create mode 100644 include/glm/test/gtc/gtc_matrix_transform.cpp create mode 100644 include/glm/test/gtc/gtc_noise.cpp create mode 100644 include/glm/test/gtc/gtc_packing.cpp create mode 100644 include/glm/test/gtc/gtc_quaternion.cpp create mode 100644 include/glm/test/gtc/gtc_random.cpp create mode 100644 include/glm/test/gtc/gtc_reciprocal.cpp create mode 100644 include/glm/test/gtc/gtc_round.cpp create mode 100644 include/glm/test/gtc/gtc_type_aligned.cpp create mode 100644 include/glm/test/gtc/gtc_type_precision.cpp create mode 100644 include/glm/test/gtc/gtc_type_ptr.cpp create mode 100644 include/glm/test/gtc/gtc_ulp.cpp create mode 100644 include/glm/test/gtc/gtc_user_defined_types.cpp create mode 100644 include/glm/test/gtc/gtc_vec1.cpp create mode 100644 include/glm/test/gtx/CMakeLists.txt create mode 100644 include/glm/test/gtx/gtx.cpp create mode 100644 include/glm/test/gtx/gtx_associated_min_max.cpp create mode 100644 include/glm/test/gtx/gtx_closest_point.cpp create mode 100644 include/glm/test/gtx/gtx_color_encoding.cpp create mode 100644 include/glm/test/gtx/gtx_color_space.cpp create mode 100644 include/glm/test/gtx/gtx_color_space_YCoCg.cpp create mode 100644 include/glm/test/gtx/gtx_common.cpp create mode 100644 include/glm/test/gtx/gtx_compatibility.cpp create mode 100644 include/glm/test/gtx/gtx_component_wise.cpp create mode 100644 include/glm/test/gtx/gtx_dual_quaternion.cpp create mode 100644 include/glm/test/gtx/gtx_easing.cpp create mode 100644 include/glm/test/gtx/gtx_euler_angle.cpp create mode 100644 include/glm/test/gtx/gtx_extend.cpp create mode 100644 include/glm/test/gtx/gtx_extended_min_max.cpp create mode 100644 include/glm/test/gtx/gtx_extented_min_max.cpp create mode 100644 include/glm/test/gtx/gtx_exterior_product.cpp create mode 100644 include/glm/test/gtx/gtx_fast_exponential.cpp create mode 100644 include/glm/test/gtx/gtx_fast_square_root.cpp create mode 100644 include/glm/test/gtx/gtx_fast_trigonometry.cpp create mode 100644 include/glm/test/gtx/gtx_functions.cpp create mode 100644 include/glm/test/gtx/gtx_gradient_paint.cpp create mode 100644 include/glm/test/gtx/gtx_handed_coordinate_space.cpp create mode 100644 include/glm/test/gtx/gtx_hash.cpp create mode 100644 include/glm/test/gtx/gtx_int_10_10_10_2.cpp create mode 100644 include/glm/test/gtx/gtx_integer.cpp create mode 100644 include/glm/test/gtx/gtx_intersect.cpp create mode 100644 include/glm/test/gtx/gtx_io.cpp create mode 100644 include/glm/test/gtx/gtx_iteration.cpp create mode 100644 include/glm/test/gtx/gtx_load.cpp create mode 100644 include/glm/test/gtx/gtx_log_base.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_cross_product.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_decompose.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_factorisation.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_interpolation.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_major_storage.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_operation.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_query.cpp create mode 100644 include/glm/test/gtx/gtx_matrix_transform_2d.cpp create mode 100644 include/glm/test/gtx/gtx_mixed_product.cpp create mode 100644 include/glm/test/gtx/gtx_norm.cpp create mode 100644 include/glm/test/gtx/gtx_normal.cpp create mode 100644 include/glm/test/gtx/gtx_normalize_dot.cpp create mode 100644 include/glm/test/gtx/gtx_optimum_pow.cpp create mode 100644 include/glm/test/gtx/gtx_orthonormalize.cpp create mode 100644 include/glm/test/gtx/gtx_pca.cpp create mode 100644 include/glm/test/gtx/gtx_perpendicular.cpp create mode 100644 include/glm/test/gtx/gtx_polar_coordinates.cpp create mode 100644 include/glm/test/gtx/gtx_projection.cpp create mode 100644 include/glm/test/gtx/gtx_quaternion.cpp create mode 100644 include/glm/test/gtx/gtx_random.cpp create mode 100644 include/glm/test/gtx/gtx_range.cpp create mode 100644 include/glm/test/gtx/gtx_rotate_normalized_axis.cpp create mode 100644 include/glm/test/gtx/gtx_rotate_vector.cpp create mode 100644 include/glm/test/gtx/gtx_scalar_multiplication.cpp create mode 100644 include/glm/test/gtx/gtx_scalar_relational.cpp create mode 100644 include/glm/test/gtx/gtx_simd_mat4.cpp create mode 100644 include/glm/test/gtx/gtx_simd_vec4.cpp create mode 100644 include/glm/test/gtx/gtx_spline.cpp create mode 100644 include/glm/test/gtx/gtx_string_cast.cpp create mode 100644 include/glm/test/gtx/gtx_structured_bindings.cpp create mode 100644 include/glm/test/gtx/gtx_texture.cpp create mode 100644 include/glm/test/gtx/gtx_transform2.cpp create mode 100644 include/glm/test/gtx/gtx_type_aligned.cpp create mode 100644 include/glm/test/gtx/gtx_type_trait.cpp create mode 100644 include/glm/test/gtx/gtx_vec_swizzle.cpp create mode 100644 include/glm/test/gtx/gtx_vector_angle.cpp create mode 100644 include/glm/test/gtx/gtx_vector_query.cpp create mode 100644 include/glm/test/gtx/gtx_wrap.cpp create mode 100644 include/glm/test/perf/CMakeLists.txt create mode 100644 include/glm/test/perf/perf_matrix_div.cpp create mode 100644 include/glm/test/perf/perf_matrix_inverse.cpp create mode 100644 include/glm/test/perf/perf_matrix_mul.cpp create mode 100644 include/glm/test/perf/perf_matrix_mul_vector.cpp create mode 100644 include/glm/test/perf/perf_matrix_transpose.cpp create mode 100644 include/glm/test/perf/perf_vector_mul_matrix.cpp create mode 100644 include/glm/util/autoexp.txt create mode 100644 include/glm/util/autoexp.vc2010.dat create mode 100644 include/glm/util/glm.natvis create mode 100644 include/glm/util/usertype.dat create mode 100644 main.cpp create mode 100644 shader.hpp create mode 100644 sphere.hpp create mode 100644 stb_image.cpp create mode 100644 stb_image.h create mode 100644 vertex.glsl create mode 100644 vertexshader.vs diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..e17c7ce --- /dev/null +++ b/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Add: [-Iinclude, -Wall, -std=c++11] diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4951f80 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +./build/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..25d60ac --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ + +CC = clang++ +CFLAGS = -Wall -Wextra -Iinclude +LIBS = -lglfw -lX11 -lXi -lXcursor -lGL -lasound -ldl -lm + +default: + mkdir -p build + $(CC) $(CFLAGS) main.cpp glad.c stb_image.cpp -o build/main $(LIBS) + +run: + cd build && prime-run ./main +full: + make && make run +clean: + rm -f build/main diff --git a/awesomeface.png b/awesomeface.png new file mode 100644 index 0000000000000000000000000000000000000000..9840caf3e7f4914ea1c6c15f688ffaf2cf44bae8 GIT binary patch literal 59277 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 Q0|5VhP*hj=DQ6!3fBcW&%>V!Z literal 0 HcmV?d00001 diff --git a/build/main b/build/main new file mode 100755 index 0000000000000000000000000000000000000000..f4b36ccbc0586f305728caaaa4689c2abbd14281 GIT binary patch literal 297184 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 U7Tz@Vul|+n*gvXusC{hxKjmL_DgXcg literal 0 HcmV?d00001 diff --git a/camera.hpp b/camera.hpp new file mode 100644 index 0000000..ccec623 --- /dev/null +++ b/camera.hpp @@ -0,0 +1,143 @@ +#ifndef CAMERA_H +#define CAMERA_H + +#include +#include +#include +#include +#include + +// Defines several possible options for camera movement. Used as abstraction to +// stay away from window-system specific input methods +enum Camera_Movement { FORWARD, BACKWARD, LEFT, RIGHT, UP, DOWN }; + +// Default camera values +const float YAW = -90.0f; +const float PITCH = 0.0f; +const float SPEED = 5.0f; +const float SENSITIVITY = 0.1f; +const float ZOOM = 90.0f; + +// An abstract camera class that processes input and calculates the +// corresponding Euler Angles, Vectors and Matrices for use in OpenGL +class Camera { +public: + // camera Attributes + glm::vec3 Position; + glm::vec3 Front; + glm::vec3 Up; + glm::vec3 Right; + glm::vec3 WorldUp; + // euler Angles + float Yaw; + float Pitch; + // camera options + float MovementSpeed; + float MouseSensitivity; + float Zoom; + + float verticalVelocity = 0.0f; + float gravity = -20.0f; // How fast you fall back down + float jumpForce = 8.0f; // How high you jump + bool isGrounded = true; // Are we on the floor? + + // constructor with vectors + Camera(glm::vec3 position = glm::vec3(0.0f, 0.0f, 0.0f), + glm::vec3 up = glm::vec3(0.0f, 1.0f, 0.0f), float yaw = YAW, + float pitch = PITCH) + : Front(glm::vec3(0.0f, 0.0f, -1.0f)), MovementSpeed(SPEED), + MouseSensitivity(SENSITIVITY), Zoom(ZOOM) { + Position = position; + WorldUp = up; + Yaw = yaw; + Pitch = pitch; + updateCameraVectors(); + } + // constructor with scalar values + Camera(float posX, float posY, float posZ, float upX, float upY, float upZ, + float yaw, float pitch) + : Front(glm::vec3(0.0f, 0.0f, -1.0f)), MovementSpeed(SPEED), + MouseSensitivity(SENSITIVITY), Zoom(ZOOM) { + Position = glm::vec3(posX, posY, posZ); + WorldUp = glm::vec3(upX, upY, upZ); + Yaw = yaw; + Pitch = pitch; + updateCameraVectors(); + } + + // returns the view matrix calculated using Euler Angles and the LookAt Matrix + glm::mat4 GetViewMatrix() { + return glm::lookAt(Position, Position + Front, Up); + } + + // processes input received from any keyboard-like input system. Accepts input + // parameter in the form of camera defined ENUM (to abstract it from windowing + // systems) + void ProcessKeyboard(Camera_Movement direction, float deltaTime) { + float velocity = MovementSpeed * deltaTime; + + glm::vec3 bodyFront = glm::normalize(glm::vec3(Front.x, 0.0f, Front.z)); + glm::vec3 bodyRight = glm::normalize(glm::vec3(Right.x, 0.0f, Right.z)); + + if (direction == FORWARD) + Position += bodyFront * velocity; + if (direction == BACKWARD) + Position -= bodyFront * velocity; + if (direction == LEFT) + Position -= bodyRight * velocity; + if (direction == RIGHT) + Position += bodyRight * velocity; + if (direction == UP) + Position += Up * velocity * 10.0f; + } + + // processes input received from a mouse input system. Expects the offset + // value in both the x and y direction. + void ProcessMouseMovement(float xoffset, float yoffset, + GLboolean constrainPitch = true) { + xoffset *= MouseSensitivity; + yoffset *= MouseSensitivity; + + Yaw += xoffset; + Pitch += yoffset; + + // make sure that when pitch is out of bounds, screen doesn't get flipped + if (constrainPitch) { + if (Pitch > 89.0f) + Pitch = 89.0f; + if (Pitch < -89.0f) + Pitch = -89.0f; + } + + // update Front, Right and Up Vectors using the updated Euler angles + updateCameraVectors(); + } + + // processes input received from a mouse scroll-wheel event. Only requires + // input on the vertical wheel-axis + void ProcessMouseScroll(float yoffset) { + Zoom -= (float)yoffset; + if (Zoom < 1.0f) + Zoom = 1.0f; + if (Zoom > 90.0f) + Zoom = 90.0f; + } + +private: + // calculates the front vector from the Camera's (updated) Euler Angles + void updateCameraVectors() { + // calculate the new Front vector + glm::vec3 front; + front.x = cos(glm::radians(Yaw)) * cos(glm::radians(Pitch)); + front.y = sin(glm::radians(Pitch)); + front.z = sin(glm::radians(Yaw)) * cos(glm::radians(Pitch)); + Front = glm::normalize(front); + // also re-calculate the Right and Up vector + Right = glm::normalize(glm::cross( + Front, WorldUp)); // normalize the vectors, because their length gets + // closer to 0 the more you look up or down which + // results in slower movement. + Up = glm::normalize(glm::cross(Right, Front)); + } +}; +#endif diff --git a/compile_flags.txt b/compile_flags.txt new file mode 100644 index 0000000..30679be --- /dev/null +++ b/compile_flags.txt @@ -0,0 +1 @@ +-Iinclude diff --git a/container.jpg b/container.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d07bee4e3a679f5e2e4ad508ef3c4dc29a522492 GIT binary patch literal 184939 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

d`XyO#5L!x`fys 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[SQrQz8sg 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 literal 0 HcmV?d00001 diff --git a/fragmentshader.glsl b/fragmentshader.glsl new file mode 100644 index 0000000..c813933 --- /dev/null +++ b/fragmentshader.glsl @@ -0,0 +1,14 @@ +#version 330 core +out vec4 Colour; + +in vec3 ourColor; +in vec2 TexCoord; + +uniform sampler2D texture1; +uniform sampler2D texture2; + +void main() +{ + // Colour = texture(texture1, TexCoord) * vec4(ourColor, 1.0f); + Colour = mix(texture(texture1, TexCoord), texture(texture2, TexCoord), .5); +} diff --git a/glad.c b/glad.c new file mode 100644 index 0000000..c9da4dd --- /dev/null +++ b/glad.c @@ -0,0 +1,2123 @@ +/* + + OpenGL loader generated by glad 0.1.36 on Wed Feb 18 17:52:33 2026. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=3.3 + Profile: compatibility + Extensions: + + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="compatibility" --api="gl=3.3" --generator="c" --spec="gl" + --extensions="" Online: + https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D3.3 +*/ + +#include "include/glad/glad.h" +#include +#include +#include + +static void *get_proc(const char *namez); + +#if defined(_WIN32) || defined(__CYGWIN__) +#ifndef _WINDOWS_ +#undef APIENTRY +#endif +#include +static HMODULE libGL; + +typedef void *(APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char *); +static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; + +#ifdef _MSC_VER +#ifdef __has_include +#if __has_include() +#define HAVE_WINAPIFAMILY 1 +#endif +#elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ +#define HAVE_WINAPIFAMILY 1 +#endif +#endif + +#ifdef HAVE_WINAPIFAMILY +#include +#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ + WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) +#define IS_UWP 1 +#endif +#endif + +static int open_gl(void) { +#ifndef IS_UWP + libGL = LoadLibraryW(L"opengl32.dll"); + if (libGL != NULL) { + void (*tmp)(void); + tmp = (void (*)(void))GetProcAddress(libGL, "wglGetProcAddress"); + gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)tmp; + return gladGetProcAddressPtr != NULL; + } +#endif + + return 0; +} + +static void close_gl(void) { + if (libGL != NULL) { + FreeLibrary((HMODULE)libGL); + libGL = NULL; + } +} +#else +#include +static void *libGL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) +typedef void *(APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char *); +static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; +#endif + +static int open_gl(void) { +#ifdef __APPLE__ + static const char *NAMES[] = { + "../Frameworks/OpenGL.framework/OpenGL", + "/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/OpenGL", + "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL"}; +#else + static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; +#endif + + unsigned int index = 0; + for (index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { + libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); + + if (libGL != NULL) { +#if defined(__APPLE__) || defined(__HAIKU__) + return 1; +#else + gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym( + libGL, "glXGetProcAddressARB"); + return gladGetProcAddressPtr != NULL; +#endif + } + } + + return 0; +} + +static void close_gl(void) { + if (libGL != NULL) { + dlclose(libGL); + libGL = NULL; + } +} +#endif + +static void *get_proc(const char *namez) { + void *result = NULL; + if (libGL == NULL) + return NULL; + +#if !defined(__APPLE__) && !defined(__HAIKU__) + if (gladGetProcAddressPtr != NULL) { + result = gladGetProcAddressPtr(namez); + } +#endif + if (result == NULL) { +#if defined(_WIN32) || defined(__CYGWIN__) + result = (void *)GetProcAddress((HMODULE)libGL, namez); +#else + result = dlsym(libGL, namez); +#endif + } + + return result; +} + +int gladLoadGL(void) { + int status = 0; + + if (open_gl()) { + status = gladLoadGLLoader(&get_proc); + close_gl(); + } + + return status; +} + +struct gladGLversionStruct GLVersion = {0, 0}; + +#if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) +#define _GLAD_IS_SOME_NEW_VERSION 1 +#endif + +static int max_loaded_major; +static int max_loaded_minor; + +static const char *exts = NULL; +static int num_exts_i = 0; +static char **exts_i = NULL; + +static int get_exts(void) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if (max_loaded_major < 3) { +#endif + exts = (const char *)glGetString(GL_EXTENSIONS); +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + + num_exts_i = 0; + glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); + if (num_exts_i > 0) { + exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); + } + + if (exts_i == NULL) { + return 0; + } + + for (index = 0; index < num_exts_i; index++) { + const char *gl_str_tmp = + (const char *)glGetStringi(GL_EXTENSIONS, index); + size_t len = strlen(gl_str_tmp); + + char *local_str = (char *)malloc((len + 1) * sizeof(char)); + if (local_str != NULL) { + memcpy(local_str, gl_str_tmp, (len + 1) * sizeof(char)); + } + exts_i[index] = local_str; + } + } +#endif + return 1; +} + +static void free_exts(void) { + if (exts_i != NULL) { + int index; + for (index = 0; index < num_exts_i; index++) { + free((char *)exts_i[index]); + } + free((void *)exts_i); + exts_i = NULL; + } +} + +static int has_ext(const char *ext) { +#ifdef _GLAD_IS_SOME_NEW_VERSION + if (max_loaded_major < 3) { +#endif + const char *extensions; + const char *loc; + const char *terminator; + extensions = exts; + if (extensions == NULL || ext == NULL) { + return 0; + } + + while (1) { + loc = strstr(extensions, ext); + if (loc == NULL) { + return 0; + } + + terminator = loc + strlen(ext); + if ((loc == extensions || *(loc - 1) == ' ') && + (*terminator == ' ' || *terminator == '\0')) { + return 1; + } + extensions = terminator; + } +#ifdef _GLAD_IS_SOME_NEW_VERSION + } else { + int index; + if (exts_i == NULL) + return 0; + for (index = 0; index < num_exts_i; index++) { + const char *e = exts_i[index]; + + if (exts_i[index] != NULL && strcmp(e, ext) == 0) { + return 1; + } + } + } +#endif + + return 0; +} +int GLAD_GL_VERSION_1_0 = 0; +int GLAD_GL_VERSION_1_1 = 0; +int GLAD_GL_VERSION_1_2 = 0; +int GLAD_GL_VERSION_1_3 = 0; +int GLAD_GL_VERSION_1_4 = 0; +int GLAD_GL_VERSION_1_5 = 0; +int GLAD_GL_VERSION_2_0 = 0; +int GLAD_GL_VERSION_2_1 = 0; +int GLAD_GL_VERSION_3_0 = 0; +int GLAD_GL_VERSION_3_1 = 0; +int GLAD_GL_VERSION_3_2 = 0; +int GLAD_GL_VERSION_3_3 = 0; +PFNGLACCUMPROC glad_glAccum = NULL; +PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; +PFNGLALPHAFUNCPROC glad_glAlphaFunc = NULL; +PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident = NULL; +PFNGLARRAYELEMENTPROC glad_glArrayElement = NULL; +PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; +PFNGLBEGINPROC glad_glBegin = NULL; +PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; +PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; +PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; +PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; +PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; +PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; +PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; +PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; +PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; +PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; +PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; +PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; +PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; +PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; +PFNGLBITMAPPROC glad_glBitmap = NULL; +PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; +PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; +PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; +PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; +PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; +PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; +PFNGLBUFFERDATAPROC glad_glBufferData = NULL; +PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; +PFNGLCALLLISTPROC glad_glCallList = NULL; +PFNGLCALLLISTSPROC glad_glCallLists = NULL; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; +PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; +PFNGLCLEARPROC glad_glClear = NULL; +PFNGLCLEARACCUMPROC glad_glClearAccum = NULL; +PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; +PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; +PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; +PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; +PFNGLCLEARCOLORPROC glad_glClearColor = NULL; +PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; +PFNGLCLEARINDEXPROC glad_glClearIndex = NULL; +PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; +PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture = NULL; +PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; +PFNGLCLIPPLANEPROC glad_glClipPlane = NULL; +PFNGLCOLOR3BPROC glad_glColor3b = NULL; +PFNGLCOLOR3BVPROC glad_glColor3bv = NULL; +PFNGLCOLOR3DPROC glad_glColor3d = NULL; +PFNGLCOLOR3DVPROC glad_glColor3dv = NULL; +PFNGLCOLOR3FPROC glad_glColor3f = NULL; +PFNGLCOLOR3FVPROC glad_glColor3fv = NULL; +PFNGLCOLOR3IPROC glad_glColor3i = NULL; +PFNGLCOLOR3IVPROC glad_glColor3iv = NULL; +PFNGLCOLOR3SPROC glad_glColor3s = NULL; +PFNGLCOLOR3SVPROC glad_glColor3sv = NULL; +PFNGLCOLOR3UBPROC glad_glColor3ub = NULL; +PFNGLCOLOR3UBVPROC glad_glColor3ubv = NULL; +PFNGLCOLOR3UIPROC glad_glColor3ui = NULL; +PFNGLCOLOR3UIVPROC glad_glColor3uiv = NULL; +PFNGLCOLOR3USPROC glad_glColor3us = NULL; +PFNGLCOLOR3USVPROC glad_glColor3usv = NULL; +PFNGLCOLOR4BPROC glad_glColor4b = NULL; +PFNGLCOLOR4BVPROC glad_glColor4bv = NULL; +PFNGLCOLOR4DPROC glad_glColor4d = NULL; +PFNGLCOLOR4DVPROC glad_glColor4dv = NULL; +PFNGLCOLOR4FPROC glad_glColor4f = NULL; +PFNGLCOLOR4FVPROC glad_glColor4fv = NULL; +PFNGLCOLOR4IPROC glad_glColor4i = NULL; +PFNGLCOLOR4IVPROC glad_glColor4iv = NULL; +PFNGLCOLOR4SPROC glad_glColor4s = NULL; +PFNGLCOLOR4SVPROC glad_glColor4sv = NULL; +PFNGLCOLOR4UBPROC glad_glColor4ub = NULL; +PFNGLCOLOR4UBVPROC glad_glColor4ubv = NULL; +PFNGLCOLOR4UIPROC glad_glColor4ui = NULL; +PFNGLCOLOR4UIVPROC glad_glColor4uiv = NULL; +PFNGLCOLOR4USPROC glad_glColor4us = NULL; +PFNGLCOLOR4USVPROC glad_glColor4usv = NULL; +PFNGLCOLORMASKPROC glad_glColorMask = NULL; +PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; +PFNGLCOLORMATERIALPROC glad_glColorMaterial = NULL; +PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; +PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; +PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; +PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; +PFNGLCOLORPOINTERPROC glad_glColorPointer = NULL; +PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; +PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; +PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; +PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; +PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; +PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; +PFNGLCOPYPIXELSPROC glad_glCopyPixels = NULL; +PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; +PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; +PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; +PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; +PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; +PFNGLCREATESHADERPROC glad_glCreateShader = NULL; +PFNGLCULLFACEPROC glad_glCullFace = NULL; +PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; +PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; +PFNGLDELETELISTSPROC glad_glDeleteLists = NULL; +PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; +PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; +PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; +PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; +PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; +PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; +PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; +PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; +PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; +PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; +PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; +PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; +PFNGLDISABLEPROC glad_glDisable = NULL; +PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState = NULL; +PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; +PFNGLDISABLEIPROC glad_glDisablei = NULL; +PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; +PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; +PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; +PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; +PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; +PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; +PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; +PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC + glad_glDrawElementsInstancedBaseVertex = NULL; +PFNGLDRAWPIXELSPROC glad_glDrawPixels = NULL; +PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; +PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; +PFNGLEDGEFLAGPROC glad_glEdgeFlag = NULL; +PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer = NULL; +PFNGLEDGEFLAGVPROC glad_glEdgeFlagv = NULL; +PFNGLENABLEPROC glad_glEnable = NULL; +PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState = NULL; +PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; +PFNGLENABLEIPROC glad_glEnablei = NULL; +PFNGLENDPROC glad_glEnd = NULL; +PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; +PFNGLENDLISTPROC glad_glEndList = NULL; +PFNGLENDQUERYPROC glad_glEndQuery = NULL; +PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; +PFNGLEVALCOORD1DPROC glad_glEvalCoord1d = NULL; +PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv = NULL; +PFNGLEVALCOORD1FPROC glad_glEvalCoord1f = NULL; +PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv = NULL; +PFNGLEVALCOORD2DPROC glad_glEvalCoord2d = NULL; +PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv = NULL; +PFNGLEVALCOORD2FPROC glad_glEvalCoord2f = NULL; +PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv = NULL; +PFNGLEVALMESH1PROC glad_glEvalMesh1 = NULL; +PFNGLEVALMESH2PROC glad_glEvalMesh2 = NULL; +PFNGLEVALPOINT1PROC glad_glEvalPoint1 = NULL; +PFNGLEVALPOINT2PROC glad_glEvalPoint2 = NULL; +PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer = NULL; +PFNGLFENCESYNCPROC glad_glFenceSync = NULL; +PFNGLFINISHPROC glad_glFinish = NULL; +PFNGLFLUSHPROC glad_glFlush = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; +PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer = NULL; +PFNGLFOGCOORDDPROC glad_glFogCoordd = NULL; +PFNGLFOGCOORDDVPROC glad_glFogCoorddv = NULL; +PFNGLFOGCOORDFPROC glad_glFogCoordf = NULL; +PFNGLFOGCOORDFVPROC glad_glFogCoordfv = NULL; +PFNGLFOGFPROC glad_glFogf = NULL; +PFNGLFOGFVPROC glad_glFogfv = NULL; +PFNGLFOGIPROC glad_glFogi = NULL; +PFNGLFOGIVPROC glad_glFogiv = NULL; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; +PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; +PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; +PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; +PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; +PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; +PFNGLFRONTFACEPROC glad_glFrontFace = NULL; +PFNGLFRUSTUMPROC glad_glFrustum = NULL; +PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; +PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; +PFNGLGENLISTSPROC glad_glGenLists = NULL; +PFNGLGENQUERIESPROC glad_glGenQueries = NULL; +PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; +PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; +PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; +PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; +PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; +PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; +PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; +PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; +PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; +PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; +PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; +PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; +PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; +PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; +PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; +PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; +PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; +PFNGLGETCLIPPLANEPROC glad_glGetClipPlane = NULL; +PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; +PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; +PFNGLGETERRORPROC glad_glGetError = NULL; +PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; +PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; +PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC + glad_glGetFramebufferAttachmentParameteriv = NULL; +PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; +PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; +PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; +PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; +PFNGLGETLIGHTFVPROC glad_glGetLightfv = NULL; +PFNGLGETLIGHTIVPROC glad_glGetLightiv = NULL; +PFNGLGETMAPDVPROC glad_glGetMapdv = NULL; +PFNGLGETMAPFVPROC glad_glGetMapfv = NULL; +PFNGLGETMAPIVPROC glad_glGetMapiv = NULL; +PFNGLGETMATERIALFVPROC glad_glGetMaterialfv = NULL; +PFNGLGETMATERIALIVPROC glad_glGetMaterialiv = NULL; +PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; +PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv = NULL; +PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv = NULL; +PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv = NULL; +PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; +PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple = NULL; +PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; +PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; +PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; +PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; +PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; +PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; +PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; +PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; +PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; +PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; +PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; +PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; +PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; +PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; +PFNGLGETSTRINGPROC glad_glGetString = NULL; +PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; +PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; +PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv = NULL; +PFNGLGETTEXENVIVPROC glad_glGetTexEnviv = NULL; +PFNGLGETTEXGENDVPROC glad_glGetTexGendv = NULL; +PFNGLGETTEXGENFVPROC glad_glGetTexGenfv = NULL; +PFNGLGETTEXGENIVPROC glad_glGetTexGeniv = NULL; +PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; +PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; +PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; +PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; +PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; +PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; +PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; +PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; +PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; +PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; +PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; +PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; +PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; +PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; +PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; +PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; +PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; +PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; +PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; +PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; +PFNGLHINTPROC glad_glHint = NULL; +PFNGLINDEXMASKPROC glad_glIndexMask = NULL; +PFNGLINDEXPOINTERPROC glad_glIndexPointer = NULL; +PFNGLINDEXDPROC glad_glIndexd = NULL; +PFNGLINDEXDVPROC glad_glIndexdv = NULL; +PFNGLINDEXFPROC glad_glIndexf = NULL; +PFNGLINDEXFVPROC glad_glIndexfv = NULL; +PFNGLINDEXIPROC glad_glIndexi = NULL; +PFNGLINDEXIVPROC glad_glIndexiv = NULL; +PFNGLINDEXSPROC glad_glIndexs = NULL; +PFNGLINDEXSVPROC glad_glIndexsv = NULL; +PFNGLINDEXUBPROC glad_glIndexub = NULL; +PFNGLINDEXUBVPROC glad_glIndexubv = NULL; +PFNGLINITNAMESPROC glad_glInitNames = NULL; +PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays = NULL; +PFNGLISBUFFERPROC glad_glIsBuffer = NULL; +PFNGLISENABLEDPROC glad_glIsEnabled = NULL; +PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; +PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; +PFNGLISLISTPROC glad_glIsList = NULL; +PFNGLISPROGRAMPROC glad_glIsProgram = NULL; +PFNGLISQUERYPROC glad_glIsQuery = NULL; +PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; +PFNGLISSAMPLERPROC glad_glIsSampler = NULL; +PFNGLISSHADERPROC glad_glIsShader = NULL; +PFNGLISSYNCPROC glad_glIsSync = NULL; +PFNGLISTEXTUREPROC glad_glIsTexture = NULL; +PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; +PFNGLLIGHTMODELFPROC glad_glLightModelf = NULL; +PFNGLLIGHTMODELFVPROC glad_glLightModelfv = NULL; +PFNGLLIGHTMODELIPROC glad_glLightModeli = NULL; +PFNGLLIGHTMODELIVPROC glad_glLightModeliv = NULL; +PFNGLLIGHTFPROC glad_glLightf = NULL; +PFNGLLIGHTFVPROC glad_glLightfv = NULL; +PFNGLLIGHTIPROC glad_glLighti = NULL; +PFNGLLIGHTIVPROC glad_glLightiv = NULL; +PFNGLLINESTIPPLEPROC glad_glLineStipple = NULL; +PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; +PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; +PFNGLLISTBASEPROC glad_glListBase = NULL; +PFNGLLOADIDENTITYPROC glad_glLoadIdentity = NULL; +PFNGLLOADMATRIXDPROC glad_glLoadMatrixd = NULL; +PFNGLLOADMATRIXFPROC glad_glLoadMatrixf = NULL; +PFNGLLOADNAMEPROC glad_glLoadName = NULL; +PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd = NULL; +PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf = NULL; +PFNGLLOGICOPPROC glad_glLogicOp = NULL; +PFNGLMAP1DPROC glad_glMap1d = NULL; +PFNGLMAP1FPROC glad_glMap1f = NULL; +PFNGLMAP2DPROC glad_glMap2d = NULL; +PFNGLMAP2FPROC glad_glMap2f = NULL; +PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; +PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; +PFNGLMAPGRID1DPROC glad_glMapGrid1d = NULL; +PFNGLMAPGRID1FPROC glad_glMapGrid1f = NULL; +PFNGLMAPGRID2DPROC glad_glMapGrid2d = NULL; +PFNGLMAPGRID2FPROC glad_glMapGrid2f = NULL; +PFNGLMATERIALFPROC glad_glMaterialf = NULL; +PFNGLMATERIALFVPROC glad_glMaterialfv = NULL; +PFNGLMATERIALIPROC glad_glMateriali = NULL; +PFNGLMATERIALIVPROC glad_glMaterialiv = NULL; +PFNGLMATRIXMODEPROC glad_glMatrixMode = NULL; +PFNGLMULTMATRIXDPROC glad_glMultMatrixd = NULL; +PFNGLMULTMATRIXFPROC glad_glMultMatrixf = NULL; +PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd = NULL; +PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf = NULL; +PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; +PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; +PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; +PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d = NULL; +PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv = NULL; +PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f = NULL; +PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv = NULL; +PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i = NULL; +PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv = NULL; +PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s = NULL; +PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv = NULL; +PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d = NULL; +PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv = NULL; +PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f = NULL; +PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv = NULL; +PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i = NULL; +PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv = NULL; +PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s = NULL; +PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv = NULL; +PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d = NULL; +PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv = NULL; +PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f = NULL; +PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv = NULL; +PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i = NULL; +PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv = NULL; +PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s = NULL; +PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv = NULL; +PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d = NULL; +PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv = NULL; +PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f = NULL; +PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv = NULL; +PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i = NULL; +PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv = NULL; +PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s = NULL; +PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv = NULL; +PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; +PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; +PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; +PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; +PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; +PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; +PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; +PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; +PFNGLNEWLISTPROC glad_glNewList = NULL; +PFNGLNORMAL3BPROC glad_glNormal3b = NULL; +PFNGLNORMAL3BVPROC glad_glNormal3bv = NULL; +PFNGLNORMAL3DPROC glad_glNormal3d = NULL; +PFNGLNORMAL3DVPROC glad_glNormal3dv = NULL; +PFNGLNORMAL3FPROC glad_glNormal3f = NULL; +PFNGLNORMAL3FVPROC glad_glNormal3fv = NULL; +PFNGLNORMAL3IPROC glad_glNormal3i = NULL; +PFNGLNORMAL3IVPROC glad_glNormal3iv = NULL; +PFNGLNORMAL3SPROC glad_glNormal3s = NULL; +PFNGLNORMAL3SVPROC glad_glNormal3sv = NULL; +PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; +PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; +PFNGLNORMALPOINTERPROC glad_glNormalPointer = NULL; +PFNGLORTHOPROC glad_glOrtho = NULL; +PFNGLPASSTHROUGHPROC glad_glPassThrough = NULL; +PFNGLPIXELMAPFVPROC glad_glPixelMapfv = NULL; +PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv = NULL; +PFNGLPIXELMAPUSVPROC glad_glPixelMapusv = NULL; +PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; +PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; +PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf = NULL; +PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi = NULL; +PFNGLPIXELZOOMPROC glad_glPixelZoom = NULL; +PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; +PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; +PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; +PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; +PFNGLPOINTSIZEPROC glad_glPointSize = NULL; +PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; +PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; +PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple = NULL; +PFNGLPOPATTRIBPROC glad_glPopAttrib = NULL; +PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib = NULL; +PFNGLPOPMATRIXPROC glad_glPopMatrix = NULL; +PFNGLPOPNAMEPROC glad_glPopName = NULL; +PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; +PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures = NULL; +PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; +PFNGLPUSHATTRIBPROC glad_glPushAttrib = NULL; +PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib = NULL; +PFNGLPUSHMATRIXPROC glad_glPushMatrix = NULL; +PFNGLPUSHNAMEPROC glad_glPushName = NULL; +PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; +PFNGLRASTERPOS2DPROC glad_glRasterPos2d = NULL; +PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv = NULL; +PFNGLRASTERPOS2FPROC glad_glRasterPos2f = NULL; +PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv = NULL; +PFNGLRASTERPOS2IPROC glad_glRasterPos2i = NULL; +PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv = NULL; +PFNGLRASTERPOS2SPROC glad_glRasterPos2s = NULL; +PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv = NULL; +PFNGLRASTERPOS3DPROC glad_glRasterPos3d = NULL; +PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv = NULL; +PFNGLRASTERPOS3FPROC glad_glRasterPos3f = NULL; +PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv = NULL; +PFNGLRASTERPOS3IPROC glad_glRasterPos3i = NULL; +PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv = NULL; +PFNGLRASTERPOS3SPROC glad_glRasterPos3s = NULL; +PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv = NULL; +PFNGLRASTERPOS4DPROC glad_glRasterPos4d = NULL; +PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv = NULL; +PFNGLRASTERPOS4FPROC glad_glRasterPos4f = NULL; +PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv = NULL; +PFNGLRASTERPOS4IPROC glad_glRasterPos4i = NULL; +PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv = NULL; +PFNGLRASTERPOS4SPROC glad_glRasterPos4s = NULL; +PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv = NULL; +PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; +PFNGLREADPIXELSPROC glad_glReadPixels = NULL; +PFNGLRECTDPROC glad_glRectd = NULL; +PFNGLRECTDVPROC glad_glRectdv = NULL; +PFNGLRECTFPROC glad_glRectf = NULL; +PFNGLRECTFVPROC glad_glRectfv = NULL; +PFNGLRECTIPROC glad_glRecti = NULL; +PFNGLRECTIVPROC glad_glRectiv = NULL; +PFNGLRECTSPROC glad_glRects = NULL; +PFNGLRECTSVPROC glad_glRectsv = NULL; +PFNGLRENDERMODEPROC glad_glRenderMode = NULL; +PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = + NULL; +PFNGLROTATEDPROC glad_glRotated = NULL; +PFNGLROTATEFPROC glad_glRotatef = NULL; +PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; +PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; +PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; +PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; +PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; +PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; +PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; +PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; +PFNGLSCALEDPROC glad_glScaled = NULL; +PFNGLSCALEFPROC glad_glScalef = NULL; +PFNGLSCISSORPROC glad_glScissor = NULL; +PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b = NULL; +PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv = NULL; +PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d = NULL; +PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv = NULL; +PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f = NULL; +PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv = NULL; +PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i = NULL; +PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv = NULL; +PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s = NULL; +PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv = NULL; +PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub = NULL; +PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv = NULL; +PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui = NULL; +PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv = NULL; +PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us = NULL; +PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv = NULL; +PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; +PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; +PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer = NULL; +PFNGLSELECTBUFFERPROC glad_glSelectBuffer = NULL; +PFNGLSHADEMODELPROC glad_glShadeModel = NULL; +PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; +PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; +PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; +PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; +PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; +PFNGLSTENCILOPPROC glad_glStencilOp = NULL; +PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; +PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; +PFNGLTEXCOORD1DPROC glad_glTexCoord1d = NULL; +PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv = NULL; +PFNGLTEXCOORD1FPROC glad_glTexCoord1f = NULL; +PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv = NULL; +PFNGLTEXCOORD1IPROC glad_glTexCoord1i = NULL; +PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv = NULL; +PFNGLTEXCOORD1SPROC glad_glTexCoord1s = NULL; +PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv = NULL; +PFNGLTEXCOORD2DPROC glad_glTexCoord2d = NULL; +PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv = NULL; +PFNGLTEXCOORD2FPROC glad_glTexCoord2f = NULL; +PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv = NULL; +PFNGLTEXCOORD2IPROC glad_glTexCoord2i = NULL; +PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv = NULL; +PFNGLTEXCOORD2SPROC glad_glTexCoord2s = NULL; +PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv = NULL; +PFNGLTEXCOORD3DPROC glad_glTexCoord3d = NULL; +PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv = NULL; +PFNGLTEXCOORD3FPROC glad_glTexCoord3f = NULL; +PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv = NULL; +PFNGLTEXCOORD3IPROC glad_glTexCoord3i = NULL; +PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv = NULL; +PFNGLTEXCOORD3SPROC glad_glTexCoord3s = NULL; +PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv = NULL; +PFNGLTEXCOORD4DPROC glad_glTexCoord4d = NULL; +PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv = NULL; +PFNGLTEXCOORD4FPROC glad_glTexCoord4f = NULL; +PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv = NULL; +PFNGLTEXCOORD4IPROC glad_glTexCoord4i = NULL; +PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv = NULL; +PFNGLTEXCOORD4SPROC glad_glTexCoord4s = NULL; +PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv = NULL; +PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; +PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; +PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; +PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; +PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; +PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; +PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; +PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; +PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer = NULL; +PFNGLTEXENVFPROC glad_glTexEnvf = NULL; +PFNGLTEXENVFVPROC glad_glTexEnvfv = NULL; +PFNGLTEXENVIPROC glad_glTexEnvi = NULL; +PFNGLTEXENVIVPROC glad_glTexEnviv = NULL; +PFNGLTEXGENDPROC glad_glTexGend = NULL; +PFNGLTEXGENDVPROC glad_glTexGendv = NULL; +PFNGLTEXGENFPROC glad_glTexGenf = NULL; +PFNGLTEXGENFVPROC glad_glTexGenfv = NULL; +PFNGLTEXGENIPROC glad_glTexGeni = NULL; +PFNGLTEXGENIVPROC glad_glTexGeniv = NULL; +PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; +PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; +PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; +PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; +PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; +PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; +PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; +PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; +PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; +PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; +PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; +PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; +PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; +PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; +PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; +PFNGLTRANSLATEDPROC glad_glTranslated = NULL; +PFNGLTRANSLATEFPROC glad_glTranslatef = NULL; +PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; +PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; +PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; +PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; +PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; +PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; +PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; +PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; +PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; +PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; +PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; +PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; +PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; +PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; +PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; +PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; +PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; +PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; +PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; +PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; +PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; +PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; +PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; +PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; +PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; +PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; +PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; +PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; +PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; +PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; +PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; +PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; +PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; +PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; +PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; +PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; +PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; +PFNGLVERTEX2DPROC glad_glVertex2d = NULL; +PFNGLVERTEX2DVPROC glad_glVertex2dv = NULL; +PFNGLVERTEX2FPROC glad_glVertex2f = NULL; +PFNGLVERTEX2FVPROC glad_glVertex2fv = NULL; +PFNGLVERTEX2IPROC glad_glVertex2i = NULL; +PFNGLVERTEX2IVPROC glad_glVertex2iv = NULL; +PFNGLVERTEX2SPROC glad_glVertex2s = NULL; +PFNGLVERTEX2SVPROC glad_glVertex2sv = NULL; +PFNGLVERTEX3DPROC glad_glVertex3d = NULL; +PFNGLVERTEX3DVPROC glad_glVertex3dv = NULL; +PFNGLVERTEX3FPROC glad_glVertex3f = NULL; +PFNGLVERTEX3FVPROC glad_glVertex3fv = NULL; +PFNGLVERTEX3IPROC glad_glVertex3i = NULL; +PFNGLVERTEX3IVPROC glad_glVertex3iv = NULL; +PFNGLVERTEX3SPROC glad_glVertex3s = NULL; +PFNGLVERTEX3SVPROC glad_glVertex3sv = NULL; +PFNGLVERTEX4DPROC glad_glVertex4d = NULL; +PFNGLVERTEX4DVPROC glad_glVertex4dv = NULL; +PFNGLVERTEX4FPROC glad_glVertex4f = NULL; +PFNGLVERTEX4FVPROC glad_glVertex4fv = NULL; +PFNGLVERTEX4IPROC glad_glVertex4i = NULL; +PFNGLVERTEX4IVPROC glad_glVertex4iv = NULL; +PFNGLVERTEX4SPROC glad_glVertex4s = NULL; +PFNGLVERTEX4SVPROC glad_glVertex4sv = NULL; +PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; +PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; +PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; +PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; +PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; +PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; +PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; +PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; +PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; +PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; +PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; +PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; +PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; +PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; +PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; +PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; +PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; +PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; +PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; +PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; +PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; +PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; +PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; +PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; +PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; +PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; +PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; +PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; +PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; +PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; +PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; +PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; +PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; +PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; +PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; +PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; +PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; +PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; +PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; +PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; +PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; +PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; +PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; +PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; +PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; +PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; +PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; +PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; +PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; +PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; +PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; +PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; +PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; +PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; +PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; +PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; +PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; +PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; +PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; +PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; +PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; +PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; +PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; +PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; +PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; +PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; +PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; +PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; +PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; +PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; +PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; +PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; +PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; +PFNGLVERTEXPOINTERPROC glad_glVertexPointer = NULL; +PFNGLVIEWPORTPROC glad_glViewport = NULL; +PFNGLWAITSYNCPROC glad_glWaitSync = NULL; +PFNGLWINDOWPOS2DPROC glad_glWindowPos2d = NULL; +PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv = NULL; +PFNGLWINDOWPOS2FPROC glad_glWindowPos2f = NULL; +PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv = NULL; +PFNGLWINDOWPOS2IPROC glad_glWindowPos2i = NULL; +PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv = NULL; +PFNGLWINDOWPOS2SPROC glad_glWindowPos2s = NULL; +PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv = NULL; +PFNGLWINDOWPOS3DPROC glad_glWindowPos3d = NULL; +PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv = NULL; +PFNGLWINDOWPOS3FPROC glad_glWindowPos3f = NULL; +PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv = NULL; +PFNGLWINDOWPOS3IPROC glad_glWindowPos3i = NULL; +PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv = NULL; +PFNGLWINDOWPOS3SPROC glad_glWindowPos3s = NULL; +PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv = NULL; +static void load_GL_VERSION_1_0(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_0) + return; + glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); + glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); + glad_glHint = (PFNGLHINTPROC)load("glHint"); + glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); + glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); + glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); + glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); + glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); + glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); + glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); + glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); + glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); + glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); + glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); + glad_glClear = (PFNGLCLEARPROC)load("glClear"); + glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); + glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); + glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); + glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); + glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); + glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); + glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); + glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); + glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); + glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); + glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); + glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); + glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); + glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); + glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); + glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); + glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); + glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); + glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); + glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); + glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); + glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); + glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); + glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); + glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); + glad_glGetTexParameterfv = + (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); + glad_glGetTexParameteriv = + (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); + glad_glGetTexLevelParameterfv = + (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); + glad_glGetTexLevelParameteriv = + (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); + glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); + glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); + glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); + glad_glNewList = (PFNGLNEWLISTPROC)load("glNewList"); + glad_glEndList = (PFNGLENDLISTPROC)load("glEndList"); + glad_glCallList = (PFNGLCALLLISTPROC)load("glCallList"); + glad_glCallLists = (PFNGLCALLLISTSPROC)load("glCallLists"); + glad_glDeleteLists = (PFNGLDELETELISTSPROC)load("glDeleteLists"); + glad_glGenLists = (PFNGLGENLISTSPROC)load("glGenLists"); + glad_glListBase = (PFNGLLISTBASEPROC)load("glListBase"); + glad_glBegin = (PFNGLBEGINPROC)load("glBegin"); + glad_glBitmap = (PFNGLBITMAPPROC)load("glBitmap"); + glad_glColor3b = (PFNGLCOLOR3BPROC)load("glColor3b"); + glad_glColor3bv = (PFNGLCOLOR3BVPROC)load("glColor3bv"); + glad_glColor3d = (PFNGLCOLOR3DPROC)load("glColor3d"); + glad_glColor3dv = (PFNGLCOLOR3DVPROC)load("glColor3dv"); + glad_glColor3f = (PFNGLCOLOR3FPROC)load("glColor3f"); + glad_glColor3fv = (PFNGLCOLOR3FVPROC)load("glColor3fv"); + glad_glColor3i = (PFNGLCOLOR3IPROC)load("glColor3i"); + glad_glColor3iv = (PFNGLCOLOR3IVPROC)load("glColor3iv"); + glad_glColor3s = (PFNGLCOLOR3SPROC)load("glColor3s"); + glad_glColor3sv = (PFNGLCOLOR3SVPROC)load("glColor3sv"); + glad_glColor3ub = (PFNGLCOLOR3UBPROC)load("glColor3ub"); + glad_glColor3ubv = (PFNGLCOLOR3UBVPROC)load("glColor3ubv"); + glad_glColor3ui = (PFNGLCOLOR3UIPROC)load("glColor3ui"); + glad_glColor3uiv = (PFNGLCOLOR3UIVPROC)load("glColor3uiv"); + glad_glColor3us = (PFNGLCOLOR3USPROC)load("glColor3us"); + glad_glColor3usv = (PFNGLCOLOR3USVPROC)load("glColor3usv"); + glad_glColor4b = (PFNGLCOLOR4BPROC)load("glColor4b"); + glad_glColor4bv = (PFNGLCOLOR4BVPROC)load("glColor4bv"); + glad_glColor4d = (PFNGLCOLOR4DPROC)load("glColor4d"); + glad_glColor4dv = (PFNGLCOLOR4DVPROC)load("glColor4dv"); + glad_glColor4f = (PFNGLCOLOR4FPROC)load("glColor4f"); + glad_glColor4fv = (PFNGLCOLOR4FVPROC)load("glColor4fv"); + glad_glColor4i = (PFNGLCOLOR4IPROC)load("glColor4i"); + glad_glColor4iv = (PFNGLCOLOR4IVPROC)load("glColor4iv"); + glad_glColor4s = (PFNGLCOLOR4SPROC)load("glColor4s"); + glad_glColor4sv = (PFNGLCOLOR4SVPROC)load("glColor4sv"); + glad_glColor4ub = (PFNGLCOLOR4UBPROC)load("glColor4ub"); + glad_glColor4ubv = (PFNGLCOLOR4UBVPROC)load("glColor4ubv"); + glad_glColor4ui = (PFNGLCOLOR4UIPROC)load("glColor4ui"); + glad_glColor4uiv = (PFNGLCOLOR4UIVPROC)load("glColor4uiv"); + glad_glColor4us = (PFNGLCOLOR4USPROC)load("glColor4us"); + glad_glColor4usv = (PFNGLCOLOR4USVPROC)load("glColor4usv"); + glad_glEdgeFlag = (PFNGLEDGEFLAGPROC)load("glEdgeFlag"); + glad_glEdgeFlagv = (PFNGLEDGEFLAGVPROC)load("glEdgeFlagv"); + glad_glEnd = (PFNGLENDPROC)load("glEnd"); + glad_glIndexd = (PFNGLINDEXDPROC)load("glIndexd"); + glad_glIndexdv = (PFNGLINDEXDVPROC)load("glIndexdv"); + glad_glIndexf = (PFNGLINDEXFPROC)load("glIndexf"); + glad_glIndexfv = (PFNGLINDEXFVPROC)load("glIndexfv"); + glad_glIndexi = (PFNGLINDEXIPROC)load("glIndexi"); + glad_glIndexiv = (PFNGLINDEXIVPROC)load("glIndexiv"); + glad_glIndexs = (PFNGLINDEXSPROC)load("glIndexs"); + glad_glIndexsv = (PFNGLINDEXSVPROC)load("glIndexsv"); + glad_glNormal3b = (PFNGLNORMAL3BPROC)load("glNormal3b"); + glad_glNormal3bv = (PFNGLNORMAL3BVPROC)load("glNormal3bv"); + glad_glNormal3d = (PFNGLNORMAL3DPROC)load("glNormal3d"); + glad_glNormal3dv = (PFNGLNORMAL3DVPROC)load("glNormal3dv"); + glad_glNormal3f = (PFNGLNORMAL3FPROC)load("glNormal3f"); + glad_glNormal3fv = (PFNGLNORMAL3FVPROC)load("glNormal3fv"); + glad_glNormal3i = (PFNGLNORMAL3IPROC)load("glNormal3i"); + glad_glNormal3iv = (PFNGLNORMAL3IVPROC)load("glNormal3iv"); + glad_glNormal3s = (PFNGLNORMAL3SPROC)load("glNormal3s"); + glad_glNormal3sv = (PFNGLNORMAL3SVPROC)load("glNormal3sv"); + glad_glRasterPos2d = (PFNGLRASTERPOS2DPROC)load("glRasterPos2d"); + glad_glRasterPos2dv = (PFNGLRASTERPOS2DVPROC)load("glRasterPos2dv"); + glad_glRasterPos2f = (PFNGLRASTERPOS2FPROC)load("glRasterPos2f"); + glad_glRasterPos2fv = (PFNGLRASTERPOS2FVPROC)load("glRasterPos2fv"); + glad_glRasterPos2i = (PFNGLRASTERPOS2IPROC)load("glRasterPos2i"); + glad_glRasterPos2iv = (PFNGLRASTERPOS2IVPROC)load("glRasterPos2iv"); + glad_glRasterPos2s = (PFNGLRASTERPOS2SPROC)load("glRasterPos2s"); + glad_glRasterPos2sv = (PFNGLRASTERPOS2SVPROC)load("glRasterPos2sv"); + glad_glRasterPos3d = (PFNGLRASTERPOS3DPROC)load("glRasterPos3d"); + glad_glRasterPos3dv = (PFNGLRASTERPOS3DVPROC)load("glRasterPos3dv"); + glad_glRasterPos3f = (PFNGLRASTERPOS3FPROC)load("glRasterPos3f"); + glad_glRasterPos3fv = (PFNGLRASTERPOS3FVPROC)load("glRasterPos3fv"); + glad_glRasterPos3i = (PFNGLRASTERPOS3IPROC)load("glRasterPos3i"); + glad_glRasterPos3iv = (PFNGLRASTERPOS3IVPROC)load("glRasterPos3iv"); + glad_glRasterPos3s = (PFNGLRASTERPOS3SPROC)load("glRasterPos3s"); + glad_glRasterPos3sv = (PFNGLRASTERPOS3SVPROC)load("glRasterPos3sv"); + glad_glRasterPos4d = (PFNGLRASTERPOS4DPROC)load("glRasterPos4d"); + glad_glRasterPos4dv = (PFNGLRASTERPOS4DVPROC)load("glRasterPos4dv"); + glad_glRasterPos4f = (PFNGLRASTERPOS4FPROC)load("glRasterPos4f"); + glad_glRasterPos4fv = (PFNGLRASTERPOS4FVPROC)load("glRasterPos4fv"); + glad_glRasterPos4i = (PFNGLRASTERPOS4IPROC)load("glRasterPos4i"); + glad_glRasterPos4iv = (PFNGLRASTERPOS4IVPROC)load("glRasterPos4iv"); + glad_glRasterPos4s = (PFNGLRASTERPOS4SPROC)load("glRasterPos4s"); + glad_glRasterPos4sv = (PFNGLRASTERPOS4SVPROC)load("glRasterPos4sv"); + glad_glRectd = (PFNGLRECTDPROC)load("glRectd"); + glad_glRectdv = (PFNGLRECTDVPROC)load("glRectdv"); + glad_glRectf = (PFNGLRECTFPROC)load("glRectf"); + glad_glRectfv = (PFNGLRECTFVPROC)load("glRectfv"); + glad_glRecti = (PFNGLRECTIPROC)load("glRecti"); + glad_glRectiv = (PFNGLRECTIVPROC)load("glRectiv"); + glad_glRects = (PFNGLRECTSPROC)load("glRects"); + glad_glRectsv = (PFNGLRECTSVPROC)load("glRectsv"); + glad_glTexCoord1d = (PFNGLTEXCOORD1DPROC)load("glTexCoord1d"); + glad_glTexCoord1dv = (PFNGLTEXCOORD1DVPROC)load("glTexCoord1dv"); + glad_glTexCoord1f = (PFNGLTEXCOORD1FPROC)load("glTexCoord1f"); + glad_glTexCoord1fv = (PFNGLTEXCOORD1FVPROC)load("glTexCoord1fv"); + glad_glTexCoord1i = (PFNGLTEXCOORD1IPROC)load("glTexCoord1i"); + glad_glTexCoord1iv = (PFNGLTEXCOORD1IVPROC)load("glTexCoord1iv"); + glad_glTexCoord1s = (PFNGLTEXCOORD1SPROC)load("glTexCoord1s"); + glad_glTexCoord1sv = (PFNGLTEXCOORD1SVPROC)load("glTexCoord1sv"); + glad_glTexCoord2d = (PFNGLTEXCOORD2DPROC)load("glTexCoord2d"); + glad_glTexCoord2dv = (PFNGLTEXCOORD2DVPROC)load("glTexCoord2dv"); + glad_glTexCoord2f = (PFNGLTEXCOORD2FPROC)load("glTexCoord2f"); + glad_glTexCoord2fv = (PFNGLTEXCOORD2FVPROC)load("glTexCoord2fv"); + glad_glTexCoord2i = (PFNGLTEXCOORD2IPROC)load("glTexCoord2i"); + glad_glTexCoord2iv = (PFNGLTEXCOORD2IVPROC)load("glTexCoord2iv"); + glad_glTexCoord2s = (PFNGLTEXCOORD2SPROC)load("glTexCoord2s"); + glad_glTexCoord2sv = (PFNGLTEXCOORD2SVPROC)load("glTexCoord2sv"); + glad_glTexCoord3d = (PFNGLTEXCOORD3DPROC)load("glTexCoord3d"); + glad_glTexCoord3dv = (PFNGLTEXCOORD3DVPROC)load("glTexCoord3dv"); + glad_glTexCoord3f = (PFNGLTEXCOORD3FPROC)load("glTexCoord3f"); + glad_glTexCoord3fv = (PFNGLTEXCOORD3FVPROC)load("glTexCoord3fv"); + glad_glTexCoord3i = (PFNGLTEXCOORD3IPROC)load("glTexCoord3i"); + glad_glTexCoord3iv = (PFNGLTEXCOORD3IVPROC)load("glTexCoord3iv"); + glad_glTexCoord3s = (PFNGLTEXCOORD3SPROC)load("glTexCoord3s"); + glad_glTexCoord3sv = (PFNGLTEXCOORD3SVPROC)load("glTexCoord3sv"); + glad_glTexCoord4d = (PFNGLTEXCOORD4DPROC)load("glTexCoord4d"); + glad_glTexCoord4dv = (PFNGLTEXCOORD4DVPROC)load("glTexCoord4dv"); + glad_glTexCoord4f = (PFNGLTEXCOORD4FPROC)load("glTexCoord4f"); + glad_glTexCoord4fv = (PFNGLTEXCOORD4FVPROC)load("glTexCoord4fv"); + glad_glTexCoord4i = (PFNGLTEXCOORD4IPROC)load("glTexCoord4i"); + glad_glTexCoord4iv = (PFNGLTEXCOORD4IVPROC)load("glTexCoord4iv"); + glad_glTexCoord4s = (PFNGLTEXCOORD4SPROC)load("glTexCoord4s"); + glad_glTexCoord4sv = (PFNGLTEXCOORD4SVPROC)load("glTexCoord4sv"); + glad_glVertex2d = (PFNGLVERTEX2DPROC)load("glVertex2d"); + glad_glVertex2dv = (PFNGLVERTEX2DVPROC)load("glVertex2dv"); + glad_glVertex2f = (PFNGLVERTEX2FPROC)load("glVertex2f"); + glad_glVertex2fv = (PFNGLVERTEX2FVPROC)load("glVertex2fv"); + glad_glVertex2i = (PFNGLVERTEX2IPROC)load("glVertex2i"); + glad_glVertex2iv = (PFNGLVERTEX2IVPROC)load("glVertex2iv"); + glad_glVertex2s = (PFNGLVERTEX2SPROC)load("glVertex2s"); + glad_glVertex2sv = (PFNGLVERTEX2SVPROC)load("glVertex2sv"); + glad_glVertex3d = (PFNGLVERTEX3DPROC)load("glVertex3d"); + glad_glVertex3dv = (PFNGLVERTEX3DVPROC)load("glVertex3dv"); + glad_glVertex3f = (PFNGLVERTEX3FPROC)load("glVertex3f"); + glad_glVertex3fv = (PFNGLVERTEX3FVPROC)load("glVertex3fv"); + glad_glVertex3i = (PFNGLVERTEX3IPROC)load("glVertex3i"); + glad_glVertex3iv = (PFNGLVERTEX3IVPROC)load("glVertex3iv"); + glad_glVertex3s = (PFNGLVERTEX3SPROC)load("glVertex3s"); + glad_glVertex3sv = (PFNGLVERTEX3SVPROC)load("glVertex3sv"); + glad_glVertex4d = (PFNGLVERTEX4DPROC)load("glVertex4d"); + glad_glVertex4dv = (PFNGLVERTEX4DVPROC)load("glVertex4dv"); + glad_glVertex4f = (PFNGLVERTEX4FPROC)load("glVertex4f"); + glad_glVertex4fv = (PFNGLVERTEX4FVPROC)load("glVertex4fv"); + glad_glVertex4i = (PFNGLVERTEX4IPROC)load("glVertex4i"); + glad_glVertex4iv = (PFNGLVERTEX4IVPROC)load("glVertex4iv"); + glad_glVertex4s = (PFNGLVERTEX4SPROC)load("glVertex4s"); + glad_glVertex4sv = (PFNGLVERTEX4SVPROC)load("glVertex4sv"); + glad_glClipPlane = (PFNGLCLIPPLANEPROC)load("glClipPlane"); + glad_glColorMaterial = (PFNGLCOLORMATERIALPROC)load("glColorMaterial"); + glad_glFogf = (PFNGLFOGFPROC)load("glFogf"); + glad_glFogfv = (PFNGLFOGFVPROC)load("glFogfv"); + glad_glFogi = (PFNGLFOGIPROC)load("glFogi"); + glad_glFogiv = (PFNGLFOGIVPROC)load("glFogiv"); + glad_glLightf = (PFNGLLIGHTFPROC)load("glLightf"); + glad_glLightfv = (PFNGLLIGHTFVPROC)load("glLightfv"); + glad_glLighti = (PFNGLLIGHTIPROC)load("glLighti"); + glad_glLightiv = (PFNGLLIGHTIVPROC)load("glLightiv"); + glad_glLightModelf = (PFNGLLIGHTMODELFPROC)load("glLightModelf"); + glad_glLightModelfv = (PFNGLLIGHTMODELFVPROC)load("glLightModelfv"); + glad_glLightModeli = (PFNGLLIGHTMODELIPROC)load("glLightModeli"); + glad_glLightModeliv = (PFNGLLIGHTMODELIVPROC)load("glLightModeliv"); + glad_glLineStipple = (PFNGLLINESTIPPLEPROC)load("glLineStipple"); + glad_glMaterialf = (PFNGLMATERIALFPROC)load("glMaterialf"); + glad_glMaterialfv = (PFNGLMATERIALFVPROC)load("glMaterialfv"); + glad_glMateriali = (PFNGLMATERIALIPROC)load("glMateriali"); + glad_glMaterialiv = (PFNGLMATERIALIVPROC)load("glMaterialiv"); + glad_glPolygonStipple = (PFNGLPOLYGONSTIPPLEPROC)load("glPolygonStipple"); + glad_glShadeModel = (PFNGLSHADEMODELPROC)load("glShadeModel"); + glad_glTexEnvf = (PFNGLTEXENVFPROC)load("glTexEnvf"); + glad_glTexEnvfv = (PFNGLTEXENVFVPROC)load("glTexEnvfv"); + glad_glTexEnvi = (PFNGLTEXENVIPROC)load("glTexEnvi"); + glad_glTexEnviv = (PFNGLTEXENVIVPROC)load("glTexEnviv"); + glad_glTexGend = (PFNGLTEXGENDPROC)load("glTexGend"); + glad_glTexGendv = (PFNGLTEXGENDVPROC)load("glTexGendv"); + glad_glTexGenf = (PFNGLTEXGENFPROC)load("glTexGenf"); + glad_glTexGenfv = (PFNGLTEXGENFVPROC)load("glTexGenfv"); + glad_glTexGeni = (PFNGLTEXGENIPROC)load("glTexGeni"); + glad_glTexGeniv = (PFNGLTEXGENIVPROC)load("glTexGeniv"); + glad_glFeedbackBuffer = (PFNGLFEEDBACKBUFFERPROC)load("glFeedbackBuffer"); + glad_glSelectBuffer = (PFNGLSELECTBUFFERPROC)load("glSelectBuffer"); + glad_glRenderMode = (PFNGLRENDERMODEPROC)load("glRenderMode"); + glad_glInitNames = (PFNGLINITNAMESPROC)load("glInitNames"); + glad_glLoadName = (PFNGLLOADNAMEPROC)load("glLoadName"); + glad_glPassThrough = (PFNGLPASSTHROUGHPROC)load("glPassThrough"); + glad_glPopName = (PFNGLPOPNAMEPROC)load("glPopName"); + glad_glPushName = (PFNGLPUSHNAMEPROC)load("glPushName"); + glad_glClearAccum = (PFNGLCLEARACCUMPROC)load("glClearAccum"); + glad_glClearIndex = (PFNGLCLEARINDEXPROC)load("glClearIndex"); + glad_glIndexMask = (PFNGLINDEXMASKPROC)load("glIndexMask"); + glad_glAccum = (PFNGLACCUMPROC)load("glAccum"); + glad_glPopAttrib = (PFNGLPOPATTRIBPROC)load("glPopAttrib"); + glad_glPushAttrib = (PFNGLPUSHATTRIBPROC)load("glPushAttrib"); + glad_glMap1d = (PFNGLMAP1DPROC)load("glMap1d"); + glad_glMap1f = (PFNGLMAP1FPROC)load("glMap1f"); + glad_glMap2d = (PFNGLMAP2DPROC)load("glMap2d"); + glad_glMap2f = (PFNGLMAP2FPROC)load("glMap2f"); + glad_glMapGrid1d = (PFNGLMAPGRID1DPROC)load("glMapGrid1d"); + glad_glMapGrid1f = (PFNGLMAPGRID1FPROC)load("glMapGrid1f"); + glad_glMapGrid2d = (PFNGLMAPGRID2DPROC)load("glMapGrid2d"); + glad_glMapGrid2f = (PFNGLMAPGRID2FPROC)load("glMapGrid2f"); + glad_glEvalCoord1d = (PFNGLEVALCOORD1DPROC)load("glEvalCoord1d"); + glad_glEvalCoord1dv = (PFNGLEVALCOORD1DVPROC)load("glEvalCoord1dv"); + glad_glEvalCoord1f = (PFNGLEVALCOORD1FPROC)load("glEvalCoord1f"); + glad_glEvalCoord1fv = (PFNGLEVALCOORD1FVPROC)load("glEvalCoord1fv"); + glad_glEvalCoord2d = (PFNGLEVALCOORD2DPROC)load("glEvalCoord2d"); + glad_glEvalCoord2dv = (PFNGLEVALCOORD2DVPROC)load("glEvalCoord2dv"); + glad_glEvalCoord2f = (PFNGLEVALCOORD2FPROC)load("glEvalCoord2f"); + glad_glEvalCoord2fv = (PFNGLEVALCOORD2FVPROC)load("glEvalCoord2fv"); + glad_glEvalMesh1 = (PFNGLEVALMESH1PROC)load("glEvalMesh1"); + glad_glEvalPoint1 = (PFNGLEVALPOINT1PROC)load("glEvalPoint1"); + glad_glEvalMesh2 = (PFNGLEVALMESH2PROC)load("glEvalMesh2"); + glad_glEvalPoint2 = (PFNGLEVALPOINT2PROC)load("glEvalPoint2"); + glad_glAlphaFunc = (PFNGLALPHAFUNCPROC)load("glAlphaFunc"); + glad_glPixelZoom = (PFNGLPIXELZOOMPROC)load("glPixelZoom"); + glad_glPixelTransferf = (PFNGLPIXELTRANSFERFPROC)load("glPixelTransferf"); + glad_glPixelTransferi = (PFNGLPIXELTRANSFERIPROC)load("glPixelTransferi"); + glad_glPixelMapfv = (PFNGLPIXELMAPFVPROC)load("glPixelMapfv"); + glad_glPixelMapuiv = (PFNGLPIXELMAPUIVPROC)load("glPixelMapuiv"); + glad_glPixelMapusv = (PFNGLPIXELMAPUSVPROC)load("glPixelMapusv"); + glad_glCopyPixels = (PFNGLCOPYPIXELSPROC)load("glCopyPixels"); + glad_glDrawPixels = (PFNGLDRAWPIXELSPROC)load("glDrawPixels"); + glad_glGetClipPlane = (PFNGLGETCLIPPLANEPROC)load("glGetClipPlane"); + glad_glGetLightfv = (PFNGLGETLIGHTFVPROC)load("glGetLightfv"); + glad_glGetLightiv = (PFNGLGETLIGHTIVPROC)load("glGetLightiv"); + glad_glGetMapdv = (PFNGLGETMAPDVPROC)load("glGetMapdv"); + glad_glGetMapfv = (PFNGLGETMAPFVPROC)load("glGetMapfv"); + glad_glGetMapiv = (PFNGLGETMAPIVPROC)load("glGetMapiv"); + glad_glGetMaterialfv = (PFNGLGETMATERIALFVPROC)load("glGetMaterialfv"); + glad_glGetMaterialiv = (PFNGLGETMATERIALIVPROC)load("glGetMaterialiv"); + glad_glGetPixelMapfv = (PFNGLGETPIXELMAPFVPROC)load("glGetPixelMapfv"); + glad_glGetPixelMapuiv = (PFNGLGETPIXELMAPUIVPROC)load("glGetPixelMapuiv"); + glad_glGetPixelMapusv = (PFNGLGETPIXELMAPUSVPROC)load("glGetPixelMapusv"); + glad_glGetPolygonStipple = + (PFNGLGETPOLYGONSTIPPLEPROC)load("glGetPolygonStipple"); + glad_glGetTexEnvfv = (PFNGLGETTEXENVFVPROC)load("glGetTexEnvfv"); + glad_glGetTexEnviv = (PFNGLGETTEXENVIVPROC)load("glGetTexEnviv"); + glad_glGetTexGendv = (PFNGLGETTEXGENDVPROC)load("glGetTexGendv"); + glad_glGetTexGenfv = (PFNGLGETTEXGENFVPROC)load("glGetTexGenfv"); + glad_glGetTexGeniv = (PFNGLGETTEXGENIVPROC)load("glGetTexGeniv"); + glad_glIsList = (PFNGLISLISTPROC)load("glIsList"); + glad_glFrustum = (PFNGLFRUSTUMPROC)load("glFrustum"); + glad_glLoadIdentity = (PFNGLLOADIDENTITYPROC)load("glLoadIdentity"); + glad_glLoadMatrixf = (PFNGLLOADMATRIXFPROC)load("glLoadMatrixf"); + glad_glLoadMatrixd = (PFNGLLOADMATRIXDPROC)load("glLoadMatrixd"); + glad_glMatrixMode = (PFNGLMATRIXMODEPROC)load("glMatrixMode"); + glad_glMultMatrixf = (PFNGLMULTMATRIXFPROC)load("glMultMatrixf"); + glad_glMultMatrixd = (PFNGLMULTMATRIXDPROC)load("glMultMatrixd"); + glad_glOrtho = (PFNGLORTHOPROC)load("glOrtho"); + glad_glPopMatrix = (PFNGLPOPMATRIXPROC)load("glPopMatrix"); + glad_glPushMatrix = (PFNGLPUSHMATRIXPROC)load("glPushMatrix"); + glad_glRotated = (PFNGLROTATEDPROC)load("glRotated"); + glad_glRotatef = (PFNGLROTATEFPROC)load("glRotatef"); + glad_glScaled = (PFNGLSCALEDPROC)load("glScaled"); + glad_glScalef = (PFNGLSCALEFPROC)load("glScalef"); + glad_glTranslated = (PFNGLTRANSLATEDPROC)load("glTranslated"); + glad_glTranslatef = (PFNGLTRANSLATEFPROC)load("glTranslatef"); +} +static void load_GL_VERSION_1_1(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_1) + return; + glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); + glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); + glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); + glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); + glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); + glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); + glad_glCopyTexSubImage1D = + (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); + glad_glCopyTexSubImage2D = + (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); + glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); + glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); + glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); + glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); + glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); + glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); + glad_glArrayElement = (PFNGLARRAYELEMENTPROC)load("glArrayElement"); + glad_glColorPointer = (PFNGLCOLORPOINTERPROC)load("glColorPointer"); + glad_glDisableClientState = + (PFNGLDISABLECLIENTSTATEPROC)load("glDisableClientState"); + glad_glEdgeFlagPointer = + (PFNGLEDGEFLAGPOINTERPROC)load("glEdgeFlagPointer"); + glad_glEnableClientState = + (PFNGLENABLECLIENTSTATEPROC)load("glEnableClientState"); + glad_glIndexPointer = (PFNGLINDEXPOINTERPROC)load("glIndexPointer"); + glad_glInterleavedArrays = + (PFNGLINTERLEAVEDARRAYSPROC)load("glInterleavedArrays"); + glad_glNormalPointer = (PFNGLNORMALPOINTERPROC)load("glNormalPointer"); + glad_glTexCoordPointer = + (PFNGLTEXCOORDPOINTERPROC)load("glTexCoordPointer"); + glad_glVertexPointer = (PFNGLVERTEXPOINTERPROC)load("glVertexPointer"); + glad_glAreTexturesResident = + (PFNGLARETEXTURESRESIDENTPROC)load("glAreTexturesResident"); + glad_glPrioritizeTextures = + (PFNGLPRIORITIZETEXTURESPROC)load("glPrioritizeTextures"); + glad_glIndexub = (PFNGLINDEXUBPROC)load("glIndexub"); + glad_glIndexubv = (PFNGLINDEXUBVPROC)load("glIndexubv"); + glad_glPopClientAttrib = + (PFNGLPOPCLIENTATTRIBPROC)load("glPopClientAttrib"); + glad_glPushClientAttrib = + (PFNGLPUSHCLIENTATTRIBPROC)load("glPushClientAttrib"); +} +static void load_GL_VERSION_1_2(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_2) + return; + glad_glDrawRangeElements = + (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); + glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); + glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); + glad_glCopyTexSubImage3D = + (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); +} +static void load_GL_VERSION_1_3(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_3) + return; + glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); + glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); + glad_glCompressedTexImage3D = + (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); + glad_glCompressedTexImage2D = + (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); + glad_glCompressedTexImage1D = + (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); + glad_glCompressedTexSubImage3D = + (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); + glad_glCompressedTexSubImage2D = + (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); + glad_glCompressedTexSubImage1D = + (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); + glad_glGetCompressedTexImage = + (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); + glad_glClientActiveTexture = + (PFNGLCLIENTACTIVETEXTUREPROC)load("glClientActiveTexture"); + glad_glMultiTexCoord1d = + (PFNGLMULTITEXCOORD1DPROC)load("glMultiTexCoord1d"); + glad_glMultiTexCoord1dv = + (PFNGLMULTITEXCOORD1DVPROC)load("glMultiTexCoord1dv"); + glad_glMultiTexCoord1f = + (PFNGLMULTITEXCOORD1FPROC)load("glMultiTexCoord1f"); + glad_glMultiTexCoord1fv = + (PFNGLMULTITEXCOORD1FVPROC)load("glMultiTexCoord1fv"); + glad_glMultiTexCoord1i = + (PFNGLMULTITEXCOORD1IPROC)load("glMultiTexCoord1i"); + glad_glMultiTexCoord1iv = + (PFNGLMULTITEXCOORD1IVPROC)load("glMultiTexCoord1iv"); + glad_glMultiTexCoord1s = + (PFNGLMULTITEXCOORD1SPROC)load("glMultiTexCoord1s"); + glad_glMultiTexCoord1sv = + (PFNGLMULTITEXCOORD1SVPROC)load("glMultiTexCoord1sv"); + glad_glMultiTexCoord2d = + (PFNGLMULTITEXCOORD2DPROC)load("glMultiTexCoord2d"); + glad_glMultiTexCoord2dv = + (PFNGLMULTITEXCOORD2DVPROC)load("glMultiTexCoord2dv"); + glad_glMultiTexCoord2f = + (PFNGLMULTITEXCOORD2FPROC)load("glMultiTexCoord2f"); + glad_glMultiTexCoord2fv = + (PFNGLMULTITEXCOORD2FVPROC)load("glMultiTexCoord2fv"); + glad_glMultiTexCoord2i = + (PFNGLMULTITEXCOORD2IPROC)load("glMultiTexCoord2i"); + glad_glMultiTexCoord2iv = + (PFNGLMULTITEXCOORD2IVPROC)load("glMultiTexCoord2iv"); + glad_glMultiTexCoord2s = + (PFNGLMULTITEXCOORD2SPROC)load("glMultiTexCoord2s"); + glad_glMultiTexCoord2sv = + (PFNGLMULTITEXCOORD2SVPROC)load("glMultiTexCoord2sv"); + glad_glMultiTexCoord3d = + (PFNGLMULTITEXCOORD3DPROC)load("glMultiTexCoord3d"); + glad_glMultiTexCoord3dv = + (PFNGLMULTITEXCOORD3DVPROC)load("glMultiTexCoord3dv"); + glad_glMultiTexCoord3f = + (PFNGLMULTITEXCOORD3FPROC)load("glMultiTexCoord3f"); + glad_glMultiTexCoord3fv = + (PFNGLMULTITEXCOORD3FVPROC)load("glMultiTexCoord3fv"); + glad_glMultiTexCoord3i = + (PFNGLMULTITEXCOORD3IPROC)load("glMultiTexCoord3i"); + glad_glMultiTexCoord3iv = + (PFNGLMULTITEXCOORD3IVPROC)load("glMultiTexCoord3iv"); + glad_glMultiTexCoord3s = + (PFNGLMULTITEXCOORD3SPROC)load("glMultiTexCoord3s"); + glad_glMultiTexCoord3sv = + (PFNGLMULTITEXCOORD3SVPROC)load("glMultiTexCoord3sv"); + glad_glMultiTexCoord4d = + (PFNGLMULTITEXCOORD4DPROC)load("glMultiTexCoord4d"); + glad_glMultiTexCoord4dv = + (PFNGLMULTITEXCOORD4DVPROC)load("glMultiTexCoord4dv"); + glad_glMultiTexCoord4f = + (PFNGLMULTITEXCOORD4FPROC)load("glMultiTexCoord4f"); + glad_glMultiTexCoord4fv = + (PFNGLMULTITEXCOORD4FVPROC)load("glMultiTexCoord4fv"); + glad_glMultiTexCoord4i = + (PFNGLMULTITEXCOORD4IPROC)load("glMultiTexCoord4i"); + glad_glMultiTexCoord4iv = + (PFNGLMULTITEXCOORD4IVPROC)load("glMultiTexCoord4iv"); + glad_glMultiTexCoord4s = + (PFNGLMULTITEXCOORD4SPROC)load("glMultiTexCoord4s"); + glad_glMultiTexCoord4sv = + (PFNGLMULTITEXCOORD4SVPROC)load("glMultiTexCoord4sv"); + glad_glLoadTransposeMatrixf = + (PFNGLLOADTRANSPOSEMATRIXFPROC)load("glLoadTransposeMatrixf"); + glad_glLoadTransposeMatrixd = + (PFNGLLOADTRANSPOSEMATRIXDPROC)load("glLoadTransposeMatrixd"); + glad_glMultTransposeMatrixf = + (PFNGLMULTTRANSPOSEMATRIXFPROC)load("glMultTransposeMatrixf"); + glad_glMultTransposeMatrixd = + (PFNGLMULTTRANSPOSEMATRIXDPROC)load("glMultTransposeMatrixd"); +} +static void load_GL_VERSION_1_4(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_4) + return; + glad_glBlendFuncSeparate = + (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); + glad_glMultiDrawArrays = + (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); + glad_glMultiDrawElements = + (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); + glad_glPointParameterf = + (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); + glad_glPointParameterfv = + (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); + glad_glPointParameteri = + (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); + glad_glPointParameteriv = + (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); + glad_glFogCoordf = (PFNGLFOGCOORDFPROC)load("glFogCoordf"); + glad_glFogCoordfv = (PFNGLFOGCOORDFVPROC)load("glFogCoordfv"); + glad_glFogCoordd = (PFNGLFOGCOORDDPROC)load("glFogCoordd"); + glad_glFogCoorddv = (PFNGLFOGCOORDDVPROC)load("glFogCoorddv"); + glad_glFogCoordPointer = + (PFNGLFOGCOORDPOINTERPROC)load("glFogCoordPointer"); + glad_glSecondaryColor3b = + (PFNGLSECONDARYCOLOR3BPROC)load("glSecondaryColor3b"); + glad_glSecondaryColor3bv = + (PFNGLSECONDARYCOLOR3BVPROC)load("glSecondaryColor3bv"); + glad_glSecondaryColor3d = + (PFNGLSECONDARYCOLOR3DPROC)load("glSecondaryColor3d"); + glad_glSecondaryColor3dv = + (PFNGLSECONDARYCOLOR3DVPROC)load("glSecondaryColor3dv"); + glad_glSecondaryColor3f = + (PFNGLSECONDARYCOLOR3FPROC)load("glSecondaryColor3f"); + glad_glSecondaryColor3fv = + (PFNGLSECONDARYCOLOR3FVPROC)load("glSecondaryColor3fv"); + glad_glSecondaryColor3i = + (PFNGLSECONDARYCOLOR3IPROC)load("glSecondaryColor3i"); + glad_glSecondaryColor3iv = + (PFNGLSECONDARYCOLOR3IVPROC)load("glSecondaryColor3iv"); + glad_glSecondaryColor3s = + (PFNGLSECONDARYCOLOR3SPROC)load("glSecondaryColor3s"); + glad_glSecondaryColor3sv = + (PFNGLSECONDARYCOLOR3SVPROC)load("glSecondaryColor3sv"); + glad_glSecondaryColor3ub = + (PFNGLSECONDARYCOLOR3UBPROC)load("glSecondaryColor3ub"); + glad_glSecondaryColor3ubv = + (PFNGLSECONDARYCOLOR3UBVPROC)load("glSecondaryColor3ubv"); + glad_glSecondaryColor3ui = + (PFNGLSECONDARYCOLOR3UIPROC)load("glSecondaryColor3ui"); + glad_glSecondaryColor3uiv = + (PFNGLSECONDARYCOLOR3UIVPROC)load("glSecondaryColor3uiv"); + glad_glSecondaryColor3us = + (PFNGLSECONDARYCOLOR3USPROC)load("glSecondaryColor3us"); + glad_glSecondaryColor3usv = + (PFNGLSECONDARYCOLOR3USVPROC)load("glSecondaryColor3usv"); + glad_glSecondaryColorPointer = + (PFNGLSECONDARYCOLORPOINTERPROC)load("glSecondaryColorPointer"); + glad_glWindowPos2d = (PFNGLWINDOWPOS2DPROC)load("glWindowPos2d"); + glad_glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)load("glWindowPos2dv"); + glad_glWindowPos2f = (PFNGLWINDOWPOS2FPROC)load("glWindowPos2f"); + glad_glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)load("glWindowPos2fv"); + glad_glWindowPos2i = (PFNGLWINDOWPOS2IPROC)load("glWindowPos2i"); + glad_glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)load("glWindowPos2iv"); + glad_glWindowPos2s = (PFNGLWINDOWPOS2SPROC)load("glWindowPos2s"); + glad_glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)load("glWindowPos2sv"); + glad_glWindowPos3d = (PFNGLWINDOWPOS3DPROC)load("glWindowPos3d"); + glad_glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)load("glWindowPos3dv"); + glad_glWindowPos3f = (PFNGLWINDOWPOS3FPROC)load("glWindowPos3f"); + glad_glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)load("glWindowPos3fv"); + glad_glWindowPos3i = (PFNGLWINDOWPOS3IPROC)load("glWindowPos3i"); + glad_glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)load("glWindowPos3iv"); + glad_glWindowPos3s = (PFNGLWINDOWPOS3SPROC)load("glWindowPos3s"); + glad_glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)load("glWindowPos3sv"); + glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); + glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); +} +static void load_GL_VERSION_1_5(GLADloadproc load) { + if (!GLAD_GL_VERSION_1_5) + return; + glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); + glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); + glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); + glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); + glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); + glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); + glad_glGetQueryObjectiv = + (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); + glad_glGetQueryObjectuiv = + (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); + glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); + glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); + glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); + glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); + glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); + glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); + glad_glGetBufferSubData = + (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); + glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); + glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); + glad_glGetBufferParameteriv = + (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); + glad_glGetBufferPointerv = + (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); +} +static void load_GL_VERSION_2_0(GLADloadproc load) { + if (!GLAD_GL_VERSION_2_0) + return; + glad_glBlendEquationSeparate = + (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); + glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); + glad_glStencilOpSeparate = + (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); + glad_glStencilFuncSeparate = + (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); + glad_glStencilMaskSeparate = + (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); + glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); + glad_glBindAttribLocation = + (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); + glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); + glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); + glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); + glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); + glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); + glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); + glad_glDisableVertexAttribArray = + (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); + glad_glEnableVertexAttribArray = + (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); + glad_glGetActiveAttrib = + (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); + glad_glGetActiveUniform = + (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); + glad_glGetAttachedShaders = + (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); + glad_glGetAttribLocation = + (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); + glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); + glad_glGetProgramInfoLog = + (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); + glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); + glad_glGetShaderInfoLog = + (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); + glad_glGetShaderSource = + (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); + glad_glGetUniformLocation = + (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); + glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); + glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); + glad_glGetVertexAttribdv = + (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); + glad_glGetVertexAttribfv = + (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); + glad_glGetVertexAttribiv = + (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); + glad_glGetVertexAttribPointerv = + (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); + glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); + glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); + glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); + glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); + glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); + glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); + glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); + glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); + glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); + glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); + glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); + glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); + glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); + glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); + glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); + glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); + glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); + glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); + glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); + glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); + glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); + glad_glUniformMatrix2fv = + (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); + glad_glUniformMatrix3fv = + (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); + glad_glUniformMatrix4fv = + (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); + glad_glValidateProgram = + (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); + glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); + glad_glVertexAttrib1dv = + (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); + glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); + glad_glVertexAttrib1fv = + (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); + glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); + glad_glVertexAttrib1sv = + (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); + glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); + glad_glVertexAttrib2dv = + (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); + glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); + glad_glVertexAttrib2fv = + (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); + glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); + glad_glVertexAttrib2sv = + (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); + glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); + glad_glVertexAttrib3dv = + (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); + glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); + glad_glVertexAttrib3fv = + (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); + glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); + glad_glVertexAttrib3sv = + (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); + glad_glVertexAttrib4Nbv = + (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); + glad_glVertexAttrib4Niv = + (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); + glad_glVertexAttrib4Nsv = + (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); + glad_glVertexAttrib4Nub = + (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); + glad_glVertexAttrib4Nubv = + (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); + glad_glVertexAttrib4Nuiv = + (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); + glad_glVertexAttrib4Nusv = + (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); + glad_glVertexAttrib4bv = + (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); + glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); + glad_glVertexAttrib4dv = + (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); + glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); + glad_glVertexAttrib4fv = + (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); + glad_glVertexAttrib4iv = + (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); + glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); + glad_glVertexAttrib4sv = + (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); + glad_glVertexAttrib4ubv = + (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); + glad_glVertexAttrib4uiv = + (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); + glad_glVertexAttrib4usv = + (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); + glad_glVertexAttribPointer = + (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); +} +static void load_GL_VERSION_2_1(GLADloadproc load) { + if (!GLAD_GL_VERSION_2_1) + return; + glad_glUniformMatrix2x3fv = + (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); + glad_glUniformMatrix3x2fv = + (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); + glad_glUniformMatrix2x4fv = + (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); + glad_glUniformMatrix4x2fv = + (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); + glad_glUniformMatrix3x4fv = + (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); + glad_glUniformMatrix4x3fv = + (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); +} +static void load_GL_VERSION_3_0(GLADloadproc load) { + if (!GLAD_GL_VERSION_3_0) + return; + glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); + glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); + glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); + glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); + glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); + glad_glBeginTransformFeedback = + (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); + glad_glEndTransformFeedback = + (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); + glad_glBindBufferRange = + (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glTransformFeedbackVaryings = + (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); + glad_glGetTransformFeedbackVarying = + (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load( + "glGetTransformFeedbackVarying"); + glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); + glad_glBeginConditionalRender = + (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); + glad_glEndConditionalRender = + (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); + glad_glVertexAttribIPointer = + (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); + glad_glGetVertexAttribIiv = + (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); + glad_glGetVertexAttribIuiv = + (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); + glad_glVertexAttribI1i = + (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); + glad_glVertexAttribI2i = + (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); + glad_glVertexAttribI3i = + (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); + glad_glVertexAttribI4i = + (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); + glad_glVertexAttribI1ui = + (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); + glad_glVertexAttribI2ui = + (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); + glad_glVertexAttribI3ui = + (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); + glad_glVertexAttribI4ui = + (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); + glad_glVertexAttribI1iv = + (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); + glad_glVertexAttribI2iv = + (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); + glad_glVertexAttribI3iv = + (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); + glad_glVertexAttribI4iv = + (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); + glad_glVertexAttribI1uiv = + (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); + glad_glVertexAttribI2uiv = + (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); + glad_glVertexAttribI3uiv = + (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); + glad_glVertexAttribI4uiv = + (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); + glad_glVertexAttribI4bv = + (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); + glad_glVertexAttribI4sv = + (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); + glad_glVertexAttribI4ubv = + (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); + glad_glVertexAttribI4usv = + (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); + glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); + glad_glBindFragDataLocation = + (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); + glad_glGetFragDataLocation = + (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); + glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); + glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); + glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); + glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); + glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); + glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); + glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); + glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); + glad_glTexParameterIiv = + (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); + glad_glTexParameterIuiv = + (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); + glad_glGetTexParameterIiv = + (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); + glad_glGetTexParameterIuiv = + (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); + glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); + glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); + glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); + glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); + glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); + glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); + glad_glBindRenderbuffer = + (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); + glad_glDeleteRenderbuffers = + (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); + glad_glGenRenderbuffers = + (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); + glad_glRenderbufferStorage = + (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); + glad_glGetRenderbufferParameteriv = + (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load( + "glGetRenderbufferParameteriv"); + glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); + glad_glBindFramebuffer = + (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); + glad_glDeleteFramebuffers = + (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); + glad_glGenFramebuffers = + (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); + glad_glCheckFramebufferStatus = + (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); + glad_glFramebufferTexture1D = + (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); + glad_glFramebufferTexture2D = + (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); + glad_glFramebufferTexture3D = + (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); + glad_glFramebufferRenderbuffer = + (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); + glad_glGetFramebufferAttachmentParameteriv = + (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load( + "glGetFramebufferAttachmentParameteriv"); + glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); + glad_glBlitFramebuffer = + (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); + glad_glRenderbufferStorageMultisample = + (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load( + "glRenderbufferStorageMultisample"); + glad_glFramebufferTextureLayer = + (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); + glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); + glad_glFlushMappedBufferRange = + (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); + glad_glBindVertexArray = + (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); + glad_glDeleteVertexArrays = + (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); + glad_glGenVertexArrays = + (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); + glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); +} +static void load_GL_VERSION_3_1(GLADloadproc load) { + if (!GLAD_GL_VERSION_3_1) + return; + glad_glDrawArraysInstanced = + (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); + glad_glDrawElementsInstanced = + (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); + glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); + glad_glPrimitiveRestartIndex = + (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); + glad_glCopyBufferSubData = + (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); + glad_glGetUniformIndices = + (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); + glad_glGetActiveUniformsiv = + (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); + glad_glGetActiveUniformName = + (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); + glad_glGetUniformBlockIndex = + (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); + glad_glGetActiveUniformBlockiv = + (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); + glad_glGetActiveUniformBlockName = + (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); + glad_glUniformBlockBinding = + (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); + glad_glBindBufferRange = + (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); + glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); + glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); +} +static void load_GL_VERSION_3_2(GLADloadproc load) { + if (!GLAD_GL_VERSION_3_2) + return; + glad_glDrawElementsBaseVertex = + (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); + glad_glDrawRangeElementsBaseVertex = + (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load( + "glDrawRangeElementsBaseVertex"); + glad_glDrawElementsInstancedBaseVertex = + (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load( + "glDrawElementsInstancedBaseVertex"); + glad_glMultiDrawElementsBaseVertex = + (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load( + "glMultiDrawElementsBaseVertex"); + glad_glProvokingVertex = + (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); + glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); + glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); + glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); + glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); + glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); + glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); + glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); + glad_glGetInteger64i_v = + (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); + glad_glGetBufferParameteri64v = + (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); + glad_glFramebufferTexture = + (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); + glad_glTexImage2DMultisample = + (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); + glad_glTexImage3DMultisample = + (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); + glad_glGetMultisamplefv = + (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); + glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); +} +static void load_GL_VERSION_3_3(GLADloadproc load) { + if (!GLAD_GL_VERSION_3_3) + return; + glad_glBindFragDataLocationIndexed = + (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load( + "glBindFragDataLocationIndexed"); + glad_glGetFragDataIndex = + (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); + glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); + glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); + glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); + glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); + glad_glSamplerParameteri = + (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); + glad_glSamplerParameteriv = + (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); + glad_glSamplerParameterf = + (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); + glad_glSamplerParameterfv = + (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); + glad_glSamplerParameterIiv = + (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); + glad_glSamplerParameterIuiv = + (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); + glad_glGetSamplerParameteriv = + (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); + glad_glGetSamplerParameterIiv = + (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); + glad_glGetSamplerParameterfv = + (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); + glad_glGetSamplerParameterIuiv = + (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); + glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); + glad_glGetQueryObjecti64v = + (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); + glad_glGetQueryObjectui64v = + (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); + glad_glVertexAttribDivisor = + (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); + glad_glVertexAttribP1ui = + (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); + glad_glVertexAttribP1uiv = + (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); + glad_glVertexAttribP2ui = + (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); + glad_glVertexAttribP2uiv = + (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); + glad_glVertexAttribP3ui = + (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); + glad_glVertexAttribP3uiv = + (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); + glad_glVertexAttribP4ui = + (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); + glad_glVertexAttribP4uiv = + (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); + glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); + glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); + glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); + glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); + glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); + glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); + glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); + glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); + glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); + glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); + glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); + glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); + glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); + glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); + glad_glMultiTexCoordP1ui = + (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); + glad_glMultiTexCoordP1uiv = + (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); + glad_glMultiTexCoordP2ui = + (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); + glad_glMultiTexCoordP2uiv = + (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); + glad_glMultiTexCoordP3ui = + (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); + glad_glMultiTexCoordP3uiv = + (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); + glad_glMultiTexCoordP4ui = + (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); + glad_glMultiTexCoordP4uiv = + (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); + glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); + glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); + glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); + glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); + glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); + glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); + glad_glSecondaryColorP3ui = + (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); + glad_glSecondaryColorP3uiv = + (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); +} +static int find_extensionsGL(void) { + if (!get_exts()) + return 0; + (void)&has_ext; + free_exts(); + return 1; +} + +static void find_coreGL(void) { + + /* Thank you @elmindreda + * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 + * https://github.com/glfw/glfw/blob/master/src/context.c#L36 + */ + int i, major, minor; + + const char *version; + const char *prefixes[] = {"OpenGL ES-CM ", "OpenGL ES-CL ", "OpenGL ES ", + NULL}; + + version = (const char *)glGetString(GL_VERSION); + if (!version) + return; + + for (i = 0; prefixes[i]; i++) { + const size_t length = strlen(prefixes[i]); + if (strncmp(version, prefixes[i], length) == 0) { + version += length; + break; + } + } + +/* PR #18 */ +#ifdef _MSC_VER + sscanf_s(version, "%d.%d", &major, &minor); +#else + sscanf(version, "%d.%d", &major, &minor); +#endif + + GLVersion.major = major; + GLVersion.minor = minor; + max_loaded_major = major; + max_loaded_minor = minor; + GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; + GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; + GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; + GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; + GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; + GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; + GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; + GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; + GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; + GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; + GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; + GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; + if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 3)) { + max_loaded_major = 3; + max_loaded_minor = 3; + } +} + +int gladLoadGLLoader(GLADloadproc load) { + GLVersion.major = 0; + GLVersion.minor = 0; + glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); + if (glGetString == NULL) + return 0; + if (glGetString(GL_VERSION) == NULL) + return 0; + find_coreGL(); + load_GL_VERSION_1_0(load); + load_GL_VERSION_1_1(load); + load_GL_VERSION_1_2(load); + load_GL_VERSION_1_3(load); + load_GL_VERSION_1_4(load); + load_GL_VERSION_1_5(load); + load_GL_VERSION_2_0(load); + load_GL_VERSION_2_1(load); + load_GL_VERSION_3_0(load); + load_GL_VERSION_3_1(load); + load_GL_VERSION_3_2(load); + load_GL_VERSION_3_3(load); + + if (!find_extensionsGL()) + return 0; + return GLVersion.major != 0 || GLVersion.minor != 0; +} diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..c785f41f2f54b3d3cae5bee297ef5af7b0598374 GIT binary patch literal 1641845 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

cb--!3tJEJxWgu`6D) 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

4++H27A|dxrvU<(pU%7BS(Ey-)G4<3 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

%Xr2=k48i|LyiO2-Dv7 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%0AF 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�<;Bb>Dy>cdT>eAGcL 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

WIjB}ZoDzIGNv^4+pA?Jv5`$Dh=Q!dS{PbZGWd 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 *MZ_b%M&ch*(G2yfn= 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≀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%0DrOEBD%h@ zp$NyNYMGlb&=BeKcU2Qf=;ePoE}vE$^oPU*r}gN(LJ|EJIls*|+|dy7Iu_}-*V|Jk zH}o>!jhWO+8>qLsfO{M6?mxfU8)8Z1%9njal^11<^Rz6?7w)bMYw&**or^!y{};z+ z$WSr261j}zR=Fg}UBhxIWOBb7nrl<;OihhsC~{YBF=lRaA3`REqDBl!k*~`tmnFt; zzsLT7?X&IkdB5N1yw3AUbr&%C?hKgt1W*!AwTGle6sh#_1{!`C+p@>FkaGGU;tf}{ zpcdR{=6?J_CIE}HwqlT=eKx`fdHR4m7Zy7{e(T^`ug26wY>n%3m$lXvPnn{M-5E<_ zg}tWq(n;;QA9~U&dtICR<2^?eIlFNQ>$1%v#=Yci#5d=1v4g}T|D*qob}tl5P4R-T9KN@GMQO09jXIW$(gzWRgcU?T)hc*p2WS-X=u| zj7>R%J|S5J_b|fu}P`7w%{<*a={0V@wz-N42%sf zEv~b~j8WMCc+{AVxKK-_h|L@nU!TUl$mII$EGw69Fe{QYsiacv%^GXWk)*BEwfu+b z9J|J2auM$G7G2?m$vhN>LLx(d6_rGc2|XE05a!Nn6KP2%3m~UnsTTuPxw)}(1IUlb|0Au1{H14p114z zrt4@nG3W1cVhnBcB)yh)p4V^xO9ELk+Cvl`4}6ucbUx#il4j*OXx*z=kuwpQzt_#! zk7@d_6vwAM*${D|i0i}MNSqE&()r#g{G6&r_wt#L*l#8kY8H=)I#Y!l$3PGWDMbY0 zJOTmIZ|iH6gDkxe-?B1%=*YQ&3Fli7cyij@)n2UnCiFtwvBQ72j@}(H4fk+IKMaqg z51t?G8tzAOgjKh1usk^iK-xpZ)qCsKUr(hg%UV=Jcp#m`wL=VMW$)vD;4&($o;Mep zW{>SD@9Gm-&2%pZd~j9)W>h&SRj6g=&7pwhBF6Jv%+o%b=jUi&@;Cm7HHBd+?qWKX z8a~b3o6LYPZ6=#5&>UA+@bWrFn*9Vos<(BA;k?bydb& z>3DlTsl|HPD68Ily`45}g|L8mJk|IyB4b(nsuIwP@nkMj+TSGly-G>e3cEG6D}?AV z<1hlbX}P`KP&s!3*4Lig4fVNs+jM5gdjU+U{y4*yJv&Z+TJD-7!@l@m!k%Upc~ywW zTLcB)9@j)xW6SSCPyhT)F-}-X$I9!ibTIcHSKtFNwjBkg@BZ_d8S zSc^#+3YVM%EyBJCW{Mate@dzNt}gddO^R$5a>m3e4~*|WVXP*7rcv|dMv7F$() z#;b3yA2kIJlz1a52z>Cb2D9({G_OA{ZLvYH>IHiz__jj!<4(-8HTG-{;r=qD0%8Y| z@0Ai-@KNx*aISB;u=2S@4NJ8^G%GJ}_7R3xWO)<)HH5jwGXI71nb^~_M4nV%cD3Yx zIj;+Yp7H&ekDnhmH#CgUxn4Qz%n#833I>=9?jXjBexLJh9deUVH^iA&?{r_9B;uez z!LP^Q=X^KJFOYVhz&hs{_gNCm(M6@r?x6N3SZGH1b~4#X-N{pR0J0ASv^ClK-jNEL&__P1w#T+fDdH zvkJy9O1~|(I<+{|Oyc3n0>|Ea3kAHo>v0=Br|meoqBs6z+n~~&=#gBl_Do&0u~kZ3 z+`|+q|BuC7h^H@fv#MC-c32y%8>NF0>k9sYE0g9C@?cirP4n%I%|L)}TfYGV<4icz zBKXEc&+g6o+pFSEx#P-5%%g3?Bf|p*`=c;?`yCmwY`5#C^yQWsw?ij z-wrd6#5Gf`<0iCj-}(D(ru|cz(NGbQ^V`zTiS)mm#bwBRC0`8B>&tpVeX?xnQhJC2 z_}ESPAd=Jf`yK;3zoUGYI}CV}uyd%fMX$CpzEvw1DQ(cAo|M(qWis`9z&Pdo0LqH} z^N3xv&#U=2b0!qwt(@@+-{`Zs|Gs@;a1(4BGbcsI>i?Q2fB0*D3j$d8U#g2+m(*gZ zPs}|3K|(-5Q%hGZl=h#ulLXMPY*|j3Phx;(yME)(5#+IigMTdP!_A(5mrBN04EN3- zT^3}-{+f-@m(Mq$}3?r7dH9o84ME;0HYmcxTJ^ z6)3{Jh-$x!K3NXRnJ?x6NnuC-9v&YA0+v|F`8(A+2Y)l1g9!UEer?SHFU+`L$2oX) zd4~3jPFHpho@TlV3p?Rqesu*+$HnBi^Mu~V)J%ENCl(6#DzVJf}mE$JH zsIfG~3Zbx$wfk~mf#gqP6{YnXY>tM!P|m1`a1I9e{q%Fab}(dY&lwpq6C);jaiND@ z>1B`nPGw^tS@TAMS9nJC)FMm~jh=ylsClNFMKx(NNfKOu|IZsCWQ7I@dT0KJJnTB6 zkC%O(NvdP6iJJ<%njR{ufX19A>6Nkge+Du!n~(T?HQ>u+gNIt8Xc^7RIo2YouAyfc zdTk5R51aT#4$bQ_;jN zy|=5Ji-aQMamR2Ib!++_p#ij50VZh#xeC(@NzPqaGJ>>br!B6^J-w`o`3lPA{e;PM zTiM?^`Gl5kCt(~>sus^W6bOOk_F*@DPL_>3OPF50Dqj`)I>~RjjxHMxx#|tQJKgQL zOX(jxA^tU*b&yOQ$N7s&-L^jOXR^%d{>)s6<2yC^R{SCGH6l|gRuqxhmZ)7k8L~Q4 zjTKVW9yv;Up91C7kdsU1((8Smss7M5!+TW6N6dHr`KdSQCqPE=1D10pqOzG9bdJ%p za@A^b&u8zU9;OXx!K*;o4@FfgZvi~NQ_;Pyl?~X{@5)+p$EPf~N}VmQ%e(9=rg=Hp z@{lzWMUHG`P({NGMo^B3~`!p&3{5rTZ4y7=r}E|CjUK7{5nG4qT) z>R5*MIwPyCayvdjE>FrKSrBXW=b!#Vw1_F3fe1C)(`(}q5_qPy6)94?#1ctRHGRV; zXI?%Q-J`t`Zg@j;FTvy5JXfYTbiftB7j8NT1MxHEd5o^kC=u>Pz2h2C&mQHF$rO@P z%X>d3{Lm%b)KiIM@}Xk^A{l77a3q+CMXuw4Nt77NM8OPF26h8K5rd*aW($W?*R z^6koRY^k~SW}#!qiQ_4D{Le+cJnCUfS;4q*L3)gepOh7xPXX+-=c9x_oNfjpxE^Dw=au1d+&$ zpI+(Sh$%8CbKLEh+a@Bn?hF_pzL{o(nLOLlIX9RFx+S0GOuv4?3uqZk;uyHU;Pv08 zZW9v0WbL0iNj)o6PEwQb!RX4~BVMf946N*sDVtJe=Nr`PumPlaUTHMN4@vkHV1D%X zuh(4^yOo9gyRj6s;Rvq0LX(GT`+b{`26K4+>sTf}b+QP2A@Y^uBpzXjKeIe+LZwNwe_g-LvN7x2Pn4c zmy8vJmxmZ${L+4`ot6*5D=&*(nq8__EP4D=oL~eRNF^amr%yvmXU2COiQz3R)SAQ;|RX z`}g+}WhJ~2^!Mz7#h=*)gE`jDnGipsX}wQ{uBAJi+rp~W>ZvODOk{x8Aad+wi?m6= z72XWR!N12~rDuFKULJHkdLA%vZcIJoRZ!NAxctBjEgK@f0FGc8F%kXP0> zpP*yaoY_)o&P!~kJ8%$0H|JeK38oXB_}UX1PB?nxwSuh0mO|cF&cgIZ0UH7XT9iW0 zn|BFM6+hJ>{A2Fj0;j7LaN@tWZ68GGwcG|a2?>J5YaXf%hFOAT0$E$3_u?xljjze- zPt8S_m!yy2BvZ`joh1iHux(3jQ%%-oZ_u`vn7AsQVER3OtNZr9kER-O{Y=B3?P?rD z;#V*50yvZ{K%MSZ`V)C-{hHKx+A$8L!A?3nSu#ZYbH_}Z$FlV`NZqe8_Mg&_@9x<9 zw9d)6Y`c}VQTsrWYw16`z zzhO4Kkk^ryd=?vs5IwnidTUSeka*;oIWORSs4)Nh5A8uiycxHHcjYM8uY?Fca*V$b zDmMOTMz#+xh`5%p%Tr9?^fihjSqH-&$4hynY5< zz-a($!xrr%VL?vfd~fyoAesm1WT1BtWJpM?MXaWnB6qILqWpIB-wTD|vnvJpf{vaY)HF#L_3qRdRsnN)-95gb6v zo{VufqXkN%wS}x(a{0{oR#=na(ZSNy-#<^Jyxdb(_Lfh@+nw7`zR(yKZ+=|pVqX=x z|H}+w&do;5EK>Fh@ADhN%!_8w1@7EW*9AU{qCwdiUZ+WU_ZP=p(T>UYTsLG@t!#L- zz2xz^O9|ErUf)d&>Tc=Zvh}KBzs(fu3`;LpD@l-hXnYN_JhgUz;d!1Qx_rW1UeH#S zpbDs5g4p``8R?HL7^F9~=KW=s9O<@@PZx%mU1;&dBrp1oM7e&pPrh=Vr*53W>H|W{ zeII0)gw8+*4(fEEF-C9&K-ly7PvDdf!AoZkvj)^deV#f^Kd>^)yod7iA7L;b4) z@z=^6ybwk0z|r_Gt`eIoo2Z*IAshA%vNxi7xSS`|%{{>@f52eyn6g!&IM~wV`rc(` zxByc$6IKhGnd#`s4&LE+p%b{RpEw-gV2T+qadfD? zyXQJMVSsy1b$A<_&2(RtDvzrCFu^5mVBogpe?Ayod_m?oZfFOV#KUgrC& zBH8OQqGnZC$w}=Qg~nWa7o@dj7M3Fwgz2rJo?=t_{%QnXrC-mc_3#DFt zPPJ*)5|b}R8q;=N^TiR{OG4l0b;0kQH&23EBvXZCvG8UjMVYC@=1y{saL8y-n$_Q! zZEuN)nGB~+F3GYQrsmJOS_a%fHbFvApSu?c8DG7)0qBlP7ex1_O7vvv1%1x<4mF0!2yK*} z5R7a04+>cxGtL(+_h&-_*9T8-94)9>dne&RJu5}4F4gOc;$GL_60*)v4*RoK-<<}I zzsqcx^D0#=hb2&n;#G5)Jp6xFq4#XPY=A*_^xMw6#oPg=JW5x=@c=DJ5kz&vi z!zCjGPBHlR4ibVuu+L(ePjm6})yC5gq@Z>mL=bl&s`rSQ4T)`{i{zTo2q1m5fcB~$ zPt))dS)|^yvUYJ8Q=f=GpALhX=3-5$thFg^nFkI48GsPPTlF;Z-+>8?iG_W>c_pPB zph1A{GJ?*p;nB>i;`dM{3%dG%Oqz3()`e&Jiu{6O-fsta3P!P?an~`L&tWhw?Q=dC zjR2)-waT9=X8>q4OdLG9o}kZEf11M20oLje*vbzWt zAk4cMN#(|BtW<$0jLHQgOXIJtqydAi;VWH~(*Q@b)TS4jv^3IpyzM<+o;qY@3Rb85 zUGpEtW`t-uOvZ? zD6|n>u0JA+cRGGUd2>jw4Bl;z?eKTL_E5fFq*s41ze)N$zi6p>{m@bu=KUxw-)e&R z+)1uc2CFDH<;-vq1lm2@2|lEQQt)a$9sQVMJ$u(EJcWUSKgUv$;{>Iltj2xnVyyXKSnk>?{AOkDRQ(18dhhHD~ zX2YJ--JczxCH)i zoi*k|K8)VY>@lj;oaj1{X5Iz6TD{?rL1MLz?+a<{w8+GwDNmnMl)4IU;4+GZ!e3!WqX@WTGQ z)Y;QNszxTI51>@p#&8~4{gQDiUHy#?CHIntF>C0x!DlpU`fq8AC&ggJb&`+a_c$B#_wNBz#+xJN6sKT& zwd>T65OSm#L>@LBS?$-ddCCF&9D8u^TW(^-S?ngPVEQb4DPd`( z5dWh=j{`nV`P~+G!Nn2|@5GMzEkAZTj#&-V^hx`D@b8|-=b19*qXvzB)rWb1-Eu>$ z$G6tW3&cAPB-(>>C+oMPK$Zi_VFMOnt!(bthMqJbJdaL#95`og9g7FlZEx7=WK&R*nm=UGda!u62Z`&K8Qm~@{}(x6CY!e!q& zpvhN#Rcf`-09(1>o+%doHQ_ zPDy#lvHxN;o?r6dAI!~j$|xZ9sgjwjDYRn?)ykAexo+QlRxA_Fh|=~9b<6+Cf2S?B z%l#Ihtqxb2wLB91q$`r|f#rw!B*qpx?)EOaJq2HnSNML>j7U;SC?$i{Mfqw1p4P`6 zr;2=W41YXKhfAlkuu)4~%A4VwGQi;Sw#)Zih(v}K<>SuQwJGOucE=;iO~5x|OY6yP z2QeeN&(0&uca(;G6HEE79-67enw6 z3tf&^jX9SdCu5z4Nz_^anUC%Otx z4MZ^4lI6*f#>WSysiVsB$6NQi311F5GXF$5oxPd4`52wokfXlzQ9}5A^xd;9G%5G( zO0IUQ#y7pOtvKK1wH@HV(lyg*ef^}JX#-B3zuxcBR9{%|=#)v-l3uP9cLVA=c7UhD z30@_YoPpd>;<5LG=0~^tr{2wFoM6{tsSQ1U_aEQR?WY|>nwWNtSHIXwe&0LmRxHNh z1%P$A@NG)aPB}Og-}sp<+@Nu9TAz|mxq}cB0y-?Wh0emCTiIsPG;f25OW0qq(0fwQ zRrlBvLqSNtHZ@`6PqCMndrPDl8hUZOZ z6Q=Y>U3JH_L^EKLwRq(u#nYbM#q8Ma0kb5rv+C^94vYN+jFBWOi^Jf6;X(b)Q%0nv zmGF4SAL*A7KO~E7RZsBB;RAKYad=lG^lDaCgo1Y;i573T;+pp!fZIw!J7w@fAQn!6 z%Ol0ACPQGcWQj{HZ>`&&ehr~E+d3qFN8S~N7NR@jfN-T>MI=G_5%KNc#Is=EHON6$wW&8PXGIS@m|vuvj_AV%xiZ}_Rmh+ ztKN9ix^@TAuuy`uO??eh!lKFTimogJoNK%0CVUPEqbT}`Wt#kp(hI3lUoPBY7ikO< z<18c=5)Vdbcg=go*1``Cw${cIS!+yM^G=g8gp=uAuzGbop%Atnf})Qo=$fX(G9LV& zm*9}2D|h40fNRUcT;87UqiJ{rYiv{vVlUddcd$cb5E+zc{q%H@RJx3KQW~5g({R^E z!QqeJmXr^D;DhsQ8tOGm?!kZ^mxu1uOGpoT3P1_!;7s_IZr!hZZ0F3AJ5;!pK{ zA#Es)tYfbX?2zWtHD_E}*zI787f$8Qc^*B7T?_{HYDaxU>8=7nt(~~P(>J`;@%11K zN9w}Es&BBfrb$;2W}BXz5C?BBux6P_o{RlMpJ#Y9eL}2ih|i0|2qrHd>CvM7Ekcq^ zlH!#ZA?a^$t0*fy7oVhU?VMe$r* zbTQ?lw#uI(fqD6T^zmsv6&ao8bLBstr=)KI(Yb@vEh$v`d@S;b;6>)2m^q)4-i#rQ zT+;%L8@>+QuS25JW338}c-V32cYKld_L&M1v(8A?!QPf$c)Q$(lXZ9c6!Zj_a+!tN z>#ihE)d&x_pOhuxBt76{{M^VffQIE7IZ;nfStW?>crI5oM-cKSDne6(spI}aR|LE4 zR}AZV8V;!!Xhi2`9~lUMl^XO640fv(HOH3#(8?Sz);Vp_#j*}H|NGxEUh?Xu`rzmQ zJ@)<0_1**~!&GciEZxowB)wY5O+HJGR9Gc*{;8kduEXb}X3hxS@W1|;US6bZX7bSu z=x(4x)gKKymE1ouS@!U!{^th*3O*r#;#Dto%HxaW1m5gFG|rWMP1lR1+4YvHf(?cT zP$ST0H<7YGIlmuXv{GEp$Qmy$_QeRM9&p0}PzTM~#BFTuIptJXt%y{}rs&W;$tTTn z;0~M3hKB1x>XydvPsI;I=hqBaY*O6g*~>B?ZkwLAJstnW+horY+7|9hX_78vMjQR%vZun(5dKaqS8DuImUni_#4xy7UDm z`eDNER`_Pi&thu;xOp zuZ}PUb2hcj7DmE3goNCtc0!MTGRRH+741IsXJ-vb_?&;pl9uK=9U4%85Y3WVb>@db zXN#}4%|TuAFr{`_6-eAW4S_qh@KFn2J22WI_8YM6=|zYg_fj`y?MFy9!JbN`$$z%G z6OtR=)7{;jz`Ml;yd&es;5MMHl5L5et|#wHpJil3@tbDYm>L=yaJ&Z9WApI6`j>1! zJD|(0p(-dj4#+{mvxlzTf*+_HQ-ACu!5555%3fuF@YuXu?V#9#okqU0-6~Uf3%Tm> z%()=^QnAk+#1D-sYotvMRl{Ye7&HbFoVU;NO!gn>K;iz=ZWMkcsMH9No6K-57d7`o z44%={hr-JXzQix&eIcScw{m0IpxW=v7cQz^7}m3^!6*twRuKbhhSkkvfg-GTvSE=z zVjn@LiJi*z8mg*YgQF9>5Fen>?NhSl+I27Yt{K)$on{Nsa#kb;rAJfhU&-9t*RWvs z@7|7T0K@u~OSSyWi1}LvxFtRI>f1wS{f=U9U6Jr(vLVQIkNqPJ7rhX%q)Hn{UJTF* zlV9>IM6hU1rC_ z+5S$clFj=IFZ?9yBvJ2vYHrS(?Qw`$;&{QK^hSPG#Ui4Q;p0v_TXE^S>2Rjab`SDeRj`yrs{qP((q|+ z%ImuM8(hkRYZAl+w>!|>3t-#Dm9-Yq3mws*xvzxPw-^+C|AHCx>wD@7g|f5vp4vXR z)~(r>)2S;gyU2HE8Aqw0#(t*fA0BM9DmspUx0aTCZe2)Z{cF;SzhfjGbI04xHgixu zQ*DLXymU3sZ+=|o%@sey>YF(7@)WXdYGu5nB=IO#q~na7W0dJ*b5S-o#$LbTY+qc& zGb@)7+VF9%e4inO3ud_mU-H++(kg0MT-|IlQ^NMV{q@hwj>r@H$)P9Cn>;l2JSX2W z-|tPGLO6r@OY8a0UAAirt8@F1xL7Fu-b%V8@%o})4Igd|02rsg%BGU2I63FF*ur)v zX-ag8O^ok9XB1UJS^cid1x@DlZh)tYGjm&iS0tl~bPNq0m`Sc~y;urAo#`+Q{a6Mm zkR(gjQVC4=cJUeTY@=+WvBQ4pe@JnoO`0KlK}s=#XOlMKw?nVHBV=TZzPQ@HhZu>l z;UQ)r*8TD8)nRalXX=oLhaJK=Hj{iMZ{mKP;`rLNyy^ZVMUAO^Y?#!4;;8i4laQ*2 zK6xtHTTU#~A#d|B+)YCEnby(YrAUOV0sz>HHbE=EAQCFCCvyD~O&h*-m$WFzg#LQ1 z*0g=!kgfYa1-!H_W@3$_8*5IgAD7~bR-E`vq35M^<-YiClC3i zXFGEKzwsXUi6&{H zdorxS3R+!DHG(P>>+pRIAS-K+uWfXsM*L!i|Bin&LyrUl0Y<=9KDXSRs&7>wFQo&(n;u);$3;W}AN45ov*%(Ej{#OD zTwT^AZkPFnoPMbmZRkMJE%M4eCied2_bRYy+PB}Ei<3YICxT8IPgcMG|Na#y~w~4$rLDfqD)q1X!@&)d9q0{3Mrj?ME z+z8CXoT~}STaW1+D)1NeLbR+?C?s0P%4L&{6L}oSXR|9nbR{GBzV69vGe|eWfzB-A zruOlO8X+Wc;}2XBYr$$zZ?R+3We{+6pU!!dfm8`$CzhU>421)-U4*A_2_JaHv1%*O z+PSda#!>wsg78O;+3^FA_N4&`m+BBmn@3fqw{^>F9D5~PC2vpfR!6{SJIz_e6c~PK zwLw|am9(*C5n2?Cnr?)qRFGO2p%{_h23c8bLwxo=pXP_sW7fJ^RP{zXwn)ljr0dVs z7j1c?SbBo)*7RMx6+6^8@aeJybGkJ~J|8(8;@e3~ej(&E;k@MVL(~|ph=HP2xj=1i zLnMCTt>--Jc396SA6<08DzsUPJnk6xY)6|7#YGDEy zSh~utTu1Xnu!kr#ne$9fAb_sgC-_=pPLsp*a@mBwJ||GAnn61MnM+sc7IQ=9J;o)JR#z&)<93n`HwT&+=;Uq?7gZM>-Fd!LRxT zB~kS27dq zXx86nDWe3B64p;h{z=pcBIEEY4u=~)jk=2@u%?YEkaHK3v|pdpZ5Y~X6Z~~wz&H2} zr1Z-GzLF9h@35(@p*F$>NWXj-V^CuAWnXIOpKFNNO#0fj)>mh^nPro5bQ8z#AFQvX z!yr1u^uLRnU^8!1pyhqb-YB2uJXa86j*MGkQbh!iqGINYW2qaatg6vr3f#lyY3H)Nhf?LZF z4L)$&mt5j-S{O8lK%(^b=h?&x2zt(w&kfjp-st*CIO^2HSizc~(1lm8jc;9JKTS)w zx&))YI1_oPZKUozZ$@x1oJS1y??TBn(vI zBFl5zGax>-H!uW}vMVw_+J1xiCBdv^{tOBML$cxoOAGWpII%al8glXqWJ@h-@KZ?9 zZ};6-$}~SY@2-t6lq|gmIhkR|%=-ng+wtbZwI*KR92UhJfp28w!*^ol&}b0&t^Bj( zJb%%rfC7!c_#J%FM~fSa&%hD`H61M zcJ7PQ1zHIGbgh-sk?Lh(X4LyNS3Wz;q8rEWs4ht%#T(-E407L5>5yunbG=VOeXdVm zK6!V>5ZX66cXYri@oMTDepy^nyCPP9Ni;^+qgoJ{^_yLEj4m>Sps4;yqCrVl?EccK z7#)Pmb3Fwcm2SuDtLb%_hNGlf zZb-@I-H7JV*Q16Tw(&J-+~dE^fzOw^_osz?Ian9fY-o!HS!INNb|Y>a+=MDt=?pf$ zo~fgR{yqh{Z9g0RQ5R!|b~S~+quVQ~2mtK7-~}TzE|cYB;-Cs{_+DK1W>MsCndRF0 z)lAZfU6AMIYBzl)7tgNUesnRb-7jWhL0|b+0|MG?X1$g)~2picC16I;GC#Gh` zs<9nUb}DDC)r-}rJ#yN_@nm+6v!4u0Wx+P*niRf9;8bfJmw36k>uZ{=xQrZ|Gk5VO z%?-?vIhEem_64cR_P#N`W`f<3lLZ5YQ`55rXRBtVKgFM(OC(1|K)OOtA)YE~zwdU< zA+R%Ehf#VlYw|(h%?~jzY5x&?-Zdt}&5>ZQ5sjd<0>Rid8=d9moelAcX67R-nA{k2 zAxpyr{SG_pKTItMkp#OiJNSPpPgDr=-UhwheZb3)q`=suA`Vlr^Ar%>!^DCL7{JnJ zcebuNo*tbmZcRg2v5p*42i%&Vv4K7rnv%PRznrN*4ut~x z=5>YPm2dp7sVQwmyIOl&sxdbXFXa-|H93`pH$C9oJ=#8=2qv;kSJTdZ8fp({qtp(s zEiGL=S#=M$b};&-R0u7IsV7~`({ktJjh(C%65qd0qE4Jpqn&1MA$g8+qn{OU@!!4h z_i)J&^Zj=?hy4JgRCR1x{)hdBxuNg}{aqLrAk*fg8}e|^m0V(7A=uoSAZbP4B2pUt zjCPi`;^KrveY-XpuZdW*L5j@{NnrXy^qb;KU>*+gaQnfo)y_F{z3L ziDQWg@vLhxv3gR-FRXvwn6>jG;jV^;xV7Anz%?!RZxb`J$~{Milr^n{!`;@iBtjbH z{?1aIK_bVm=!80wJJVDD#^3JH$WWHxM$5APprt)DKSJ@tAl^zbT>(+Z}1WD~a1@mb^J(qnt< zm27owME# z4_@EDIcF{4`*EuQCt9!urE-P#r(=Vlb1e-qeu$K>A8#Q}2v`aRlKK0JGCM!$Z!Ss= zeIKEgk!ZLwA;)s28H~8EH8>q~!qaRz(|cMa3lii8Ki9wF%qB<9z~7k)*$nlX*| zyLBgY2G{=mO4SLe@)a>LvGU*?M*Dv8wG|}|#nugp)RF-NE@Bs@Y8WS=_wSKf)c9wo zexK3%xK8GESk@J(035~=L%$ORu=C5c7D!VxK4!J`UKRZgz`6!iEHIoK-ASw)*=!s+q-Dq4O@@Qzm&6g3`= zo$Q32LTRInV6TQ7Ya7JG)_FFg3%RZiqURQk0E4yE+7{ha>!c5~=HJi2YynjL5ba-x z>~(Gt-;cX$SWtMGJa5VnC~{#h=bpAUo3r}&uaOajPI1(D1Z) zfwEZ|6mA^Aj*&zcH)Y*uIlCBtG&GbpuS+&!}F$|!pqe@{@b-Xao-WaLZ` zYdb9h!QqWo?JfE`_KTW|1!m0W<69nM+_F;^)&}_2XI{h@e(ws}bA9gUZ0J1Mllp@j zi*0-R83u|?ztyN0*+Mw`46q`J8YASN@hN{+xABvw1`7AqT2!F2_odm*ny=AmUr{kX z_RDX65I9$wO41IT%@xiRMq{DvjSt>DNbh`wtyj`4CA7!2Cs#GX2KNIxLq8S2HG)ap zQdJc7a_S|>q7Vu~av{dpFR4{Jl~2kfH-dW0gF|TQ!Z&=t@XX`I%k_xcbN_x2_Rm=j z3JqAdzfqP|E5X``F706OgaEeN1oxA$v7LxGgzpl<7C1GJHHOQrg}Xu5!8W8L@K7zD z-7$S6C_Qyf6<#05a#3kGPs+4)avYf0E~@t)c=qWMBn_6`os+0vB9^p$s*LKd&k^=? zaQZ^2a*)F@Acwsulq~+Um%EwRdAd0JB4oM>PwT2l{p+UusCK@i9(qj<)89R{v2M;` zA_{R{uc5EA#Vi})ddrf?v3RdkwI-R5P4`W@DG|7(pDRmC33DFfFW2eCcA~ZSC5#w6 zLS~MSiTk7*~lMbT0w1$b@m)wiH+?hlFWkTt= zmewLb*P3`n@M_ zR^n%K-%HtMJ_U_08I`J^Hv;nmI82}oKPk9{mSkQq6Z+=9*b767E3<}Q|=5`u^s(_&&j{U9`(@o8)GM?&?8PhB|WLq?k>BvlHk)W+2Z^+C3#F@|s#vvyO& zqDx6%He4!0$v&+>TPtS{RNOGgYIL00j?o)iQ|;AxGRp9igVb#uurZu7vY)`^_rJXE zSUCFIPjx}|o@Q6BZSoj#rf^vrt<_u9{)Y>%bnN$bHs+O%+guD8487*-2Y-A$n~)45 zNVoY3Wv>omto`hpB1>>gD?VWCN&4gmv!wB4h za9b}?GjTyFq*oAD(w7i34Rx6KVDXBK&w7>C{6XkjVr%-as|%`H!ADJJv)nhIKz3? z3~IEk+5|INKq{1S0pzRL)gNk<^n4s)bVA(6?EA^+aUEv0?Mwrwa{cq`5@gH$YsTEk zX#C8+J8n2(tYsdzM%`w3^w0{2Ke;e)J*2~5wOj^uPhHG~Hdc!F2&7%TodvI~qJ`;& zCesEZ*}%GbgA3a-cKB#I`tP~qMv?UYmV0v&fh!NUj%-2FMW23-ELor z%x6|+M)zzE)9LkR^QvaHheDajg2;JfxAN$QJIYU9wt~W(y5w=)^t2M4jdkjN%2!%W z2wWpGx8kp_-uQXFOz|Pp2oBNh>p)Z5=d5mVO5i2&5}WkWiy1&*x>=&gN`!05%)+ z>l7p_{E;Px%!S}O9p(5-@9vsA?m9TNZkuB(0L?pV*G!qhj;$510et)%8hR7`E63p1 zWuN=Ln5B2?$*h~7Vn1~0qLDI+(CL*K*brvONKpYl+-`>8RZ&ZR5^Eo<%eW3_8o4^Y z%Ds{NS^sr?>!WtRoHr?(1}nt`STOonc=v`+ePTi1L+);BKOiX_b*bv!OM+lVMhe`q zT(In(2RllaI~!g2Olggzpmv=Xp(3?{a<4n#+@4~9w>fz>4nTnB zDOyN%%;S~>sg?A=O%DkU%#%)nR>{Hw+ZJ{MM2U8I+jF?HmUz&8$T-?R`iDFE)2c&w z9DQL}1XybXsy$xPP)P_3Sw@acxe}F$8cg1=4}VoUAV#(3o@LlOy4(`<)~S0+YG|3i zC8XqgcPjd@%^;!EAmRFds2EufX~P&s=4)kg&6~NcVx&l$iMOer=jYvq&GWL?lTUb< z?Z4Ha0e|wYk3NE;v7eovp z*Pt~Oxm(h!h=^9a#9fX8`%|-!BKG+=j@_@xXh4lym(NHHy;LGBAK^u2Hu&b(<}TvZ z=m-0URo0@A#mtE$8xAtma3te)9ls0iSg|l1&{nOl4AU$CEC1V}Cm5Bv_f&)Iqq=(5 z_3i4i%Q#J5e5un8M{fq#&$@(mSs_^iAVw6M{-sE=|G&M1@s<4@w(+6o;s`xth`wZ> zw^)tqYa2Z)4|m*F(Q({0kd(~|iK$47k2Qe$of(?D%HG==oSK>{9U5y47GbX)CEj(F zNnp<|)URk(8wh~_!}7TmT7l)-bdFU z@R82 z&v7i^J~we+vQ@-@`B=_aN@o}wC0zIp=J`#gLfYrnH2lOGv0s zxh}hH9p#b_Q6O4(pCVcusnP07VURaV2ZZOmzcH`lX2wUv$gLnq)jAux_eqFYz-z@5Ng&WAZV4XxGkDE=2P)nM>fE8XoY} z26UwcPF&P+@W6<^(ND@7xLaCw^m|-3Sp>4GiNMHK=3pdYK}gU1)p4r+ANb?CkUbnoZ6(oE(~7((7;n?NH`X0Ssi==#oV3o`rb+z+W{(YaY8+IvtVg0 zOLqclZe-)$4FRi!;2NJawUy0M!?<@Esy=Zy5wn)SxxO?A`3J5rp;`%`!m5HPdK~c| zNd=j|4BVHLg#cyftfwWjDM>az`2bV5GhsXmNQlh<5FemY5T3oQi zPmS~6!%J!qn_^C4KiuwR>PdOLnlTWr4nLKdlX_ZUVt!2|MWMf7vN~1|Evum+G-*+` zMwbIr!9_1VZSj`zJs}n!s>cmTJQd<|N^IS@0afp{BXEDq7*{U=I;L5$E$W!~i7YGd zx&v}@EElOVqggHsYyv&6idd^6??XxV8TCL}nZb{QCFsI}yFk3Ze%6Y@z_L|^o%&$J zw}<8ew{d}`5%8Ud7wn&boK8S|1J`1a3Z%C7@}3hcKr*PZXDw5Sv7M}E zrv9VgomboQ?)$bYwIRZq_qfoe5F)Dm?g^3gGr|@~-x(P{V>{Wendr&Y;)1G&&Um`TG(*Zk%vb z3CT&FoG0e;np+W^Dz(%j+;bAy%Cdn1Bmqq8S%8Bnu&J`Y`z#}w?;BC#%dMi?C+hYP zl>tOVaOQaYkuNdtj30LcTbN5`*|>Rm1C3e@`ra+FJ8mcIj*_9RBf~& zX)5Wi=;6*9g9e2f#ZI&883|!M{8rA~7Ec3gFW#-ZhhnJr_Lip3OWvQ2>`Ag@Z^)CT z_T9!Aj`d4}3*si){-+zC!V*(mUN&=CSfTrlV@oCtGf<7X&4e8O*cpA~r8jwJ(cM2C zJt0I1H@rlM^s%&d^ohcNu{7D-q?v%1J%48zW2yL&kmvg;Nb8QaJ{^U0%en_@lF&g?xZ9J^oJmtO%2D!E-m*J1!WXk;e zM0o~}gFFWtL$5Pl`HlG^sbg+or(t|)@WSq?kP>(_{SqpR*~EeIt?d5pxpq3ONeMmA z5?{jU=oJ(?=DcBXV7T!@Yq0$XH};~gh$ScAo~msE^I-~k6ZuW<>imBC8dQcG(>vl| zSeH#rdhusvL!OJ+=9g7H5m2iY-u(nDaGPl+0Lsx=>b+ktmym1o>zMz?%AJ+R1CmsW zzIwt6ix?-3Ei5Keq9e@ejDXiLc&$bfJj+BPwy<}^wg}S zrRaTe@0NR2YR_-?Rl~EHGg`Lzi0!h}q86g(`cUKG>d(Sl_Ae{Ds`BAB7*!rYaK6TJ z#BFrfLa}a6kW_+X$r&5M1-c_G@7$o1BjzK?CbMvkb1c>vn|F$&*55w4Rz6(gf^^ou zZg$lX(%C76;34+X#LZ@asN!rF+?!G?4l?oiihm&6ha;?hX7GF>sj5J&S=^T!Kz)jj z=?3H`C!f}_0l_u5^W;hD>4X?YZmJSI^TZrp$4+sctuB1}}--z|#qx8gCbJ9j6N z6nBLOAIB|pymE?}M+?%t15}U=^jka3jnef9;RmEuZeKSaDk6;gh%K$f#<$>lR}DE6~EP?2zrF-}9YC)cF8@ zAF#k`4LL~h^c^$LIsLj;jp|0Od=sa@Q`u{ystsL>7L|}hQ0M*KKlO=)3h*@^8^HG) zPTFQ^!(N}^C=;>wLp&zAa6kpTU{a$kvX+Fkz#I|QNF0^uEvTG`b9#32K_xl1v(}Z* zAbs;@COYB=U+Q8eQ3(QBiqkmRrV4)jrVszXzl@0qnzkzGe$ikUeEj6h5mIV4n7HK2c{l&X7+5cD;d zx~olKQowcpWgA`k?a*nyMwAQ1`5Mi??E{gVG4S`UODHJ{6Vqk$ zUV0l3nIntWg=o0rTre8KGn}u(b~l`L7|Ots1l0x7{ zxalPWy2h*;?@%j@17)d*Fy)3o=0B@^Grgz;sC=pV>@brStD`%|r!G4vm3*2+RnT}l zfAFkXMt=iAE~ceomwM*{NA=|mRU#@(MN&)a87l@c#?4@Wxt7KU!>6uAT>ZHDdNwbB zc9{Un{1v`BkC6rNRE{9LuSMvqdTRe0Z(gZn+qi1 zO58k2L5wvv@x`I!|NQ&Ni`?AEhL*-LK`>$yB%i0R(!XP+0KFUT3ESloY-6gq@p^74bYwbg;PD{7>#=aCgdf}t*XIV2SXPp26RgP!+!rq+d5Vq) zLG5{mW&=b=Cftcjv@b?5zp(gWY~kO3)_+3KqSh}SvSmJ!tX(KM--@hQuiBH#iRfLuZQ6mNafdK<-|P5t+ytf#7>&v zY#p`la8(y6wI2bDn4z_)B{vsnBnR{SSx`2CFxBRWct}A*KI=HWyHU`5yOtNkt3|=t zz<$g-T+?J;I$T zGjSO*KVi+&$^&>A{&E5DidrlzW#62N#${jm)JEY+@aDpZ!<$U9+uX18_#?Aoc+Po^ zSr5#NUJQKVRLA^WH!e6dOo_oj_?{uYJ4fuv6fzBDGILY=n_ntxY(a~?7Q>|OxSilm z;(5)_%JT&M*Y@8NGZha&lIY|hth_n_;Mw`OyS9>xnL|Oh>Nr6GHFR!(MpeVF^JG_G z(b05=y!-Y3v;3V=_u9lDtsE(LE9J6y#8;UzW8%j*um>Q%2Eg_Qrml9am`-LHALg=u z_RP;AS%A^rD@&6U;{;V5f=GS{hX<0LWd8Y}NMGbpcLMdIx}T3Z;w_z?P2kV2eanoy z>Y2(@gZ9KqvkZI222*V~3=K{;#-OMZ&+T|(%xagR5ZigZdi#|t@`vie)*r3wNVUgc z&u1|;yRrJNlicP0BYE}okx3WfnN#lx8Lo{DO>l5x?yaf6`RTuV|0_(s&kK7%@D0J{ zpHJX6)r4Kj0}j9Qx*wR+G$Aj1U@)G|jPC8F6to@_K<0_8ht~f2c1conj^C!(TNvR4 z0z9+Bj5C}5NKXu*Sf@#(WAfKNZkIk@HaO+ui9MOieAi4>rIwD@7TtH%>PvWERCVmB zhL_pfnMS?MRMbYw@#wvzTx5ny&0t-Y-1k#UQGFVJbwxGlC86g$X@4*3ryJFI_Zj5) z*Qu3_+SglMPAGlp@jSXR`TMT$9C{c-}>{hbaM9MVU&g!{N`MKEI<#m(+JvKs< z+}12xzIy&f*3E^ZygWZBrldHSh`NR+FBS{%LDQ1pVh*{KD?GAT4tloD0pAhODfnS1W~7CYFC@Q=16TAme$TZZig{P7jZRCW5F9+8;Lf@ zJ=!iH2<8>AHbsVRwwa_rt(Kt_KEmp40DlNVw7=A*-cjtFATPw1N4&9g;s0KZ@%g&( zgcfG|(nZ32s@bxAw*UK-Y9dlJ!_z&Hr#0P&&~1!0MZ5Lq&B&<6#6drL(|VN?Nm4u zE_nVZA}_qs4jZkgz{S=3kwpBlh(u-NxXipAnM(V?ou)+MP!z5psT~{qE=yktGTD}x z+PGVOPD_XBV|*|K2$w~lx*B-!tN3|SKEt=M3T)TKefcW|Epf_hO=x%}%FN4{qj;6E z4J(`*ziwgrcIo28$GA0bl6HceqCh+IT6evkhT%I+1J!46r^jr;Gcbh6+)*cM9>hF< zEvTNXNG2Eja_pXL*qW7?exxc#wQ8*v`sdp}YU1j z+kJ!DXy^V5a;pN%y%rv0>yvT|2uP$Pw;e$quomCO*8eJX7FOBPdd97h^0!sC1T3Bi zvHBvs7jlEHMb|hX_uKLwtL0eX=}911pcrK$r`c>_E(#X_0~Lx#J7I}Jsggo0O3|=5 ztKQvxlED>F%UBf9bQ(Cd?L0K=n~D?QLW%irt_Yqq$F?BX$uvVre-KMM*7*_lyz8Vn`<29s-Qs= zeLsl5%eOxxmIe3xm{HH5yB%+d?>NT#Ha9lhMK_#UJMKzOW53lMh zD@Z{KQ-&~$>i<+D{cE2b+zkzVc&>_(e(;%?H|v?P~27nv8+BIm~=duO&nq|OK@xW2l3Y#gy;)t5-ky|4_j@zR<-Yr|ke)nLo@57xRc{L?x zTTbjdE;o`5g@A-c?SIFICqdh9j9cx!-Vv&(9*GT37~DDR`qW@=QGKhnyj~BWTH6QT z@wB&W0VkpHy3H&sn;sXchxykvO*eYt(DU%|BJ;_~I|)5*Y`fm>z8hOzXe+KeGc({i zroni8E=oq^<^QtfOs=A{>xxk?3!=tvkS$6g|se)Feb zFoQ}@hqwgedV%@SYpb>GNkp5hmR9nOf)`uI9%Pe=%gmpzds@j2e};s<&R>+j!qhth zkr_+{H41jZbDg5ij%FRh!c9xv_8l-<_KInZJDo~>={e&m>_b^Z>0crzD1{bf*O zV9Ce#G9Lct4{Y-;rz5OE;g3DwHi4ZD8ba@sPS*o@zGXju4Fg=l-5)e+e)GG_ZeB1n zpW;H#Tu3$4s>&3am43yNV{mA%+czH1y!zNG$ZyU&EN5SU)}hMJ#nxgVemGADfJ)Q9 z*7baINw>s)+bDOtRJC-VX^Ux)U7QIlR~ENn)a2>Y;d`xfEOg`)pA$zQULPiW6?aCi zv%a-P3-h%#pwBr+En+OLomxd|-*XnI^pJTt53V{W;Z+KChbW{a=rsrdQxh=+hf%FS z+gG+15WpF1z7}oB25a_tKBnWSb2L}~IbE*u7Rs!>ooK|)o%1gbL*z_zzB=caIZ zy_yU4>{O5q643kMAliaZ`5pUsUvzB#o%X~-fFmmU9vpwSogNF+;$YD%dZQUgNZ~TE zvfR6uQ_YY+bT4iwrVBSTv}La}USq(m*{k1^O(wp)Gb}M5U$TifalW4-*$7r%{Vv}8 zsgah{Co)plO5x$b0Ke4?6=+Ec$f5Jb7k_GFBMs^v>YJuG;MD*-O|~T?#55^Ry382! zS1ly5PuZr>6HA;a+8+Mv`zs4YmGx)Lbip4^am-wYab7p zHE{HK*a6d|cm+)qynu+A)JYspHQOWckU|It7@A&a*K+v1Scn+};>Tg-CbDIWi6}|q zvT@^oJG`K&ExW+H&gVwj*EO~{9)Cb88X%}JkyzPO@Co?N!&$@w*cQK|c$T}35>OX) zLg7wm`l@ZKGLTnMA^0bSV^sD|`^~ulv!hNoF%}0yxCFgCOd<1sdN{EMuKI^RdaItM zuB(Vau6ts-&X}eWH_M7|E~`Txvuz>}c(sUecphaYv5L{GOX*AfQ9~MlLLh()&rds0YPa3~DC}w=-=?{O@LOD}11M+~iwV+Gk9dUI`QSG(N8A zL!n%W?8~*nEO-r2dyT%CNfiqd9WPLkNTPf|U2Yz6NCo-S8t%%=QSMe|PB-P*eVRWn z3(?E+uEjXnB%#@nc@n%iU~Sc-X=+?{FZkuW$m|vN<5GH9oVC8223av>Ib{Dp=ARPM zxrmEE*?v&bH8LA1t5Et9uvuT_T8-{48@+f5ZAp=$`B!~v3FnejPG{QSy7wkRHX=){fnB8jP680Dw7{Ur^o$z-pbXm9;$jPcbBj5mfpZZVsQ+P+s%S|41QrqwqX z04X}cx2zT9H^D<3PAdWplt4mjhG4!3kUKbX^Pc!%$x^RQ^zueW*YAVqdG~~Z7-%ht zk8iQQU291)G!di%G8xEb%F^`cMGwJzE?BC!?6qL_lk_SckP4R)tAnA=DPA%sfhpaV zu&XakcU}hM5N}<?`H8gb4ux9BJYM(dvdwV@32eE16?>sb8n5^q-q4B;tKg^;E?j}td#%eQYzEH45G z$e2}DSa0`DNommNcYU6u&B$JG@7X&l$212wkhGT%pxxu$qOY9JmZKbVpaRDfuT0n8 zg+ZUEk42TyAJ?kj>sJOk+l+;PM4*9T6Ki`Z;lNgjy?l~)ghHS46GQ)?83lF`({3?H zl{4JCy&SR%$VI(b-Y4ekrSj~M$epdQl;ZAxhlYm2RxQ~}8y7$1W~`5>X#8~xEmXI^ zmQwZq){t5@B&{u8RT~C3Nzoe*etA*;;O%Q6$TiH{=Mm`uTgcrxp&4P*w_SSOyfCuU$wB_mf>gU3_GIXy(V@dF2W>y_mtT^f-ZyYV z+n!!EFVKT%JlA?{y+G~~b<5!;ps9r&BMn^c*IpR!+2`3mGGauCtj4tni!je=c_8=R z^incx6p%j-&TP+{&AzNxLv*+^SPp+*x1||Y{=Iz^c|?bmSwEgJL7)iO`PA_tn)$#izv!i~w#; zH~IFzE$z`7Ak7>*oUwXh(IOfSFG+aX1!!1*UF(0%E^R0O&?1sUvf_$f&l2S>I&)UR zN5ms`JmZB7H;`7++cwA_S8H<;V*}!7X&K#L{1hPTd0k5=Nra)y4o zS8+Y8bHnY^O?bz}(%iTUF!Hck_63s?r2*L5&Mr$6cWv&R=D)5p5M!t%27_3U>ecp) z+O)?=oP{4fmcB{k#3blc^A`|0MF+y%P6mWz7SVNdi`8M~k=%81S?SHXsft8~As=D=6Z6VBD{uK4BRDN&GG{$>>5grD!4aH3N}f z>(4STkKGIcjL?F1aG4oGpK?5QjD2-xz8r&roB zt@ZE+A?#hZcKHotu&r~I;NX3CS7_4CRID?BD@8X^?>Qz)wm;3@N{u8UY z(PDN{nCnsZ`RvWrnu)!r`P3jRLWP`(O0{C&tB~XK&7iwO?HXhBPl|X5!Ira#-Ct#{ zocS&{Z1Nq*`*TsWlL8;2pdGcZ|8edc#ZJawh(cwfG#?&w^U-czF&K@b|K1K}O5WJ_ zgGVj2R|O4it{f(HA}1eY*$s?sfQ{|n{o9Yo*|#1YByoffPZjkC0?_&=YEhKc27$lN0`S`DiC zj0YoqMzxf06wpif4sS|>1Lm~PpC!S4y^auewAB!Dxj##ALgfKgTwH4cCKF+0kK-C2 z@Q+v|b!n>OMr_D%ndhW%PZ?UeEREk zJ0)ghc*Q_|ZD}j9AShj8P~84$?WL8%pAb-gRrjZ(cw0&4OPuh2?w5HMtRsgP47u$V zf!(G=Gnl;`HL@*yY4=wRfB+6+Zu0G98Wyv(=m+l+IY>wI@)-=;kx+eW%zOaP^}g!+ zBIGzSjdLWQt|`sU!GCcyH|GW9t7@K6h{(1XD871CT3+u`2s&Tr#=v0&gX0q*VE+KmJ zI1;0UWGK&1C1v#J5Q%Grn}XzT!(1jFirlic#cBK)A)(vXAX}BV z8%DynaIK917)kz_$9ymZ>V4rosJo6?^8|m(BRcM6GM*1pAUE+@6ZTxF>2_VrV~FO% z)Hqdy5GU7dZP||2bp>13vNa1?j5K(3He6DclyC0n0Q2yLSf}`|rixe~(Q(}y=vF8Xum!}#b5~JT3B-43rJuqXUOXu)nc&6P;m~i+f^?K$lTA~;$-v^Z%>HqDuEmgr*i%-@q+i9iT!9C(c z`^awA69FP3XDhU(nko@#G4qVp3{-`d&v7Cu)Mesgx+9M;x5lM2R|C^(^6a7bWV_<5 z`+&S$PLoekR-V(o5g7CH1M@8vUxDX83uza;bMnh zB5yC6#<*~4Jwm)cL~1S4Uz7Fiq`8#kR0^-QpM!re`MYQ*7INWbh*WLnlaMU(5W*pk z0@z+K;0N9w)emTmmz~h^Lqh9iGVb>F-5OmR9p(2WklFizw2`=sjcB9d%29T2P-yU) zB>$%EsVWubu{;FwO0#I5=;AE?ql*8^#c|&cWc{HZ>oLtDI3W{kRQ`QSg+@R?r;2p; zQ3x;ohA{YWXGBe&u~L&X?-Ds54pCm6R9i)<@dcY-SRGt0y~U`wUp&s9AHM>jP#$$m zTuQplxbTVfHE>rf?*gW>B-EGoDQjraDY@s^LNqd){7rI&+52dBBiffx*gl^uA#qPF zz_(-g+dqH6r@>#fPw2ZVEQU-yC*a!sUTfI-+o4x2M1*Wvs=uv{GKXvez0U|m(EfDQ z5AW0wXY z-Cbla(7j0W>~Ea%T;tl?k@EucRs4npF3=#$kKpdk(0g3F8=sK&SGSZ`>A-u_(g!Qz zaG_PUG-jCiCFaUgM@8zz2U$z0c67bOB#_+V%F4;$dX-b<<`rxnk`1d>sDU-VXFAiM zULBVy99S9B4NIh&k}A!RsRvrNqDfCfA;8dygf{tz{2-#iZ++S0vrazaj51tEXlgNPv}yura+5DT*f)E6=oOTpGc#Kso%x75C}|s*}wRNCVp8L(|~y5 z5bM{+n%5RParzu&i>whfsC|}7DI%m*UNk{wFBOEY3n~fOAA$U0nhh!kn8uo>)Ni?2 zppzeb;(2kbmOaJ;!Tw%fF-o|e+&wKQEH(izqMvLa^55Alg5m*UR><+}zJ%D=%Kz9b zh9eM@B*KTxm?#J2+?4{TO%31vKK9Yo6*Lt#Kh<63j3YJB0^0oPYRkda$ww?Q3%9*ZK#zzEGX>sp#JX1AQ99DTxK_HYjFWI-e z(Fp-UXNBCDO<`w5G#N-BS3xb=2Z1eIj!{k{ws92a5L6{BDeS%+Kyh?sZM~a6vwKs@ z4Zz|pFvNok2ADe5;K>2uJMVvx!(CgXzP#@TTB`c-P8t-^z8JuV5 zO(H(<(csi>USToUv@`u>)127IP%w9o0?0%FENB_FyK){GxBlZdfnhMr7>mgwv}HJqhh!-yt6rOdh!5q@=<1D@Y#9 zdzjq(jIILp6qwbpivfsv+Fyj$o>)GHCmjoH((VgZ$kzq~f!TiYVw$te|2oMA$mGU5 zGo^8Mt)$>RYpzc_&zc^;yOaZ-pbKWVNGjjwZ*EfBO0fwo+SHC7CzmKEB7bc~f`gle zE-p-tVhG86x4nPD45+D5?ctD|o2Qq@ zB+$VS9miSCiYY(m7ts}YkfC1nDZo4^N!b{B0=e0$RIbrJ7pUsjA1sGM$JjY^ist8l zKI=fK)aSSKVNT)hN`_+uFQ33Q^`c*nr6ymXCxpzO4xXrMQ2EC7cYM5?`p8Nm)sYu6 zyjmJM<4TswnJP09M6Wmd`GVn98flhy?=Rf|To1r|fe_))Rw<@Cm>I{)>F!2lN4lTocXL3#RtUe%~Y@=6Rt>g5xa*Uuww>m@HfIhD!MQ zCLB`rC#+X~B(QcxSySTKsu5juU8RU^2Rsey$#xb1J<#AKiS?(km(Z z`?2)ld1v7)n{Gy2(|K48_3fDx!dM8e(xH4b3BCp&CKAcZPP{+;jUd%((rUrK?gX@) zRF}INDNFiQd$x$(l5c9{e1Ct(8>mfSr%z% zF-MnJtoj{V$~bRQi3&6uY@}HKm>OJSi=d+nj>tWsUw8QUi#KvETuP%OS2-vb6LO^7)+rbEtcv;{bLt;& zVUrGLG49h_AdzFA_5AgA7IEvzdtVrT`|VjvSql$OvZE*POBXboemTSEZPdczq4-fD zzX5~u_P%SGd_+x>hVtavk)v4Y=Q_)_UEQOdv=a6U0gP>AX)rr^P#jdiX)2(dqJR?; z11gUs81<}@h{UX^&)G`{TfSn6S5>0#N_0|O^9J@Kdtztk^z#MNF4t1}{%xJdUViFN zLmf?*O;J5!;(3DGN3qE<@0+C1C9BXAFvF~+u3&ej`iG?@ZhRd(h`0Opq^`0uKl+8V zF?=TOi4zjP$V}jPr({|WIdM5597ZpGh)|qxYNeF^>b@D)cb&p3q?TPtDKaQ~f}5MV zkw>yYJz8IkX|NhVei$IVp+tRoD6SfJuiqlrHZO)wIl%?{>uY};j|4a|4d!}U4w8D5OpCx9}zVxTwF}q z1hv_b$GqRrj!QfTSqxGaAib11FE|E2XGhDB#Sd;MRq_ZyK*1P{sOO=U%OppDr}gUo zth7qto5R-n*wWc0ubOBBXq6C+P>5e|rR*N=y;qqzvBv!(@Za?cKOPZT4gXgJP`$O7 z=UWfY-*2y)|HMcnC;zb(n7+viFsWMGK$s-iusG%zN0x6h3Btpld)9z7c@R$ga*kZS zce6|SE6(jlTU0pc5i}Xkg9qg}nL73;bGH}E$tTg>YS_wfaSe7yB~KISVpRy{#4;v1;-cV zJ%<0qG^S7N4Mv_T#;Fc}XQ0n+I|SiIT+Dw&9uO<_{D1~fj$61Kfee!b$c3y`!+tn3 z58|`Er3SwZJtq!r5|dP&OdK#@QwH?)OOdXw%Q4Sd(&f}rP~1-+QF6B@nq<%3nGBgY z3G)>Lqd3;a$|9Dn_NW0cYw7jibN`cha1&x$Wo1V2S8?Gx!h+2)76W%Iu{K#XT%G`>P6dzAM>|nPaXdv*WBRnHQ!8K8DQZ9bikl_ zPHQRqS@`g-3#Q$aQPrG#bqAtkX8yt8iV4`^TUvTrYmEkcLfCOO|LM5i^&iKl0%cfk zvdv95o3()EBHNDY0p|NjOku$1SNG*)WyMTPG~h&8*u#L+`fG$UcGxCs{gj3R30Z#z z2zjZT%c|%m&I?y-QwdvCjd5cI3=;$i`JOD*Dy3u33?}AZ{n^t59Y*)*)|b9|EB6YHS|NSRF+!fkd*{3q@z%n=7Ddb>{qsBx za513Q5n+R}?0Gh4&R>N0wAOtB;6eXdNY<^-sw{uJY}a5Jwa5(gz6SJ)HMi6)in*c0 z&5PNbOslsxXuJQAML*F{a{+bl3##U*3?>5UMZL-6vVt4q z?2&afCPrBjEG8?#oqkd_ph5_yp)-OfwgxH8giZYC^S}r?LZIjo|au8|*QdjqVTeO}>SSWlsheeWFZ3-;)X+@=S1GUE5>zXj&gWJlJSrius zaVLT(7!${O4kYL`uXh5TwJX9rdjo>3bu~=CAF)MzU)sIHv|-r@Ef3oB_Q(M2mhF}y zkY#N>vsMm=SUW#>n^VB^E`0qw*a(iB6IC20Jj&zE#Y}}c?|jxrkLsE4Z2eZ!6{cPX z@_8V~tVKm2?o1{V;UfmD*i0536#x38x{df@Y*(gvmt!RvpKs8Cl}v@X)8pJr!=#or z_8Ro2-i+>-KCU&lIZJ72pI2^|c?jdYVk0Mqmvl>QlZjbVgSu{g3I9s5A>&D2{_oRj z4HFv1x?!)T8LXI@sE-7|wwoBXJxs?`(;UzL6Rxhh*u2pn%gF^L<+#opmCcS79kK zt%V{2d5G56{yIEN{v6}W>G0;-T96%$q(p1c#`T6~RL-n=iuQt^^_f!K==ef>!mu`^ zNlbg-o>Re=0lg@A;HzXaUbSyZ$V<-Ri_wSY$HYF?@Sm}%8$u!1mn3o*y1u?#-(asi zlzTV#4#t&;66c$6NZGAP?YH51J?sdbI-{OguXuNJjNImcL3u9^n%$kA*_Z}()32LK zdrNr-G<0?Ql1gy9N9=_wcbp;fo`7n$pb5s`wlMOFriNh?(!w+{x`h5F2r2&jissS% zNPqp(3d6b8F1Q(Z40h($1m?(=Ss2=4w`=_0H)kA2*HPk_lX);Cv_2EUXAhN7DAc0cl4}`Pb-76K(*h$|UxfwUuD9HjxqtX* zW{23x@0y&Wd$qiwb!-CcS<8ET35-k|%IJsZq**(xQ%7)h-ERm^d-t5zG7}yKiKQOA zp6DJ6>lt6bW88QZYUPyC{7E3=ET{=Uh>tjsgvoPUZ(GY5DxV?nIni7t4ZTL>YFg*b z4Pr+n*lvjc$eU};4eo!WfYmx(Rl)fbw=2bi6 zV$^8y<127#X6cO!pJL8+ufyx_qWb8(h2!+>c_@>E^*cCm5Hc(xe~H^?gm@d^f#p>(amJ~J$~s6p+O2a?>%78%3HdqPH1=(wWn_jn$ahRqJwgWp*uE|* zXE>7R%*csyf2d}DnhdAbkH=hAyyeZYZeIts&ChNSxY$^~S`CxSqW5>B?WD}$QVZDe9=W6SNn`cBFXQFaZTACCDL^s{ter?C?c*Mp;;h03gC29f%#Xh;MPCGj8HKZ>vn0J&Rm{2k!q?64pj+ zED%_gY!JdH51&zE6#ekb1LP_6n(?KyL-O6(@Z_Gpc?L(Zejd@kB&tEY&1MAD)_8H~ zoGJhxMOlRbqCvgW@^VTZLZsJ-!RlgAHn%po3D0Buu2hi>STHmJ@VEE8%Oq!^ASPx( z3w|LFlaq&;c_LB`I%FV=$u})*5IK#Muq4%6!(YIVM8o{r*9w6x1URuq1#f-ch4xdu z;)IH9MewB;vJMy(=ASnaJrBSIq7jYn{LcfMO)AveTUUF7htIpSpx^>0pAf!>fHOWY zk7yAr4SHT}s&jqvF}eplJzCIdEF-!Iv3n1fz%)dq{e<3ZH1$SM+1CiHn`g^m%5r>8 zvp36m3Q}9{soNAL6A}0r+f49(?Q$?hu-)Y4i$-d1CX}DC%vv0D(N;LS+@CIEB^Z^7 z=mp^ogwTZ1m$?8ZOq!r5uLIzAvAzhQ!13qG5tHnLv{aOUCc@)zeej>ezSTDp9D4+d z_Uyl5saXE`l<@gtx?Z1zbwO@=PVOIr@eb2su4l5yNc631m4Bm7hOYET%Wx`eG`(xA z{@?y=i%iC&!i=504c5l~M%ll8&Br6ImXgDpWeJA|TkMmXJ$ubn>nrgF$L$Rk7(cU= z@IP?cTH}zRp_;(klJ$MX-GjR$EUV%l+f_*a`)T`NqXl9>sCl#UVk%?Uc}cT`~cS?)(l zeMY5>`ufTLQFJc;O#fdT-$c!&Y?$~eY$Tz=LUJ2@utd4dwcM>Vce!8F)ZDF*k!vc= z{eHhBA%;+!yQE0Vkjrwb-+uqW9@}H@_j#XlUeD)+$pbxUen;Hk@GE|}3GO}i&23~8dODT84ku$e)f&+BMS+H-8-|L4KR5YB*MJ(0uy zC-|^1@yGsns=uasO+~nXfTxDfYLX~P(HShuF&-Qum}$?1J4e%&@b2bcm@v=&Izvx+ zN_l9mnn1lav7S<=B{x39M*2)ueA>KmX%jcsrTQDBhqp8%ltg|CdLV#^DdC8c&;!+S zCtjMDJyKEfq&-P;X)Zjx8k42llvWp%CW`=i+SbD7fN$bN%w2}E6^*8Onmcf7T``!` z+x1kr;HNewM#42oDd^R$`)I5)haV$XpLO|GT$osq4 z*S3a`sQn6N2Auf;?pgL$Jj$?m9$oC)pp(p_G#LwZGy+_3cd)H-P2K-3l~|HMea`NU zhLq}P%Gd0P6VFN}_6Lni(khIG0`>NeUJ)4B2+FJqZwF5|0_nM%NY@7Dt0mUR*0hKUd18KQM@xc__%S4Th+rEc<`ijs#5Y>&C~tJ+ z;apTTC)L>HC|ef~jmyGT<1DY}4S6iE``Z(B?_|tScswy=1daP{7NgHev^_(il!GEV zzX9ozLm!iQ{cpeCw@U=EVX5UVAQ19%kf!r6x5CKc3O;f?M9kCuKUDnP=)*(+^*l08 zRIf1n?ET^rb2E7V%rQUdF21bI8n4!~J4Pka90o{CaO<3Piw9mmiy2d(5hoU^S)&+06;3idoO`Z1XZtZK&!3P1~-uP#7d21@2=0ep5Hf zN{K9w1LRSzXt+52_jV4TZt1FELa;#*gmF})sk}K(oqX+m zk&CzLSrX9~;Ys01^yF6J(5nE-w&aAY^k&Ft4gfbJm#YAuEUZ+y7{ejiDBB;EG-N+r zQ^4)ZZaA6{m!2C>5WI7U#1)$lgzj8X*Xa~wXW?t??(sQSYSZvdK+;NDPc-f>7yMe* z47+P(sKFMSOxJ3$V^;P7JlqyjyMfV@Kguo2yEfZwzwJiU)2LeDEL&&=p79M6e%7OB zYfs5LK++DE->LKNm*c-}$7r@Hgzgy4p6Z|0cYeDOvAtMg1dn%TBX&k2_ZEL-;5Nk< zoy_bRCpK>pilaijL(+7devP3n?wW%8|Xdx1FuJG7{SKMOF&{QL%HGcB_H$j|MK z&E?cizyJsht_^hP9Qn8GJ*LGW8E*y@2TKx-H>AIf_MJG-%ci)#o}stTgBLb)M!|5F zdULd<&R!wzXwZ2z>AU5Aw6e`MZVlj#Z}Z)+^@M({PfY$(WB;8jpor`I{i}nqmzPeZZ0dONx$o^A zENfQE-Srac3UsJ0lY3xeXR(TI%X}v01od;XEz3sHfTWDfRj(`v2;y zYsi&mmS4l`MX>M3kvDQ=^<^N&wM|?5#Gi+gL41Z#-(-1`k>>~Zn* zw#ViaMjMm>L0aN2epI!?a}n&=rKA=G0AQ7y_^_(GK3=CD`#j=9Dw`&lR{J6itg=YH z;hJ-6l@vhI(Q1VIc#V8-MGgKa@6@Kuy^XX3M zWeIX4#O?|cqRS0Es58=esf+`Z8qrqZIlIion%#qrA|a_I_l_e*GZ8KVj`Z8!E6?tU zEspZ~sG)^m26fnV6W@TDx8iW*rC^+ksCW*u54W@ZHz7AQOcSuQyiKl3gG#0)0BT{G zWU(!ZT-nBt;`0>oKG(-?1<*8`u<=LHcA?y@XP+A1%^=S6UXcBfu_O-86N4D8bUYK7 z3d4pO<6I14kvG`iOnI{049gtVx@K=XC4$30y;mRX5qZ^H2=WGww$Sa*JshMG*Vp^e z0!0lvAmHQv-FCx_U17!NYGq0-JJlO$ru~{}0`WB;pT&QyIM0lSp&Dq=LZ*v=E}3Bv zJIcRgaFDCV*;U4==aHNxs0fSCX}F42Rw&$gagHpgtfpUGPrD*8sXU@jr5p!qEo)nY z(e7B$o`#U08zIbJx;U3JS2?6#q0;40V8Q3hp||NfZI`~Qc!f$nX}EyI2&65&E?4NL zN-mvuP4opO-2GTJ3Ix8!;|&jEsdxEG{zP?ZMIAxEgwgIEEBYm1X%I#Zie$^J|CNc9 zt4Y7H;UX%;SYk|VxiU;oiTfofJu44)?>*5{66BV>Wcx;e^OQ6Enk~_$=Nv~y+Is+i zcvLf~S=MZcg&w-3N(bsEpk)93jb6ur<~;Fz53WJ%Kks?b`)+)!TJO(hXocGZDGpnj zf9hoeiO7&Md$il`y4B1&z1e_l(a}fsn|64al#b}X#mPI@kUX!BA(U%VuIdwaHHcIJ zGqQe<>=#CZJLU)3Odsg;lN?oUT`P6kG_(?iAOo+2S-dsggxF^;BuSQgEgRtU!3J66 z=1FCzUyHijq8Z-UGu^hLIF0oB>zS(b3p zl=A+;^w6>W>sit1v24ugT{0Oy|9Fv@#AZC79yo)GIAyZUyYQ4~XOYmw@%Xo~WUSo8 zM5|G)2Oj3CBR(+yNZ@V)7C*#^K?6y~E_1izOgf!EcU-@PUEUv@X^?)wlU5a9N7jFW`qCEefY-gFmTS53hR^zb;H+W-CjE1kxIbc-x3{+k{i3xz zxeIKx{lA01s{w2VTL#`CKO?+7UI8F59KF zSOd9K55XN;>p3JFeyLwH>8`4V%OyLEoJCigE+tSy=UI`~nI)9FdJaL8ZRF8NToV+= zp~nHjrQ7Ps^wii4hK=_vf=&B{8fe*~^JP?O8(1ps<#mQwCc($GtOOmxurD52KW?Fu70gJ zS+~`T^M~#H8H|?c14~f+i-=ivO>xJyFt`&*YE=|~T6#ays%elJqYe!PoNr`w_=sQ4 zsx2sMNPEdMKx;dTNTwBZQyKh`aSxPHUdS}c7%mBrO%y+dh>H5FJrZoCT`XlDF3v7r zHY)%9mGF83Z|BE_cFvQ-|NS}d>cV`%O76QB&?~Q(uJlJ`bSZhrGNZ6svrdtF}t6Rx$AoSfI2DgRpYbMJNUE)@?^t(rAx< zI$Z!!XI=--SbXE?F9#2!jj_%!dsVu-b9sG5?Do*ZtH?~Nm_aKy?ppIBoV>?ksCo*( zf9-3>zx~xAlhei;TGl(}^Eu0=fY$k_$veVZqxK99Cm9O-dnTYS?ZI$ZTmOUlbWB*6 z8lES*AP$=7gZBDXQu?zR!DtKjZoV9ro@naw^>lSnWg@A*RZLg%lQ781qU>Aw0YG8% zo5dlVT*jCfJoAlxcvM8y&VEa`7Fapq0ZaUIR(zQp!os$#2t;wp=GG-lXJdN!h-qYM zPUz1(HQ#Iavg2nq_^;pdTF&hkIj@Y6m(o<=AZBEFPPVKiK^JZxDd*c$eYI-#5PRiU zVn0p=hC)awS)j2mk)Riot4x#s5`|(RL`4o4IG7U%V=rfbVkX8beVz(hVVkU(Pnv5v zpFjnaKI0+~k`G$v1D|?|G>?R?%_=`Z3c1C~3YsyfGfjnkK^K|sQlO}O75l3bUcbqT zM=jj)==%4S5{Yi#?MitprN_Wv(1W z7?{Z`Vo#`SUh-@YUVRW}nqdo#d1>5}?u@s!QXX|Uh>beiA1^B}b-D@?pEX2PfSJ{A zOh{`1nd+5PP8VD(RlS^oo|wr9(Ro)N3{$U6%yJlc%wEc?rR;r-N;;m>Z|w44k^ zTE3d6i;ZiRrR`nL^1UwKEi9$-a_&Eveu%gIO#tvFtGOUmWPNL?)Bz8CN5GQP6^BjMh zYoa(5Y*6&`g-)G{T5DzE%hRbrx9RlIdlE66Svg6TseMX$<;k6Y|Kf*s^Bp^5u)yOW z=Wm_RCL5L5nM8!`Wx0L7gJ(QA>@p9!&3>x{lqcVa_W&@7q$8(O4)m5s{v&SU- zHDQXL!{P5PoO|XI5Qr@?!jk7nrR*^~pZ(niw(Dk!PMZtdx^4ZnSq8D?TH=d4;nkzO ztk5I&!Np3~Qfb4&P#~`I+fK+~#-U8fI+s|i$L7VFhFz5+hwRNE{{O;=hyQhPK7nB~gUVZuV)j-+mFW=4I(rECH?s~J& z^<${nk{HO?roB+8X7ytpd0u>t9WF26iP*%9E1xV+jPFU(z0_AN7NSc#+OIK-v{K59 zyxJJaP6N1taEA-{w3rbRPYi~RK#%JArE;R|g_r7k-p?}kkz)LQw~Ri1Sbc0g2gy#NT&3|lC!jP0 z+1Lmv{?M(=ruPa)j|9@}*yj~Dsou7_tA`7YM{L~R|2t>(8P?}_X@S1z4C7`?t}0qB z+PA77z9t+T_V@*F4$aR*rv;f~9fO4;0$vt~#HSS$D3f-SC6rGk0Qc`mQ3# z9&V{4ps+P+orDcWy4$3OmMhw%B(cz1j1{HUv=Xo?DSex|Bvtw)ex!giXy)J)$^s4~ z@By59$jsyC!KqXmRr(fNsDljGdr@v?!SZ!9t;zwIPi?P>aKlTSZWwI@|;B5o%BZm9^(H&%Z(srY61f?I7Lf`29XuErM0ZybIxoMZ2xp18($uJ7+jrNFm*mck0K_9P3P4WG{_et#Cy2g>fWw(aHt9DPdg7+R-GL!hgT_16{h9nTe z-=|$!ine0&@-!B81XK0K5kE}xqkdNw=9k+*6E`k*K)vRYpw=GvGKVjl|8RTmIDA>6Jtwl*0PHOCc z0g?D+2|tHxNIY}bJ8!1YL-4cL7l9>OcDU#2tMeyel{K5mAf$gq#tJr^eTkW(Ig7{E z(IBDB^}6*KO>x8Ux`|e0VVsrMOm9Qyw5lvVx=nj0V0y>bT4_emxmI4hl9On>-XA{P zOr43pyLEx!?EuT*CK%`B@_W0hQ?#=i;OqIP)m9Cns@00Wd1=!PL!1>DOKF`ie6p zJ+kE{c0I=~bkI*uf7)lS-Mi1R)<&WQ1QN11)7URKk@9wd*mOz!8m%G4!BVUx{I_aL7t3? zj-n}JV-jflsq{^Dy;HTnGjw74?VHGlF4U>YoAWnikmeb*Y~ACd;`|dnkP`U3BG?_~ za?7l!pgeQcQQZ<|E|@2}*)prFoZlyzxnc$)M-6i^2@`cvD8xBIFs|1h)fq=5&eK05 zd1EjN2OZCdcj>D}9m~_JLNMg1tDN9IKf+D>XXVXG*aj=X%td$M&gjD@rxWfP;v?O& zTdiAkfnV;`_Db9hcck9>!#+%ugfmUAbaoVqa#bsQfS%J-^1O|Y8b1Om16>2yMX|*y zK5;FTF{z;F3iq+MR$UiF=F!zicj>aEsgxwui zzXL#3P=o5=xA*pn`}@1*Qt6C~$F{o{Hx?InjXG(8<$*)Fjjq=Unq|!Hjq~LPIf^qP zg}-csh^Jnyi3 zAzZpqCD1tY$*JI8cZTo08dBx790y=DH1}@s}^Dcj@m$30rV z<4N@;xPHc!yw^T$r*NH*SQMI1-Hk}5UuLQ=KVM^s`J$ExLa;P_xpAb+Q2$oaYGwS^ ze14~9TVs@F3I@H2pIhGD{&)0XKl*R;#nLeU(FAjsf?M>{gMdCn?w9sFekk_dp%V^} z*4tcRiato<6En@ReIEl)_Yhvd^%PO&$v2jU%GJe>#mum7;dv4p*jP%3O>J&7%a{qR zu4iv$Ua3qWKdT>a%q}1(N--HdI%nhMprU|{RZfg0xg@qu-JoGc&cYTX@A7#oA;elK zk-`B(>b<(-dCy4asHCB;m8FbTWU!7U|7Th&k)19;gB~XBK&{M%r~|*)$pJ~>;Oq98 z&nmAMvuJ9JUOErzbh-S+ezXksCBHNm4~MUDSBrqz4d^ zs7Px)2a$=JPrq8+v$cA!pJIL}^DO)fhi31DLrSg#h;zzho=Yi7Mv zbKXeesH)FA?~D`jGBF=!v{N}u-@u+&7mIP=ZdhrjoV>pHpyAc)H3;}q=BmL&k^;_Z zQgCJl6`PCN{a10+KI6ZY=J?Okkf`|pvMT)5r4c#3iEq$GsCVBYmz18 zontZ55kEVf8FHI$We=4^bMvCHD~*xO34dB8KdJ5O1O?DVt66WmLEPN&JqlBOCpNCa zONC=6T>vj0PpivqlcngWR^JAQ8d@pm3Umn&+S4^IKBgo+uU5__6S(B<7)7(l zk;7EsL>CW(c7atTi@l6(K z_EyeH{IELO-83exWB7?`?~iuuo1B+^%qA7Il?PtbjQiGpc#EK6j`6zI-x1@Z5$z6_ z_U%e3b=8WF47-M`s`_J`-n91>C#8y*4Mz)z0&Ev>)V}3ydff8{9X3MG>kvyy%spfkD2JCb@43ax z3JJjz1=P%r@&xB^;-4xO2*`~kPyhMzCp4cPm^Veh&9Rb+W4*4Yipm#f4r37i=2F5soax;F1;eZ}wi-`K zn23UZwMZFF{YX6`c#Kg4Ut&du8p9_ycNK$SMB2$AKxpPE&9&f-svEN+vyRJw#6BL-?i;oGF{r6);u#L@FeX1SJ&Liz+tSF=d4Z@aIB1$J`VC%`NwSlMjtv>wL zqwsW3U9`|ENp}8lE6N%s8OB*AR#dBKiv7V&{`Cv_TJ$pv` zNmD>TccOWQ6a{72Ws>?ts57mU^B?4b=?1gCS_sC-tp|kG<`+Z!hr!&b76)_DstiUxP$!gy_SQz5# zKsLi+lhQqV@nrE<-HPdiogu-UrG95E)wK=O^A7AkR62$#l{?vEr$|R;COAp=#2VQL zyI)$M6%Vi<`q1k7M||Sr&#UEvdp~jZtyiBC525RZLepafzwQ4I;}6P#|D3r3hrtpt`^Yk>ic#N2Ja@ z90QNNqu+8i08pOCGzQv(T8Km==tAB}uM=0C^@N3$u(*x8lo+Tmb*A{S;jPBq5?*cHD$z8MQabMP;9g7E5+bQUy1t>l5T6vO$S!)f~7R^+H*MmJW8Xk@S{PG(@P#R zq_k6}EaJLBNFmps8paj+t(blj?EQ<$_7=G9b@!AmYC^_JKy(uMCF@17o6D+HLDdHO z27mv|S-#-bwW)Io=(1StM^#BmUoR_PC#ufLbsBo`f=QxKGfwc#tH{>CIPQq^F`OkF zM*NEfgmp1VSc!667rn((z~YRh496o|-PJ1?E3zp-m<$Ty5k&lHs|@Gp8a2f8Wa6z_ zZlXY%4ic%fW%iQj;VYvg(M_)g^T+qD{_TbMOzSdpk|eL=`KBB0u)LU`j;_7qjJbQ3 z7K?^B8}L_xSVJeByD?|cI50qJxG98e3kP7VTdcg{rf``{t2enWl>Bj!^!a&Fo&-^{ z@GbPQK53PrUAO&x9#x46wx?RcS@rkw`H23G-#~JMN08LFjptxR7@)4&SGWMkET$M12{xdiA=f({kTa^$4Qb!?2E=CTfXdCdLyaF!Rj zK#;PISj5Eesp%}U$5pBMFSPQmNFGTYE&NJfj=nR*!(00z*{_YyS2GXtWl8K&MR_0= z8V5W!XKsB7A5vd!xecsG*vp9b@q(fF$srSg??EBS8yl?gp_y5ip|Ze^!CZaI;*|$L z>tD{5?Z5f)Y@W%_wvz)GjNUa~GdObS3m{A}!hx3CyOY>EoAnL0S1{kmEOpy&SEJY2 zcV^j>nryYE#F9F1*tn*Xi*C!2U$+&!be+bBf#UOHYtu_@)jaI~5oO9Qk-FbOy=pJj z!*jC8l1h-XK_wUQ@P1JGeYn=t8QYU!`k!L_z{X~$yL3#1b?#%FO^(dzdHNqYR^2pcW%s}D_*qBx zfuv|&w)dRwKgi*t-CNKn2yNVbNzpuD9OjS>*YtW6q@S$d&^8H$4jL?Onsq~hcTwKIX^AN+_D!$_H-`=Iamu$$X=_v7g@I< zvIxeAbI6RXTf2DJD4ed;d2(_pOp@1UW?1-Mb zv}cWK{Li@@_ud=gM@*a6sH1@$WKw*bhtHLvc2N2ml$wl=roe~upuZncOa8$#Kb??B z@aiqTxM@Peo$Fls)UvM)rTQMYo*Cd_*kNHhn|LhLE%83-4Rc7cMv?ap?vH>p?4Ikl z8cyk@ULy<}$_+slOm z?`C;_ix@KaaUb}IZqDe5)4BoC4Jk1&L=qvxh9CkA$aNEb!2-_9a1c~{>`Mh^%2`Rf#2cB@r<>74#fT>BMm}r|$^m z*HUS!9_2pMgMZH>3gV{Q5={5gIIQ5S3LKyg@5DcNgNl)AaN4cX4mz+Q%{xiit9xloQdbMltF26^vFX-p@Nhqa0~A z(|428h%o%%QX+)jHcM}~wdN)RyVCW024l))oa2mu3h(=cZRfUF=xIX43rH+83HnM<&G4Qb+cQSm%bcl_KenFbHaS5$}i%3QuJ z?xw$LJ>eyf(u_aMR+wr8h}Dg*4%WIma|S;6@^ba5UFX_*dC}IgnrF*m$zW08VFlv1 zh9KD2@VJul)Y0(y=C{XE=nP#DJ<#15f4hlG2vObNQL7&C$7m)~#DN)S9>dz|$7ame zCTt|h<}{96BTQ-Vx;nW@DjvD0#)0eAbMd$mhICmf z9fI|3FK}pR33R+KS9;d0j=EUJagVaN>&yhG##rz9v!~oMlP;n7=}~UDxDjxA-##o~B;-P`FWz?dyD$O*|HC|+-hr|ns7$Gy}l6IVj&cwTNWf2&PmjjIC zQx@6y@lZAHVlGj0k+G?Ebz6qheSsYlOMRT=H!ts^`#IG6x!CE&e(HV;)?Jeyaj-q| zuWjBj@;=ZspKomA%^V*B>%K%R+&YJps61KfnJahF@Y8eN0!Vd?q>|FIrj{npto3_o zLdn4)yS*0G#)kO|bq7W#E18Sd?2+Kw&)|cuTXR!^^J|rj&8~QAP38~;F#q~jM3SNv zb+CO=U0jNZ>)8u|ceUL_2)vwe(!ojVdBpNa+d2otg@V);W*2eNC7g~P>}{~DQVGMg z(^-SoE(IlVU}+VYC&-jLQqe7}DYVJf{3MR#+VZ+`z|+J=gnLVb`zN<$h5zdt96+J) z0|@LW7VELJeynr#+85SkaoJ?4l(RY0+kfv}$~vHr}bOQ*GI?rY*P4aRcRQNT+i4Q<=kaB)_|g$!G|z5+BJoxzah$*o>~BXerMu zWyjAo#hov{&;s`)e(Wuv)i>TKW;QQzt`|8i(elwF1M}X4&n8z@|Dk89h;DUK?;_8a zc#dKDzi~Km{#unpV-)S@r(o=9XV2;eg+f#i#<^!Uzp_`A(cNi66&=?X&S`9|-C6Wg z+=!g-ka-(?)2Dp)zqw~4@;@)}Vxivsaq3xGHfv=mDWb2DEK8b65S?E9;wLGDNLm!_ z=w9tu_QOaVS7PpG)3Ga}DQ!r!o1#i#H(yyKzbHw21V8lI?d+2pxd)s%rk71s_4Lr0 z?21W>_gn`|j1<>xBG%W&mcPg4wsw$6`xDZv80UL-GKWs{~XVfThN zJ4QT8{VN9xlMlll(nR$|3zY+8;=UZ6LI|j!^4W<|leS5iX}>>;dJo_fb{6K`Z#!;} z;(^6srdq>6IEg;ofs{1(4dw2`T&JUG3?%XUdt(zRDP=MgDit|2-a&uZwx1XW<&HHn zO8x7$l%$wLrIs!3Zi1UmT9v16-|0+;^v_&I3Gild%Oh@Mc?)Y)BmARJv8=MQh=F|W zqQo;ud(-bLtV?EI5)xImdkSQaAj6(~zXD0AYl%cXDuy%*PPVHS{66@iz%m@$u`FHe zr)k64*$H1EXT)&NR`=ekq zJ*{Mi{I=Vi3<-RF%O<_PGH|5cg03kCB2t{6BYTsBDhr`aCX+6(> zRS%gm@Lgt%RT*DjT0)du2)10j`9$N{Aj_*ppaxo(d`w~~$nj2D_|^;OMw>77*C!PI zoQ@xzvs>iAyyJYt850h0;e{D6 z&RANuW}dg`@z!T8kFxxE5JzB%kjU@2C8F$sM~{Jww4@^A$k(JmYuzj_v^1}EX61X3 z@p+^qSVZ~lDXSTgT9B^LwHN~MCeX#4us;(x*r$^{6`>e4Ni2g_?JyP^75%d;~*L0z9+a1{eVnrasv zVUe?z`le(_lW7rQZcyr?(^BYdu1|X~k`0(l*MeP#*nW7?R>VN8f;#TB!sKG8F{Nqx+W#NHoh<~}1oG+)j|cr(iI zrMRI_InRu>mDTr-d4W+Ldi&emy@+|%{YEc!ia*+N1^IJuc>docDeE@s_3|tGIcMB6=9X&~)uM zp<|MT1Y}|AvgssEQx>g#W+Q)x77XKQg4WD@0#zw%+R8YZ^HH`a$ zL;wCwXu?ebbCcNi7E9odD!)rVGvb8NgO^KHzpmd`e8nzxH(QhixMxdCvOU+u z1J*ESKU=am*B1S(pBJ2FEm_KJ9{Okw7Nd@gBe*nZrlzt~Oy=|}clyKN~@8u=m z(fi)}(i8`43?e2Z^k!bzwqviu26xP|pE=In?I*t~j|YK3M;Z@*2RY)4bHYn@bovJ= z#`abqTrXs5YH3Q!<=3A{)oxRGHxH2$xfBHXa*F=^qSvbC+J4BVsRgDhpPpsL;m3<| zjtfh2VpG?!-@RcN+2u)W;I3XQWy{Vc4n$H}<|SV%ep7QVM8V$l^L|C)S<5QO^;-7@ z1RDYZn%aYhWPD>w~$Yq#nP7y;B9>w8x7o<(vUST;in6T;G^P`}g-p zMmb5F+v1T=&GQ4=9saE{i^87YfhQ@cwtw^Mbk8{U=AKnY1%8MZlzo9!PgQ|?oNiMdQRUa4qtc5wYnk5tYb-&$iJ`s$n4R!zOH={58 z(4d?;krYjgS$CEyCDzp)GcN!MVO2lt-O_$gtWwUA5W|PVmE4}3XP>7nI!wT>-fzm- zxFb9TgYrOhZu>R8fCuk^9^YdGe-28LG$7euN4pZ6q;}h*`F!fH1Y4Z9FjtN# z^&2ceRMOy!-+drLyHmMPLXBf`aFZho|58JUDOG!Kn$90k3*Wz5L;tnD6L{CRVHWk(@(hy_~FlT{F?r=9p(;a9zxS8dL*)8A<^?1%r7pS02{T> zLT}CSg>22)F+jez1&?5|AZsj*Pp{;!>N(qn4p+}a@V;W{_^%z~HNgFvaMZP&Vr=*J zzCac!N+$@SlqBJ?ckzA4^`#VCVFKg8c_+j3nmB<$z$0Tn8sw5neA$~I$a zdW{zDy0Wm(JOa@dU20eYGB@wG&!_cM6>32*`mMuG!2kN`kXawSDpY1QQCaJ4v#R=+ zx@p-9YgJ04Q3E`j74_?p+wsP&4u8FG2qMtzfUn3j!We^X?)@%|wN1+rmZPlk4B2tL zrS>1>-|QE0z2!P7kjZzp=eEk^HlMkwJ)9W)o^mNn^upmlIW zit1^Ovo2J#7Ju|r@tS2f&{=CLkGEc#EcM<6ZHR@oL3e36cPzsghE0h)prbJfibWR_ zIJ&Qd-+}89ef1=9#lKa$Gn4UDzq!>r3}RdclA3cJSNi68ADBy=X0Nf|O!H?Y2PIG` zVeJk`e@VvnKD{VxX869^O}+RG7>=2t?^ZI_nk}ll;>R%-wQ-9sQn^g{P*mJEG9p1# zsi1Ek3>dst>lD)`Gs4`F31}TU>q^Rv?$o}=yIHQ1pjY9S zB`x3n2E4_={Uqld9tm>Y5i8PPM*crINg{RR!ufFSrwyufyMQ-F;Ieusg;DYFMZ%9v zYA35xc7~0%rSdptdUq^|&0l|Ri=7CQswh#A6%a5(_WNegQZ=e8;B-5r(P}19zi>=I zkw?zyMItJ>i6pLIQePdUmNTejfh85zWGU6Ul*d9zQ5J~e-!skqQz*w1Uy(A>t9GJz z5t!8PI(W?3l;0dmk61Y1wJU>@{B^d2$aCGOSOfXyw_QU89LCyTjhKn>!ztD8pYCna zF+(-(zA@3}DGe_G`~0*oPEwWyKFl zxt2!Q*j@axBKn;TrWG$ZyiiUt2h21O2o9+Al96B$E%o@=5GJ5f&czBFE8qnrVd{B* z)Wfle$o)G+EWsWhiTZ-fytj5pB-Sf@b;02-sO320uwB1#o=J@DQy0zj3v$OVr;5Q+ zl^W>Xv(#Ka`Xf@DW|0+_fZ)~7!eH3|aL;eRlVYkURSFVGLt6&FM)Zg^X1%e^ zgS3Dfs5>&a3*Ypr6y!cerPY}bwgM+3+%pSQKOfh*J??2j_%s(Jgax2Z3^~D9(_GMy z9a{F!7d*tf6>q!CgNc{yal+*8UyP}ki-}IOs8czKa2SB@x$Dt!*`x0w%(r4YLR(Gh zCL6AA7O#TpwK=>zJnco@-Dk9(?(=J9?Z0>f8M7N4s$rYWo^s7tb5VkvFL3gwKL6*z z!#o+(ledCIt|5;LcU0;+iznK~qF!wMSdDU{g|znul0`i)OI-&kcZKHFnC<#~bGappItozyx`S^}&tRt@{}(gBU_{m8Prr06S#-)-eQo zMgaO%Z0jZ`)_HLG3?&u>34c>MQ+1kROvUQkD99CMpg$o6f~)>Rho6P_xO_AE^EYZK zUu`W)hspbGiN5N-CVj$Bh^v5`n@{BH1|l&YEGIv7=aJga{h|VDyBeysg0X$jG4DO4fo?VgTj;*+K!vOw z7mN_S9uMVc)p!CGMAb)mulNfCRxhnZ&_rTF8<#3b-&5Lom}vhbBaXglrz&A*8E=YX z?C&O&9BrTX#;aE&7nTwQzN#*qGBo_w?qL{%Jor0jtzFJhVtQtx-fP8n_dnONDgJ9P z?{bOPK;aNxGy3&ypiP4b)2%u)q_y;Wpqyj<_UpKNhR37>=2iG%QJUgF0w%5Xb3!=E zo1DhxygI;DhiD*KgEBs8X5T|{DF|Wtjn>-Qd?#zof@Z})!x1<@DkdrPxcyN`Q8G|4 za72I*XDU+Na8!&(6Txezk+LWZ!<&5WHKqq1pDvMIH7SrR1%32tkBW|$bJ^}S5li2H zo(#!JfPk&6V3{WoTG~4Eb6y@jmY6}!^Do~dv_<{v=#^a9Kdjb@?DIS6)$!}{T2V3- zL=qB{uhHwNobN3Cxw!bw6`P^_{uYr;5_?(2TU~ulmLY%;DCdxYu41c}p3v4%e9 z*Y-GW0b~+mzonwv#k|XFdNMW`8RI^l>G6=~fkl& z0|9Y{M{EE7VK^dx!klZBBg_46XB3vd8Bk7DFV$3zd@s_&hG2K!I<;Ur{lO5FwhmrcX^0TKp;=(?Gj5p1pPGT5HJs_13c6BC?{xS!7t?sO-J!Q$6nfU-1vrD{> z3~KEERjyP!oggRo@h)0ZD+oDFQ&bbHtP>@zEs=?jn?XLfSJU zO}t-=vt$m1VBJ{(1@kyeD&lobu|B7gI_wPVTRRY= zTW1{egu#F&3`NJmN3Ly4jux!bO)eZ@<)2jB>Kj>9fum!)plzdK;Fm48=dmARpG}}- zLskX(Bq>fNCY;jSDUC&!N)+J?AYBV;DAZ7$j!t{fZD0FZEv*$2`s&$5 z2t)zeNh%j)YwE} zcZPq;OJnriv0~@1Db(GR$2ttHKz||7~@^E`~LmhEx!}^g~}Ok^vs|sOGHAd4kR~ zXJMNryL@;~9D#in{g9(KDBG%SlTrU6L}4g-;karjY`?x;d-w)0=PFRA$_TFBWDna? z?C*__Pjp?uE&q|tWH;CkhViu^S+bcz;`0cH5rJ;ss~Q_AgW_<1*$}Q zS0olMXV|S)3Ha5ZC2R`-Dg%0`PQ%_RUlHp-6)2x4SrUwN>D4F(mkitmi$9eJnX%uz z4rC*$kcutq6~?__mLeq)y zB!V6(Ss<_9azWlaNwZ*j2$Y+fw=ao`eUT51IhQdRnCY`#Q{iX?ENM4S3VM-@>e!hl z?rX+WJjU<=L9Lp+4LhkQXzjSO&~&D;LEGA_E`4M+TF@<&McU1p|56efMV*`|YioGhEdf{p(!K9?NXzju4J zWgXw?*Y7WAlq6tM{ZOVcDDNzblco`Iwq8KQ%fq+O6z140{TS;HYdU=X3p$IYg!YwB ztN6iCJ5<8j_n>Z$+-TOtq?{4C*or(wdx=^OrlXK(wY2v0ihw=B z;4wd%EMXI>v)zbIqEC0P?@bS$=nMniPUe2pgVOqzoR9_Dqe3<+8ARRbdl#vq{|h07 z5H|X6e~A#_=(tdTswc(*fzb9^K1k*fotm1J|rTf=N0=>(Awk z|8m5Sxrmu8e$&76?PZ-hs_=KB9$Tru#KJRycS^wTC{ql=%yw@0fE(B4q*f64dBVBiEd;+q?vKFlt70s$oFV#3 z6uB;0c_6`zlNYMysc??nx+zoX^^b-lX{^2J{IQB*O7YeR3ko2gjl$qhl_&_9r8G;@ zosk#VK$KBOTRU4A8Yty=7AMQsiNmeH9?94I{3BM7{-Kw`H}cPsbb6|X4cC9g+hF@ z$&he0h|kj!vsO#lc0|5NZ7cR7nMtm$U&gg64Pbx}h z2HOVNHTYr0&T-&Rtjc4{8xY~ffkJ72S%j&GN)!z&(tlYd^_iKn3cD?*Jikr1BbS}> zIUAjr9HKd}6Q6vaZfXsqgpP%VyKlLzqQzRgs19AyUy9Y@_eijhg$9EIY#C{S0k|$y z``%TH0;9J~tzf!1U?8P@W!k^4pQ+tGiGhA09YvRqJWmZjU7^_+3Ie;a?UMj43aWu?WBZZ=UFkN(UPg$RZrom`kg&~C+KIY- z;BeE=1n8T9_2Zkl=$cs)6d}9|%n6*`7g`}YovUS+M=Z6Pz|w(>a~zbDp%yS){C$r~ z8~B)q4e$3JkZArNoHZdXF(X;?pbBocugN%&39SFEHSKIb$#j?y{n4dYi#G=t{?wb? z-@_|Fd@E=jKiI8vy8s;8H~DAzysz$}ZCDVY#oz4n z%`s$_FLwcht@DJB5c)+_|8@Ox$R(s1bcm_$=Iz2O9N2E;{8~)BufxU#HsQO#(MQ!d*%ot_#=MFy887AaZrNcG z?TP6`Msz>zUws^EKCwh))S)fI6xL{jiuFwgq?`QE$Kj|iOjwoa3(<<^Ip4OXsT&EG zpnSCC=RxsjuiXK@lrzSY;9^RuxQS8YYUhpB{g{C!R+mm_znj8u8o@m$N2;2gb7gvk zY~Y^5v%D=;&`u1%vKxElN9x=$E+x<5>_-tn+->c0;;EYhtrjM40=m`i-oulTeFNTB zmR_EeA};yrx-no_tZwzJ-hPe8bY|ccZ9HCtOT)}3fB^m8`J#aEXz({wu?@&-?{qkF z&6(<=e^s%ob+vt^0GuT8MS0rzdgU#nOJyL6OZ*VETtlZ9Ygz*Y`Ud@+hid1_VB$n5 zM=g~mjxisho^q!z)Vx*W3(a|v3KQTHO!=mJrr93>Rf;WpA*~cA`R;y!C>R~?LI~A4 z>Mr!FwgM$foa@wRul&qwr49pK$f%~`wx}2r)Y__-*olzlyS+GD{G+nx% zs!mKx%V|sdymyohKm>1&5xYfH7K1f?-t06&J}*Se%&6ctob)f*w$$Ih7lgg6R=nA> zFq3nyWDD}U_@%~0A1`T7C|ji^s?iDglJ?+IPm!7+?EG>F{cOMmDBU^*BJDM(yI8{x z8zJp&Y^=Z@^d<@@3jvLwcB94Tp0}?NiJ3mLIfMGgM~5`>%1K|-xz_r2(otc6V95O& zHt$H2=UzSAeEI_D3uo_P%mhzxm^;Yx?dOZqm84CMLYMDwimnOgS-&w0A%qIT{Q=6a z55pk(#kT({4YSKiLlN^e{&_c2c)mys>%meg&m}cWP+Oiy`d8Q_{_F8L~Wu zya|&aJWjn6%O(WCHeY2uiMs|>!rMJeL1uBk?qd@_#{5yAoBZ7|py-xZtgj@|#gnK& zad5hLfMNFtQfgcs(Hccg{m3>}!0Juu2ry|IWLoq`CJAm5b1z|WJN6j6IZUOTHB0)t zOXIP9^*ez}l_n?c^Oa8DL9N|K9~NI@e|{sadpXc$%)HZgD^@NAwz{ehwt+3_g|`5s zl&3HF+Ek5Oc8(Kc=9v2#ZFsp;X!#|c+)n|*#2zv58h?JC~ms$^{8gycg)xYa95Y=(gGZFp3kmAGsotxwprRaJ9e29e^DU zLT=M5QWuU0&dDuzDljp+`jf;~+tfT&HV{gkWXLI<%GqfMK&a4~FD{&7b-K!P_MNNZ z{Z=%h;JOgKjEZh5C?6v8;)S{39*ZhwH9Ny83JR(g=0?}M8gm`9Sn`{GnM;u z=jh(gS3S)hbw*sA*z= z6Pq zQQ@D<+TsaWk&OyoQ@eHASiFI*&cpV>9}HgQQ3oWRWGfE6xzX6K8pUDNYAXT=Kyoz` zBeB|>m}aJNqiRW^7{Jy6?GKwR?npTPOKkkMPQy1*oyylO?qdCf4e_LwnO)0SRT^GI z@Ip1$VT^09QHnW2h3fJrJAxOSaXoLDk~2NM(Q|yvs4&*bY12&GQAe;rc1vl!3E;j@ zfBU7(e<6kQQ8DZpz=4Z))5u~+Ukf`nkN}8I%S3gP5Miz;feo^8mR3}(}ka#*NPZUjx_~e9Wi}NyqruyA9Ja2df2u(9?%Sd7SOvbTlk&j-} z*QivUkE~qXIsjmoRiFGhvWpSp3V=X2zb}*x&5m|;MQ!q2Ty#wP7CC6Yex5@NZ{x#0 z9@?>%LiDhMbP$Uh_}^If;FM+g+*bzO*7n9R%PXnVsCXVTZlE(LAKrb6`0em02-)O| z{IvPKI_R*K-}dlu?_#4AJtsNLnJu*lTIPI<(`SinSAp2VN^u^<#c#_IO4}4ll-pk% zF{z>M8l&paIikWl8BIzc%QdJCyl?Z7CwxSiW2`OvMQ&;uZ_t(RW;#;~Pi*H|8bIP? zbT?MTY=aqDj@Um+fCiIZD|;F^Y4tthL6alc)~T0Pwxz7W#)~R}d_zuNU4wpmvWTjfG!MTMW(_YqeyZ zp^I%|;n5*D2b*IVYsq+%SdI%qanSfyx5{UNY*sY>OG}LZ%`nfKzJq z0$`6f>Dt`T3ObKa^!d<7T^hmtD(|yGoUsLB=Fj2NWKCo6NVEq0-RXo&i^+7NbwS+R zKd2(eyTB<2!`R_ME4ZWEgiM}en%G;mN>!4%=O>;<8<|C!dns!C;DV#ubz7Y>f)__b zk=f+d0(9pBQ}?W)%Z92N7`(ppO&DR$IHIN{5jLM1qf${wtI?nFHBBB1WAUfpB49a% zeA1n|u;GW?Fxg;2qLP?Bd~Z4bBnRt~(3T63L;ZltlFhkZG}gDIr`UPO!WXeciqScGEX$Z@ z10>zFUOZ@`TU98lsVz7?LdXRdLO3aBN!-@JA`_+T0`FffBI)vi+bjQeEb_OQJUu)E zTa>CGPzM2(z=auD4vOnA@&~{WZufY=uU=&|e=7D=mU%zEA1b;sNZu2W&hK)|bF7Y$ z;E~H`M54F)eu+Pylo$xqQsdY)UGb>Hf^0tepi(dorWdczTWSAfLfFkX{$!4&kj~h- zXt?A2HicR9&x0V#?ccv2#a2Q2106RsgPzsj{a7p`lTDL@t>FCr4X3?SZGhygeed7C za5`KkyKs3_v?MEbaD@YuW^&{v1A=oSx*4p*6O0-6XTi$ZU|Y3brda#f6TJJL0JxYI(-@Ni?KSDFS9DC1{a22@XcfEGIvdE{~gv? zd*h+f_UxLw7%!Z0kP&i~#t1Qjp{-Mitx-mpp3X>Xd<(k{{aF&)cK}owC0*M%);!)w zI%y^y3g#G&kztjmqJP-7FIrCzO%RT1a0W5Cp zHLY;rLZHn6ew-n>?>F}^v7b(gy!~GBMG>qR6{trqhnnQ0BnWJP@F_g$%z-(wI?G`( z-lVQuK>o2=BUQ6ceMTa0z_bUx`AbGQ+-|^a1*t3T+J1q0A*54aPd)=?4tAW7xn*n3 z2|#~~>{Z8}Ft!~Jvqt)P{T@>vx$3;QfHq%@T^R{?CdFP}E#26Q+u{%Mf!cP(GbP;% zK<{BpEf`S1P6)F+tt0sDYJkiVEBnlBAuf7%PGF#9%9&^p*LAU5DJ-|7c}HUV4I`hx z9oFmx<@yMdMsPlentrR0ai5aCuvFs~4*jwz2UVvc`^r^#M&To#m{|C5*wZA?#AzGbXkJMqjwLj=-n)eqI;eK1RaTqg2?o^iSbQZRg zuAnfai5jDOeM!|TTQG-$Tov~_nlCC6@e5}S_fv}2!LBAw-ohS_PtmPEvO6h$#}16G z9nUx|=$r?Qj#%YgUN^9cEF?XySFjP94HvtW!79B>)U*^}gH*6}j9*Ylu|~6v6Vr<3 zUORRPh9f5n*CKyz+U>0EhVHwqHfEur{IgP>riL2sTl}glj@R3qCalrW!?UGWyxuL1 zI~hu{hRy1PJz>OCdFHQ*u;nxL0(JFaYTUXEvD%yUr^$QF?ZlIi#-5ck{S}1GOXdwJ zIQK*j!)<1yY7uROb^>8x?s{~99VZ&h^vh);9O7~1J5jEz{5 zgcM?%hr=udgV(J-%8NTo`JSzUU(M)ZqkA%>~4!~XdD+JEgw0pqhmj(0@J zN@BBjGn>oCe{BADMb9%%zv72n&eWo=07zedtD-{6@mf$^DNhpaFwDW>UrNBOgtkg{ zwh}%S`yk?V5L<>V%JfePx|%3VTb^#`m;~QvLzpjC0PFgn=uh?69wp^Zd?V1 zw<_SM6k}n#vA4NZU}U-Y2x~vm5$rGQk@w)z_)zH@)F1oC9M^~!0UN3az)4}f>$Wyt zv!qxgSA^@+g^g#z-^7H=37hlpY&=aHAMnU~U964|r0{SV&n~Bb)I&AlIwjERlBT+bf&gsM2#$lLZu=?`kMwG7$H*8o(JE{QfJYRk+nsd}63 zP0`{Af1#KT)3H~(GdXqfwCtDHPHOawSxP%icN(Y}Uf;Ko1tf^# z$QkGo4a1*I*&*#orN_82mjQ*sg%D}htlyyeF2F=+*3pncR7~1uwL9h6oSikOxI5po zNE&82Ls+?t`aeK|&XZiW?j*fgT~J;T|16pBlT1=V z@6ySGra8SUr6izpSgZuI2zg99S}Gn7B}bwbWi^0J`>*1o{+O89y5W#l6q8tjjdHybW|b#I;B+O)o#bpQW`ow4H`s6E*>~xvH*17FrWMeWWiMHREl|y#I-+e459GW)-pdhxZpyY~ z4OEL$>s#+@{keN^e={LV5tkDa%l2Sk2I^I8e0`R}{@?5^FtFupW&Ug)= zvKm7wb_5WbnnggPJ)~md?}NV?siW#mR6#X;eSL{HWjya(r`NvLEQQE^(^pEoAM(6> z7g|lzZM%RU#&0o9`Y$c&j9Mr$wTOX4UH~*5#WHU`1BUntu(}>fUd4{~atJs=EoT(T?|gYvsW|P>|~C zcmjuzcGN-vd~D?~hQJF@^GC!i5%-FgW^h%koN| z`K5JMmAvTix`$`#c;;RV{G!OY%4ngv&|aiY>nv$J{$DU^tTkf)Udp8^$GDT@D5-O; zoS*dv*;J$(n(r@MPE{FIx3^Wf+ZEd+Yk~0EHHLWvV1Um~$S zSTDBU!Y{MS5mksH?8KIVL3iUu;@B@TrUv*R+XxnGg<6FgprbY31Ob-7n4kZl@iN`;(Z%OO zrPF^{aFeUEPIJx%4>UWR`I8>d9~e_A+F9nYI9F7orQuj<-Z1r*ERh*WWpJ>0eiA?6 zM~$T0!UBWCZ^I`abY2!#X#u5ik$gYjE$5p5P(pD1s-d}fo{b?wpBvFK>=$XW z@U+=Qh^o})F2qwo*;&3GTC)DBIE9h$G;j;_Cip~CjqUr@SmI&b@r(8#|M?*a8jSOz z@G9zeW{V|Q1{xwy6(bH7dFZB$ozF2t%YFhsrU%rBxmy}{5PB;JNlg6pV8&>L- z*avQ+U5~?v#+>LW2klJ;yYzPp@XpcR3hwane~cRMWo3JnP2khm)@I zMN)Vc5oQXx5{%Ic_4*bn0rup*U<}MnX~&b$j%Qg`krnsBGrnTgZOioEHGi;M$Pk7h31l=*skOZY6Wpkj~o}e7oCB zCexkvyAmZ>`n5aRW%?Fp6-ZT0i%sF4^9D1M-7b*8GoJUh^s)W~>HM_+IT`||6*G}a z?gISQP5fo9tF872zqKoWM=plsRLBzeP=A(>&K_^(mZg{{xs1(~-pqTmn1_PL>VR7N?7x+UUo~S9 zW1xX206xf&|9_#Q(8N8d29^tc_e8^Y!ry+)B}~_AwggoPKD!VsKHH^^`|g4w}X@&dA)LwR6KV|mrFJ31HH>+zPM%-LoqAf zj_PwTX-^w#7gmfiEad;O-||G1_ysXhsMb$v8NsZVaB>hNR4{agXFwBnp3?I927e zk>VTbia^`E?|4v=HfaZ&T_Bhsu~G1{`#ih!6OF%N(|~2gMg@d^b~v`C6&Sj;VA#0E z(!8BFy8E2w*yk_b0PHxR{}p!Z2H%iuS?dkYnkWZPDN$Iihdk9P)z(T~kYYxWqwP)6 zDpkY1c`0**BVxsU8U>PrX0c~5?LDBMo;;Vgcy4$Vvemg(rSKdLFET;%j>TwbFI(r` zjs@NBd*uoyW-@9oQc^auUfar-cDUg#b#*2zZ)bJh$-h^Ekq2z1d-*yQoJ~ruUh=6l zmLFMqF|3qP&+e5?BuA)#`O&W&Q2|K37QVMinAXm#P;VDU7CO~^6|bvR{UbK;mn5gw zOE7J-PTnK@-<0@`c{d_cd^(fFu-XE6tfs{6KPid~UI-KVAg8|BUoX#L+Xas~%DfmX z695+_!Pe!)aT)0IYW&@fDS|USs%o$BO&0*&QIOK`F&zeimg!Pc9Xcq%b`? z8~pWZ?DhJL}JT} z*#J)p-~E9DY$3gBu;$SQ82@FHv@Vbuzql%xoc$-)S6J9^QwL!OXTNAHq6*9?Nn|Em z90`r|l$MkGemS#rZjpi?{pfmEI!98VlIU`4<$DOvLNiyK>nJv%v^t5?Vkoos9q+35C(|##6x5(w&PSw>XsrwsD(jNKgH_dG zcCZ|$kF4E4Qy10_j}laA(dA67CB0cRA8$h?0FPg4_^|YLiZcZ`K}5Q&&N#`8w5tcb zbM~xotcporjNIb4S(@VzGo=hRClJZE4bs%bwKW1w11V3It1 zN;?S4d>+u*%Q)}-t%$k9(m>f1^Mo0^v(7quN^SV4bFN<#YP;Jo&Y9Xp`M@FO`EdG2 z>RqU6c*di|9FW>RkD=4{*jNL<;bFKh;b!4d1coH%NmY6#1tPfKX` zoCpLyukSJ0_M77dAl>+kB2oBu6jcX2cC1ska9=sk-Ufdmwv_S#~8xGK4!duK-9&5joFiLvQ! zJ)sO;r+uQ>n5-RM*rJrQ_hNix)82-55U7gZ?UD%D0^ za9Z;asq~D0k#CIP#RqjO;qw-Eef5;*0=WU~_~p)<0Z5k7kNdMXJ6NM|Ayh_qTK?_W zU$=Yrr_cW0*tjLEeh+XK|dcFOlgz5uD<`i z3Ba|R5GN>I+@2k@W)(N@=KAT~n1py;eOC10#+-Gm@BryPWqR$c<|&;ks_VH5R{w^% z?>n^tLOR7WL?D8Y5i&W7NOHQh^21px`vt{_k!NO7q{RLo>zp2_Sn)mu_MBRp=`Oo8 z>bq|EXv55CN+mVgI8(iKr!P^}21Zl?a#XsJJDXJ}n*J&4WULW#PIIqYa0=K6eFA1i zmL@5?-%0;Ka(o38{gzKCB1_ajbF~~LOuNomv+=coxP%@V8Z5B9Og&TwH3i-@*uDZ* z`O1}=qs`-kU0To86|3f*dkdiw6ZL#_Q;DHMR}C}BPi8p~287!-R|)n<`1`dQ3xoLn zQ(t$QuF+gaOgIT96^FBbjqDZJ3jbL5&r6Il9q8N<=`Y-}UYg1(T(U7CJCQ|m2x|$0 za3eeEoijCU`vmtBvcsG}0CwE4-uYgh{sn63>bd)^%lwKQkhJAQPPSS!3jrdja~|(^ za`I;L7g_mM;m_LxTPGg(khbE<5K=UybZ*H+wzbb9dpX;CE>QExE&By%>C!(^oeQDM zFcUlj5j2PDu6D6tYwlc_G0^pDq((A9EwQXskiG9CX;mQ#A0d-y<>HUgsT_3w`G-eO z=cQ-Y!^M+6tU9>dyGgsfB4&WU&ToUOg)RKs8Ms0+3OPRj0fTS8Seqx8hph;YHs9o` zEpt?SH>9^5*O6uiACU7%=acqhe{Ny0Kv+9z0Sazf>)Vx6-#@Gf&sG6tz_?IpP8%ay z8cY6{47!Hm+yv3tH&9`XEv>~CA({o5*ssdd7HTr)ZQs^WalK3X7OweVX&E4|O&*%n zFmRJ2X`^S|h4`TSQk9SK@%u%bx>^=UCg{@y$tCizG=*;@Mv~6RLSrPXJAdb(38mnR zvydu{`>H4#J9PR(JHr$u!??K}(WOF1_M6Bo7{JCsH89h!%jjKbIkppT%$N!BGmZ9z zj>*w{Teo^kjo~TwutGB|T5L51$OY{YkJyfqevU&2bAiy?&PK?s^1PB}Heg9zu@0`{ zOfDd{@p=%t#QrF>REY=jhom@DQ~271efGTf)F&s#!GU~zsH>zK+|?O*I!{fIzr*)R zp6cT4#^zgr^2KW zF5oK%UF?rYhFT7#qfn}Vv+hW?FV)I%Hx4^^)a;>mU#xd5dbg!v(s>m(WBNZcT~kho z=bbk2%X(W&_B7D z<)-%hq}tmS0ZfMRw^Hv(8-P;!&`3Xiz!Rp_ub!5PVaK#p%w|JfCOFdDnl|tQC!=9O zWxPTEBz-j6)VhO6>TAkFQ=E`x#I(rIh{Un*TfAOpE}WB!T74mE^1W|~`1;dBcf|71 zW@O?YTE}|3`ogBqTPnR1@vxx%P~sfhih<ogQXg=DrQbY2Hf2p z=AFHh<&t5R-;s^V4{#}y&B@%T`DyVj!%h9^#VKt+N&rPwDMu{7wP0K~)w<=hho4?sZM<9fi3QW&p_HB6$9-j$4)m zOJ%%<^$NUgoxKk_BaDtj*Y>6pV^jBU{PEd>O0;B)cdmu@u59H@EARp62xRcxS=wHN z-ph0QXIy)#0q;pe1q7!$WAl=PI=1|`v)fh+5%I2MdgePNB8)HhawfX)W{KKGjO@?e z!ghCQjktkzy212HqS`H;+nmw5`bVoJ(Wiui6$9VM*T`^bfBHFQtYqPmOUJ3z!-YJjOcmOf0U zXX|9@_U~eGIrQl8|9__0jly7WZ1ME&UT@Lnv0<=0c104B)uNtKQ`TRxx;uh1zr@F$ z{lLc82m7Ayv3p?ey1^z~rx!hE(in(2CG-O*JTR(u_(=H%Lgg-U^YFSFPi+Kq{2$m?8ci*{Mm;aB_iyOV6qr- zWRO1p;r$D2Ma`(nRsg!=fotI84&1SX!%B&|`5D@Oh92}PFHUgv=_jF2?O_5&0PcFr zXICiii~+K?>rWOcjwC+zUUMiPz_H~y@)Af+Dj8#~_(H+)0TwaK)Y5rDv%3PO&KOzoq}xC;-s$arzhL|(FZ~Z`_}h+o$laad2snkr6_Ai<|S@+w0CqQ%-O23(U`%j!hLii*uX^66#Su zx9bboeO!57WQz}y4OA&bxNSW89;^AS1HR+<4PT=93sJ&{-%Vb4)@BkHBZ1Ny{gwx- zR_I?s&6laR?KN3Vk~a2Kon1|A^S)|rCkf>>4pCH?X9-%EfY=q9mCk%wh>7epU;@Jj z85=kE(v}J`P@^07PtZ3XZM@nK#WpCnpxWv z*v`(;F8ug)nq^7w@U7#A*C$LTH}>{)=A@*g@|ty>>-?6sSR{{8z}rlTm(t3#!n0L; z^d_`=)5Mb6{mF}tQc~yH!jGDo1;N$I!?e9(?^2dYwJfh?@=BHsD80V5Nu`{8D~F~V z(l4d(C2wW=C3=aK7R)h&xlM;i;k4bn&-mycRY^HNySuYYdsO5r8uHBL;3_o*&tkOF zbZ?FXx{_17!aqzFPO8sVy|JZ~dS|wb`h00pAUdZf zsDk3V8^j?c7-(L3NoMgv4Wv(sSwly<1ZOm(*ws`ecsZ*81Bpxq9e0v#Y+R&Kv3J2l z>A9Fbi_%HNu&XVIub^CzZ#oETpVw}b*sX7`oVZLsb`YD1y;U+CBqi+AFk}s|=rK)k zz4j@nWVuoyAl3KLb3R$ykJn2!pzOlM;YE(VdzycS2u1y!4EGbBJ;7EdBy!U89z3MN zk7YDU-8s)v(ex^=owb+qeCKNx!dwf-9x^K2kyk|ghfax)3tX&E4SP7QU}$ruAx`|o z7sg)Z_Vz-&c@ZueJ{l^~@_r7e^tWw=FCZIHd?%8FlE5*IHb!p z`De*QAI$&sz|k(?16mdQAYtEkKW>WvyX3VxY8g^$ww^5xRs(=#LvPs59{uVMJZ27_ zu&A!gNP)!jp}l&Mkx;L>*~?YRZR2WJW;I)0FH#Q_b{00jGxemWh#Nh8fU~Q=kw>K& zT2lRLKCgI~$qU~oQ!o(owwBdZnyXD?=#89H? z@re;RNHxAIN98}ekoZf^$L6V3m3>ODZwRaHM#|sxMpXaVqu4;@rW#RVQ?q9T_JD0S zZEDAoi6hbFW+eke4Yi>tjJg^)BIFgDMx1V17d>9T8E@y{6V#*&;ImnX)%Z#YlY)kI z{su}1V^u3w?x^_n_YtjVc-?HXPK)&6{EI z^c<&(AW7XFX@&TA$YQ#=`DS%lzCz{w73|_E1!-;F#YTmwpVshKHy`<|>%ZYJjJ{s5 zA8h{u1U5!u0Tt7)OR9Emzv<@rAV+>=G_%gWEoiVS(ZQ<`Qk7L$>sm?E5a;-ugHUV$X}F5BY0C_iX{!7& zb?`+5e~P&jBXgOmPKujU@!~CgZJuEZo|=CvPx(#ZIJ*_^9YmxazdRWJUQ@3!=emTqi`WdK3X^mh3x~6-($0*8+$U8CyT7ah zvw;;T#p$K+Q$VG0B6e-f`$ek#K{`s?51}F`pr&Tqq`uD;YY>!@ih}3wan9e)thXAi z9_JhTd)E9q6ax@olm3!EMmoA$d*RX6JCl!6?=-x8oA9dM?vjx=Z}H*PN$cg3o~yzw z&uEe*!c*2DFl8ZBL;klVXkd>cm+Az{7N08VHj+ZsW0>D53v#t8ZP7m8mKSVCCA_f( ztJ(NtF=NPPZ zd9SaNbT)%!%~`!V0{p;uY#wgK+Gkyx(NfG_PK-O=!wnukb3KgH}W{fKo5pQ3%Q?j!bFz_xSDjH5r4&go6Dtf4tPA0pTULB=|<-o?o{ zq>`qc2Wh9sd)^6Qnqs#7EFC_%ap-i;&QYlK7u66^=qS*Q=9BRt^a)2c%JuKh+ z{!edH%kiUBJ&bibUJi=()u+3*D{zKha>`jI#9^ub66uWh6!V^a)Wb0!CD=13UZo)S zn9VHX^Vbjo*jI<896y=esmaSR+gH|w%c-BzeBH>Ug8bV#vAridkJMJ`F)RA*>g$EP zM9P$_!VTv+wg0lZ;qRKN8c@EU)O#@PcGg(r0=6pD#FSD*R)gA}E%3Gv?OGf?-%|N~ zcX$5fS4>aYC4kQXojhhf#z!x+=K&c5YhjkMvTP!(d{9V5POq;XE)VHHm)y6MLn94y zG{E-ucTtUGBWW$8I>2nO@7FJkeG2b$d6UHtj@GbRAM z>063HOm(kkPpRx~?$dO)fLbzrfVAv2*a$286U+H#wD@ICJ>PWXa%+;aPDm%a@eiF5 z?j_bSvhdBr*}6P`Rmjm%UIElS1UQUj9Cmplf>A8_S)LEW2H>6kfx``wY4+P@2gHqx zIS?OSieNPR_rd;wT(vQHsR>-0?E z<@fGVQn-!i_(T&sFsr*ErS}yU&)yKo{x*8q);H6Byk$bO+SNAfioY2$$nBcQWaV~< zViE~2zy3^j`D2>ch3(Q@2y4ujMR&AB|zsFIH6Kn|Mdml+^ySgz3|M-GD zIpJ0Jc}AS_iYC@YhlSt{#dY_fDym^@1+fAx*Apsa&`ZPplo_YF#%gV~h7-?AgG8Sb zucFn{#LGs2dQR3^z}b%4IGkJraL~BBMuL~r{pINX)x-oEIYngpgL)`o|@v} z0mxH7w+7wp8^zER+Z@R}vO0#(@v$r)=)ZMJjgoJmMILhUaTdI%+0Gcg^-faF{&xbf zV>$5Ox`Ry;4vi=6<7+X*@@@eI`m34Av>)GDEvzhDIWns*=D&qoe1MXL!8H*iOYVTJ zuYQ81)mFIVZVfP%G^+i*FG7Fs?7-MJhsOFVpvAlh6@u_8Hm#Ql4wv(K#n}5RH$>a# z{jlP}Y#e7#p3eiYck&7Ylt&@Zf{t~#A=gDErMu|F(T`^mBahHrsFYkZ(h+MYVY75S}nYUyOy=xWQBR>a#nw5}{7Cp-VLBtFOM(-#ul#sSQm z#6sL?@d{ zdCn{6Q<}^nri3B-IF-X9%pr`HObjXKV^XFtN-XB^+xNG>_s4Fx*K5zibzP79-H*CP zNiVkf#s;9TGva+?QI?e^LQgk#Sx6k#8xds5XcR}=&xVW7if;eQDdo>#Ib~WO$-&q% zfdE;-eo>E1M`UNX7NARweAC)awhI!t)7V2IK}2evgjFWE@$rr%3JK{eDhO#OB^e3x zHJka^bEil>NexB2sTnyM2hGi%FX*VbjPmla;h8p^e}=c{8s$WF5Z+ur0bC{n15iG` zsNm~gqrUggQ=j9?x0T6WqxFPfRX#oL^UC5z{>)f3VO=*vOkPxq=*rq(qn zSEz-lMqmYP(9hHX7!)lcUa=1P!oHHWmi-q4htbC!My;Yxl`*#!p~+3Qx(XoU5cnxP!4ccqZHw-Q0tX!^v zzRudHrB*g=-EGkZ-a)0A4T*VV18`t;jP#NORlENl<1|-xy{2)j_jgeh*?))oQ?!*+ zjR#26@wVcLVANG!sHq|eNL07~bvVTVu<6>&z-=`Qo|Lamq{~H;H{k0o+q~qqqGcA!L$(S2% zqg{^A&UI2O)KqIqXJ7qyd~keV*(aG}((|0=cJg-r)==Q4)P$L#Qn1>~VyE?P##JSZ zzBRgwL?R6*u8)23A}p_{6)Qmq*YmTw`cd|T-}Og7I~E{{3)!y;yPSXO-I7ioTciaV zL&io=R(cA3>V>DOaQ4L4#Qurwih$x3bqeY+ZBf}<2rSbGOiHws-sl)9*(pmpUUXl9 zURBxuy^|E581Ep?x^(OxHvLYy=l%%OVf^n#wzF^!+tH1a`zQPHy0DXIYw$=#<~Pwh zvn|Q@>J-60BD?O?aVh2rPsJ4^0NlCR;s2->vH^nx_3P$s7iHvDS#wGUIruBp#dnvx z)<;r}FtTv|wZ?*W!ca^TR=L>gusvx$Bx=W}b??UiBH~7Pq+YLQY_DjaoLC$UMaY@v z`|z+<+DsQfpsxgY25)4i{>pUM?QiJcf~l^W&L+tGdrSKVSI9X#Yiw>riyb_; zu!pYS7SV3#Os+uXutcdritG@(Kbx#92Iir_1&Jrn-{|T+HY#VR)6TF6pHdsn^zdu! zRQ~?poyWv_3FM+K;On*y8>jc-T$>)|N6f0D0(KhOYc0&Sw7E)_6eZGQ$op$XYoSJR;&kE>l=xCl^p4&m-<78W2Pb8@Y;9Kh% zw2|uluAuAnGEz@j!Q}_3VVP%EjS$7wZL3I>w7bFwodQj;uNC8Hi!I&r-qcV* zz7jW@^-NJ97+l;SEU{eLV~b@fUka$m+_ozP;7WX&LMqmr-IW6#bR0Tcm;1^1Z2M(^w5c(m zTJ@krM9WPPVyJ`+Oz7h9)?`iW=}ry085O9%WI_;jyU$3mCf>QWXY;@1Pwi;FzLhCu ztBgbn=W@b5%hpL+o~^d2JjwP|s$4d_TPlUAlA9cO*3#*zt#dBGiwrVN9)JtAsrOp~ z!Hv|SUu|unxloFW>hNSlrf~d%UD0JHcUx0{GoNaa*_8V4Eo(Oh;Zw5F&_l3vRp?Hdzk#J1i!LJw=&bRX;y=VNJuP=^# zR{oP2Wen8BpcOqYCgrkBZ>b1kK2q_VoV<{xL=Q{=He1A|6HibFLi3XrSimnJ=*#2) z;_MtXI=AWa<@2w(*3UR2b4tc{0z!`7CMe4SN3UoLhmIS ztH{h+$k5I&T}n)zi!KcU&MzW=UL1|+pIS<{<}L0N0Iv3ja!r?fbO{V5wo?DSO@xqF zHaE4Sd^+lC8^7~in#Fyk=$+{LsZ;?_W^(@lzw$RWUTnzf)m+G*S=RT@XC!b~W71Fx zNFyEU0`z&VjLwrv@v7$-Jb1`Y+5qku&gY%t81h9M0;8ro7{9{#8%%_?b!aS9%jn>?RYPKbR>SAyytPvO@C z-$Eo>C)>-WO5~|#5#!tldZ9O5>;b}u(6PbuLhLJ@S<_IP-uOiw&5Dz>)gDA^m)?;? zPt+rqP+H1eIaab&cD_YlsJaRBHo|qF^2z4$o0z-_Sn$I82HMdx)E@KEcc8e}Ji`Yi zL3!h|3xKnj!FSJrgQt#MBTfGK-rMk6QsIsi07pD}s48gPXJ$BI%)+haDcQDQ9VX5C zhz_#+)W1?MviMoSRC4#y)|LrI#xvNG&v;`+LHVEN0eULQ$PR;424~r&^GXGQEN%Xq zy_t7C;aQ~H15r@aX%L%To&RIt1ex497~{`jC?ZXMo~Y5*@(fQD0{`X*VEMzW74Qn2 zppGaK*gZr-T9M4<&Uo=^6f8juB%GESRssutWK&k7ep251u#le#kb+LlI{tn8I&5e@ zc<0W1DNZ|x%5v3N+ws;6FMHUwtNNr69&lD+c}f0vlw`eIf&ZI$gi(523E{y6PlW6f z0R4Nsb%FjI?14jh0zl4pAm9~DNeB=#?(*G_C%a8Jq z@?NxlGw^ynAd5ho01S=aQU6XiC``kru<#ep^<E?1_1lO^-IVE-bi$vAd44s>(t-p$bD+a#I(@)mgYJblk`jo(J&xWr zpI`VQV`S)G^^~RghNXK}s-SZeAM?Ck=T3?2`g{m?4CL#}YP{zn&uYj+Senkxy8MW1 zzLDsAH~WY|oRj6EJcYY93zOnEvF6Gu7*+jtL8!o}=1UHlb2UT0m|fktp7iD@brWgu zn47lv{j=*A6(WQG))U0S6++BPeZQsz}TKj6Od1Oq14+Yq?b| z`K{Hv&;FNPF?WnKEfC6<1! zHcH#h=0zi!-Ul5z$9tBLU`uqAbE30=TJv};h(|zoQIh&(PV+5S_hrMMi|wNA zoM~U9Mft6P8`(FFCKD1)bm4sLhBbY{^9lIL zi1F2cnhz1KU+hc+1ITCsD_q3<%V=X1wo&R8vr?8JkPL>X%TlAd0vLHjO0c|n@7n+J z?iq8GwUTxAb89EakawTiZac0P(z(HCa-$JTsbqk;{I!phx)SR;YGW41jLw?qp}P($ z7)Hb&N=&lls=~sHq*rBgQhR@Ker%c&bT3`SkCqFRu4vi`&qrnv^8&pr+$c`wx$AFX zB2@>w8+v+eqFqb3uq@TEy?OXoEJzr_@BBp&5E$nkp!gYC?4{kH^?s@wyDh|B{2oZm zZ)^Qgy|ONt3;6N&^|RkM&Vs|s?kNF;#x_xT5YEUN`WOwa7rLd3hljYQV6`IDJbyMzOSBUTA#&>7jpvVdhSo}-@fkkeY=m-7VabrG=<_p1(wa(wumAe z2i$vp#nAinpcLAr*^S(1ajY1dK2ElishOM{`I4X)d0LGFkPdwqF;fKO1@f7~Vfi4C zhpa#t`yBgDFJ^YOZvIdFpKOZ2Ett8**Ej1G^*lTK`y4pC8w+E;0pyN`svpE~1C@Lz{sL(oDDq(~q;*FUB zBm?>@JE~P~PiUSKaInAWA|`8L2V%T=49I;ZlO-y3<&(p&&)nyHA?)enaH%IP`UvGz ze5#XuWZ@uH4VuE@(x}glULNDfIuU?) zMW;$%ek<7Bv>{R1c=cXpDiKjbP;GeE?nBi_|3&!O-)elZa+tuO2b5x6;m!_7QKu$) zjD4}ZW^y*S-1BlmLtEpsTqVz9&bj$-J~{hi)YF@+o z7>mCEL&Yk9yD!$?`1n^@XYnO4DdTq6dhJ|`D4lNZXg@CVY8<%qJZ-xGIWp;qv8@X< zkd&&Jj+l_f;k+0OA^G<^e zkMv^=XEUIeyhA`VB+95|#XbLd==@Z2hi^OTUCI6X71)yQq@#9{8?Llg2kVpvUDfH= z&v&?`5WK50pi=V~Zhl2Vm*U-5ZzAy9>S6n1sPx6~b)_jCdg2ns(F}}()DnIAb`Jw7 z3gm>VkXqXH{M*BlCUsS>HR;TNRsl7c0%wKPK%esRUk;P6UFz5`@HzB{Gr|*|Si+@h zc2}0d&LC9mV_w=87{nUhy5YF!pw#S_a+7{jI~gkzqScTC-T@#!%cm9w3|qC%caI-L z>JI)6ZxD{|mJEGKSl^-jd5{NocdsJuL@!nIMV%ZTXqvo4I@kGn;xD8G>78IW5%ZU` zshls6XKmQ}KA(XgTd`~Y#HCT@z7brh>CxlG|2g=WEwAsJW<67QB-K4TR@q{ATx(TAi-fd0Sf zejkIR#MAM6zb&?#yTMZyN>w#x`t`&NfV5!m+8txMf_e1821cJ#!fxqUK9uuSY&_!g z@92~3G0f*Y!(Pg0XVe)3$(0$E=Ix7~b+*+rqocR+I7XIK2 z?bWMV;0*G8FrntcjPHBkul?Vd53NYB2XMu2KWlqLmn9?~kZa9m>AJdQdXhP9ODF#x z;+egBn`h?B?!>xqvOXg_(b|ji^Iwb{E3q1ID?p!t5=4!5uX$50XFa{Xiql=SEcf#K z?EV?xC=LDhWhe1AtE`YbbpD8zQR(r^TK3ZsHZ>c(U=7Q}j)~Ebu`xmWu}- zSGf*g!{OueTWL3`X7;Fo39K-WX+hcLET>NgK0Z0rGZ8WkA_Ke^gXp z+@SpO`-IfE-?wBTV2`25R~K^~HTX5Z+{}}_2ap2KGl-{lDwc8qc%&K152DSgQiwzB z0=pX$mu?YWN}L4<*t^%r5`+f2UN;OZ{aOja#(g*J`$&dt4@$J0u57+1>;Z-&7z6;y zgw;ZYNY$j9VKDAr0ER}CwW%F6!QTAt&aqE8`FXT){+P;uwX*$(phqf(SYnHaM|GI9 zjBzx^3G{<6?MZ1anl0p>ZA$*z8X905qFe}j8tC&bOtO0`YmYTYKDiScQgRt0ufnp8SoeQ2bG^AZ4L z3KvLj-0;y9K-E+|C#PWOx)kw*r>D}NeM-3W4HWSDr!U0T+@PGex^Rl`S-I&wovqPP z6=i19{o$!UjTve%sh<_Wa&fY%f{@^R(I;}vm#a)1_1R_A_}DirM#SGMn<Kpw_fOtDos;wLJ${Vu~Nglfxb+rZWtmTXj6YOYuaphL!DltwG! z>y7d&0H!Bnovv)lzxlq~rDkh~yG*v9)m4&{f_eStnTLGR?hgiwxGRWxlzK>@AYZ~u zlc(bt$;i6=Z+t19Mj`5{gj}%3xtg~o7-`k?_Rdb}@}?AbdZ}WHiEK(yR=e{~-AKL>eVe*I+4$+f3=ur$Qp$^1=6 zkQnT?Z*{6uNOhpRA-%y34h;XRrN)N7(<`GbxB6%W47>fp-4MWwVrOGlkp1S8*#^6$ z46&;cGRkx3cczcPYkvqk)Dwv^K}P!CBSeRuGRC<|^ME`@*H_75*Y!ha#f_XBT;sCK zNAuH&xUnW1VTq3^$a`D#y}C;jBaO>s+&ZnPisTe*rN8P zhXI~eCP4Xt%J@{_QxGB&?&I}ex)Xe!x}es!N22#<*LstiF1n`bkQY%EcZI^+EPUnd zxq86~Gnb3>We(q#E;Z1+uF6pR5SM{Jmo@z0<7A7Ld}%4`*Xr?EJ}f%@kLnz@WP4)k z`L2&Y)nUe4%~~%?au^n8qs&!oGX}+v)+ssIe|vLVMd$HS&uaX$G+FPO-c$+Gs1dCK zRHL*vTmpxN6l2-HZ9Ejylh_LDI;vE0(>M(>09JzjTbM$B2&z)L;Pv-sWgS+^Y-79% zKT{;c`jR}P)nP<|3j|eTTmHSrBv}WmFD}ISz82=z$xY|AomBif7I$lWLDmGulW+Z+gXRhj%cPMFu~{9+CI0dU!5#t>@Z)d zU8J#sj*GZ-xQvu^`YQ%0NUFe)*C;|%0K5sg-#S~EkLOuu&ZV&w8AAP7O%cc|a?#%Y zZmJS(|FTi_EwJIM+@GRS(?#sn!yT(iv^cHVm1w`K3>}@WapRPs{GOo6abUj=>rsi4 zSPqqRQjXiwf_AkBk61ns*ZTZD|T+dk_P6}A)nWej4( zuz^-#xbDc2hm8JZ8grj;v5Y|*)jK&ld4imqV_ie_99Y8!%@Y~_cokYB$7jtHRt_*> z{5S_tRn9VxSPgTTbo&-rm)6dbn(5Vw@JV)?7^4W-YM|63N|E5TY=_JYRlfsKh6rk^ z$m<3xAl_Zplc3bB9{Rul3lU!hICtg(dT_?GBb2xlnFp62GfmgiA37Yg=o9!w*(f&o zDzH;w0FG(>HY^6Z#hDbxv^HoKK0~zo@vrG?4x_F9s7mpDy?* zJ$zUlU9%B(qYo+QYvTcdb(Y@ZyCpjjF(`KCLacR$nX;KrPi#&FbVy!&>)}uOceZ4Z zI=3Nbx%KJZ?dhSbxe<)TxH}V*XCM{>$Uz^ssofu>`K(m%w;dWoK6YG0Ky!HhOZQso z8z)Gk(2se;y1R0R_Quy>GT!z+xzJe2_Z$KW8bPO$#RMyezs}j&HOnqyS0x)HKHs*jvm7yc)KudUzg%%cy$NZY>&Kc+&mL^ zs;~TQ9A*&lCOP_jU~c2&5tDnA$)gY86X+8bgt)*X&dmYr6mvnguYa`CkGlY)6ce2@ zvLkMypB@LXU^*Pq<(!VFo|nP^qpDU`)2Y|j@4<{WL`7dHxSJc@rb$3eAJXLD+yBD~i!>k8xnSj)$a4NDvrE}HqH=BHl{r++ z%X^jgAee3F6!NB>L};kmy_GDU8J*J6Y-%kpe&sE#>;36vBTu6~&9q`kN)1_}w{J*9 zzt-%Eea35|>qADofsk4SLx;rwgYX<8g+xicQ00&n5H!`FZqmG@FMFBI&{IcpP|aZp z@72tzc7!hBYCAca6t902Un7JZqPD(}@03gZ(JkNX-}E~n1;r^7Tak7Ua=qX8Y<9A_ zV%yY02|l?*#Y|-@(*<6{thU1wG${=d@fibF-v!4e=liexcL8ruXi-m9?9%$;n~hCR zM?kV_>7@RDsT`||3&W|7j<{TGJhEMZBY70Mz##?Zk;13C9$vdXU3omf58m4*=4Ytd z7=D)c=KbVVK8t$03O1;v#e^WLIt$952#I%sdM4fF9X=3b+#%q$_N{ktV0#eBAsI;2 zF;lK;;bceTVEM-!6gfy{?o34Y%KcT5E2PP0b%1R0bmR`wEkg&AFyWeLaQ+Dp1msCq z>n0YxV(iS0eqV`KAxOEyWe-Hip{`4<*U5cNkdBjyqM+xA^?{q%$(*bItuHL(PdttJsmekbj z6Yu>nXRi@mN{B|MAlSc#&@F@BO86VHjLcBog>I4#elbSNa@rUUbICrdgy+Z`UXXgu zGIaZ`D41Jb*8E_km|>+mH&ejwAO3;5BsPJf&s(D7C7k1lG znk9@8J1X5C%qnxkv=&D~B`d3%6n(RyQg0?@f_9n6p|Grf2mHnPS1tm=sUKN; zCCDaf2qDj%!ar{ND;)5(2(_s9GOq4Y9mFstb)S{P@-!vu$Q$U}a~ZZt*$g=X2(6Sc zU;x#CLV<=h+RqudlqR@V6i_N8{4j$5G%BQQ2 z6wl2!6-(;A>D|-NcuZ*v=5%sJOK8$z-B;e8 z;Q6c?S<3G-N<*hsix~IpWt}t%f2_2H5?d|bxw*9}snxWYX#LXB5jRr+u;IxTKfjOU zr|6T@zvKJB?7XdT_&nJJcv_AH*4CZ^R59QK-qZ53XZ!3vbi59* z!my)@tzlT~RID*vXJpoFOXhut|J$62Ve~Dk%u^?v7~ZUg+4>%$#EG-eBbW|S_G^9=xW<^5wKD7XrQ$ZK z(;rG>m9|RzJ|u+VsCUg25aY-zL|KfoGde2(2nKsREi|vO00D@KHck%xE(oEHr#_36 zfr0HiBXI;G^v{Llg+M~se8R~6t*gVX+o7Dx?OW=X1b|SPl(d+7BBZVRb@#nEDi}KH zxw;a)vB-=(+Y`i%_7HG4jAlQSqs~%}o*P_mW|ES^f6Y)^StdBU9PCE-7Hip%^2VI< zC8Xk5#&$j^{{F4ItK!AAJUFkv>S-CE9o_n4+o^ZwVG9pHsj$ypLCHDJe-Z_PMS|s} zQ__le!T~9-F8|u2vw5OY!5X5FXKe>BAw5v4!?Q>EBLdT)_d$k`qQo+jN5QW1cqZK>&QJd^>)*88l- zYiCTto2C<7!5%w5hmKRy^2@PRIlA=MgP64*{&lTh`xXG{JQoxFW=V>V>15Qq~W0D#`0-d z00t=UZaD4Rty32Pd+0;TpFm26N>&X%y6DWA-s13b=HO6FRB}o8vd2gO{wVf|Kgz`O zwj4q(*26>NtyjktpWxt|(|gK@mLl@#);e=^>-|*QQsOOaACSdr59jzqp|l|+8SbkU zt(>cSlV(+YR52dwj9(YRopv;K1_lO{53m@Yd{OL;;9+QslJGJ_6eG5FyD+C*L~|h> zYyX)a$Cx|^5N)4~6dz{kzi7L=a!MATw&r94byW9vj*-5UmGDWjQNA41uXiKiuT7xV ztc|&>!h?29(Ye(GEb}Wa% z&hP0B4IyE$0QcGa@nL#zPJ=hrcIB@}Y%(~RvIZit1IWB|B%S;{k)3j_Ke22(MEimpl zCkwSBbk^t6c$vuD#;L)oyy18RAZq&S^wi{O1ABNL&Ri4D3%KN7LtFX%8X5J>Ww%Q8 zwsO_vY<4+y?&zg3uD^sXhP9tIKKXTbcK_dIPOSEPuuIw3E0EY8@K0???7gLT2;MQ1y7_$QL!SUd!N*Ks^MoCW2?4r&$dcrIKkm;jAETyct@t(^9aaOl8r$%X`tdjfW zt3fydM|g((n`)+dVpJ#%&rlAyL{@iy?AWcB^mlYCQqRl9A5DnchnM#j5MNF@R7!#P zGGF0g1&p>(Olk)UrQXB3Z0mE%5*}BYX}0LHV@1t1B|?`L^%6sKqC96O3orm*HkucIcb zTE!>rD#c!pN%?XSIue`Fe&8s#o*--v#c7?5YGEM-S3;TxEO&@G*|ylpebt@vOXB@X z%Nb>Hy0;`x_Tmzf{QGsmhMXWMXm`;q?S69iDXHm^DFmm8CTof(=c3#x@{z5O0et%4 ze|HuE?tIC6Ls}3GwWN++Xg-(B)NG&*PWCoP?nyGIV~Yf3-<>c}{sTl1C9S%AiKw^% z*7=;T;>;{JR1uNcvRvEURi~&%iPRDsKj~KZL7;*ajT>Ha`cj7fW=-_-xe;&pf;FTc z;?3(UW+^48^q?=-z)k*O`RQ$woyQmpcMoCkG}TpJid$CSFjip@CkpaMQ9({aZh*mr zwD6qA8gu4_7oX2Qd8c{K8<6}esLW2m9>vwCX$%*qbx?XcCC>sn@uXW45EZ=<*E3y* z`VHV*uSd*5AljtQ_V0bH-2y_6le$e@6_@#9zF;E835fY{DS~3fmX0N(v#vsvKF3L- zH?RliVcHNSvfz_|B-37ME+>N8beah6(C&{A@pwj+`ZgJOWWTR(%&M+c<=GZvTVvJE zG2GuR>_)U9{Hh&>9KH%qxCy*cZEk!;^k0TDNmoV!0Q0jSUE;Q!jen!OJJ*R!S~|cH z6{js>s|X4pn4kzk%9~T8h?BrIUUPyyF@(wo*pyzs8nJO}PY&;NF7>y2EKz+|c;dUpL)_f*`!0-<;} ztGzNwp8BdhMP$o(m#N_>Yj zC3-v*)ST0!HIUbk2|c_ozu3RHa>LH&eQy3JG!C92gmB$SJ)UFYE)u;(>_1|ml*z~4 z{3x7alb^Kn+pd!XwsbgXA0^!w(*!j>1zao-H*TI_>i01iXO-0f2-$fzdEVkIyB5`E zzpj!&gfllyCGBj`AJHSvE8UNhoge==_Pp}m+<61+{77xNn#l}Oo?F_c zf)t3Pgp-|p#@2Sy;nvA!P7-sWx_A_>kEQLb$GXT-&4fbiEHLrCC@dRk1rEj-;#K}nK< zUUXX%sbe&htt6_At!R%p1aMp+%NW?F;&bg%^#c>eZI^#Y-9!#sf3U+Ai+R}UNuw6?!jJc*N4V{0TnY*7oZv&<~ocgb{|jhT#94S=&p z)TJS$y_Gj_C<KZKO4QMdTK$!n zsC%+=LP|PL*PUu7B_^^oIIqWYjs6~5VyiBK-ytC$!y%}|!@acP;SLZ_`cv6l43Bm2 zfZC-q_P-mU-1;J5=an5A(Su5yIEoPo*vd(;>W1z7jvlq}oG3pc^|wF!abpP^cH%!= zecJ9SB^}X4jkh$kWzCrwDkxGOn)z5HZ!@omw`*7q%yXVh;E-OX2) z=XVnqj$B2I%<4iF(@gTpzxds>P1=yL5{T<_=?pRvl^XbQqj7Dmt>fHhij&&P{w{i? z`1(l98Q~w0GXc5qL0QzWGIa5*A7Fa`gFvSY{7obzOxl14h2*zYRlR3v8#~%b(%o&h z4){Q33fv%Y)itmjd5jjZq*5CuiH4$3$_^NssJT-1&fyWGXCW$$^Ly7;@q?%7@CSvC z9A8OWK3qJ{KFnXgr|q`0F>T#-#63&91P{!Cc`Y?Py-ot*>WshU`_~}29Xa{r*$rBY zBup((%GdoC(_Dpg;X**xP|to{r3@QTLfXg~wF-UtMis)u=zGdJ7_BC|tkPc_&HayA z^k!+2sT)S>7PP4x%EpH-8_2%Ft?eyjFQb&Pm+f=$KeyqMG7-|j!huafe}&V}AmSdkdu}*f0D~>l|bO+yHBP&j<5Mj;ApE!0T?P5uTq)?1gmH=xvHBTxzvt zo2oOvu*FQcY)8O3OPh8O7XYG*TgP3ceGQh_e6j>U>_KrG7D2^eS&EmZ(x8@A7gE|M zxuC~!^;Fv;yOFHAB|I2Ua@*4{Oy?vcED9S}i$X*>5xH1f&}SWT!v9QS|NZ%Unqxr$ zPS$y9SXtl^TyZeWlKlo`nPGSyScomJ;(84=m=2z!V&DhuHjn7;KcTCy?w_NNDdFDO zxuU?A*k4afb#*(y(qxZ!JG_ExCxT=9Csbr@6#)F(P1&#PJpMYu^GpjbY@hEuZWmkB zx)qATYi9D^W)C4Lt95Agt*_;$<2chLz-Nkm06Z%sj^1HF_-GXPH!05Bzb|Vo0W=m~ zN*o~H{gb$VGxAD6Sw?!hkWaPSN6G?y(OP_+~pX#r# zCSBAwS4gJTGEdm?63P02S46D4pX`d`CrQL2iwk@?&ABA{46@9Y2a%F{$3YHsZeRYcr&Wx3bm z)3v-&>_H}S-*gW&EN*(*5CC2--3+SiwB(1 zR5}yZz$CpU+afJ{5%V`c&m!#;7NaEFUa9gyR0UNH)XMWFlXsYU$18fr$6Fo!pGd(RP4WlPk%!L0ZuhhK$c5gDl#Fd!$8QG)DJj&B)bI;z^$jY|TRYin>zTole1#PUSq@xMD68Tz;?p`w-3}Wa z2wfsQr_8x5GSOMZZbXBdDJg3!9jirOJ`;h>h}(o(t>=z&|KETNp~Tb+uiD_upAkjg zsM^&39f-)gXjIH7MA5TeVT1OXfCB8xr1zDn=Xk<6ic#}27at^JS}N0?SSt^`VX!vq zFUrVZ!bQ9oDpub2^2gOmp06q1@&b=4DV>RjHdKr3G})M57Z%6c!^8LyAuFKTB%vhd ztd!wrqH#}YE8P~UX~pIErT(mNY*){yCi$W}?KL_K7NomudO-&VaN_+5X`EC`&iRjqzWoqc8@9t1~Sb3h4GPuv)&(?OG z5eDOwhDBGy$-IAny|GZ65S#D5KW%|||8A|%*|tK*I@&Cu@~Tj5KLyF<=~@j5;58}ntOWu^l?pKwOJeE5z=CN=r~W2l4PhzTKW zJS`_?sSQ7cG&(Dkn7OgA*wx}uk{<{(?dNdypikJ`#xyD#E463 z3dz&_9<;3UVwPiyNur1j`DzvAE7m{IcdqEn2g2Hp_S7@CYj`n099)wU?TV%{Z&)eY znw#^Qo8UfYGfZLtCo7U=`r}Mdh9#UD(NYUxO9poR{O`A(GDA9v;2&i5kP|YNg6BzA zS-J!84C(6LTIciwF)CcCg)hn_WBdnxV$v7$ zo#c~iosG#c67}~jgk%jz`qtkbK2s{Uz0bc9Wx^WnCroV7eX&3umb{3uW(POZnwmvn zc(Fgj#fNq1>!|Q^Kis4oPG{=i7N8+_<*irFDlXaDRA;uw~!K)c$? z`L&VzJ(!zsoP}%c;#Bt}qSbl&H|geIo&|@u6aasIc=^QETuVUwcZ0hL=*fq{Yu>|shmy5l*BAw9 z(&05}Lf{a~vpL;OKz$M6Tb*Tbe$N`p{p8hZGH~#&zB%VG1FG*&5gQrlsnX6%+b8#K z`&1*wKbr;9->hP(KADa!c@`T9fbZgMCZKXkqJ}&S{N|>RGVrfr03c(q^th{c5bN7> zXl;RM-ydQm$b1X=+}U}Qp_`#9xHSO!ZdI5TXp?%x6^i-o@|+5Zbu3#cs(7ug?F%wo zn_JmDnhQmZ{NRQg{)|8}I^&IW}+mzv)XaC~cv-%6gujJ#V7EeI3jr; zoY5z~5PZn0jPFo#Sg4(oJr+YgR^KitHJ`AOH!8cswx+ zN^fxGk`CI7qyDd|b;lAukM0-U`QuotWO204%f~|W8S9fHBxt{V=~MS*6vre1)`57m z^!GENe98X*5_G0$XWd|IlSr}5h_T-uw)VM|Qfl6n?o=B4i)L^$d+I5k8f$psLXzjS z&H5E+NB$*g1rbHMGate*6yHw+&H6ItWOU>%S%h4?z`n`9tbHI<=LZ9asNiB zv%jXAb2>(LexLlC3LOw#E|oTU`-`z6A;j@oE;X4apJXoe+H#HlKB5R>BQst+mo!txG6GJg&!e+` z4k13gqYj@&I9UrygCLPAVazqwYWr2fOF48`s(L|mQN53UsV;|@D^pI*)hx&%x(Mi8 z=f5Km-tZ=2J{e#EF}09bS&!+sRDFf7|IZm~s*GB)eMbH{A#Kk~1H&bnI8UmFZsFog_ULT#@irWn}mje8!u*xR(SLk zpL}g?B05y=F|z~GabiYQ7atq-!H0PwW}19FhLl=bS8fn>K=0zci(&v60Rh3@a-r`D z*#G^-Jb%uHfV55HZKIZeQViiZ<(&T(Xk%jH;rq{_|M+O<6Qd;`TW$}(&J~lbq)`!)BuF%ZbC39fw|=bIgn)K zBOwy{pZReszRqJ3dcubdPuoCCjjUKvH3zZ)$?t~;Mr^DXC#QEsIIdchJPn=k?+&Jcpl09!BbW7s$O9HQ_M| zI!N4s44Q8SwgdrF=Igh=^=4qXJ1YL)nasV_=2!HVA(s&x18D0In-EUyr5L?Id9F-@d3 z-PFqM2=LNkF_jXLvNy~IP`^4P?pTJiawO)`L6^vV<}Yjn$f%;!eHhEEozZkZF6c#= zXxpt9Vnl=cq?Tn@1+%RC|7~oURkfJ`g5p4vyv_Gx^2S>D!=WPI2UoOtSYyKzUYSNZ z(YsSSQz}_u9T$9#AIX~8R2e+BIS_Hf2&wu8S+DEqnP6(lzp_T>F0HA&nF3Sh9dp1s2z@i%Xe1o=CC$%{mn(iT&W;aS0|0aoryuNRtR;A-iFqf{{DZcK%j%18 zlBME0w<3-ng^EpXTv!V zGDT{6XVVe2~W{r!L{`+)+Xai9LE_~4lc$Pa>#S>scZ8StAuL3 z)=HC|wPn{s56|kq&KnDgAr^1OD_jq}#n*i6s-;cMLA3JJF8bun^2V@&aXpi3%@!CW zfP%wqb^MKvN12u3{Q^m$;!!FunRLeT-y+X{%`KJ2v)gv!9<67N0v;(k_cnazau4uX z4xZwO{R%4_=+?btNaUPG81sI9(eXLjdIPRXOiJexHR6Bcrw`d=E{ORV} z#>Upx15~Y^WGfELy=|eolmMuRtL~_+Q#a|e)@iM%b3s2I<@xFYj>i@;^k0&C^Da#+ zZP2NVANfnG)Tl5gv~u+ML}Syw*%$>T7k5>hmkdtM(8FqbCgnu54kBg9>%O}*14Zfu zwA|vEJ~DN%P}Lk^%ss3|tW4P)nHPiM?;JTZIyWDDrA-(`Vpp&I)sl_Pm$>E4o$Rvr(;>oeCt$jpU7vp=uR zn7Q2VTGe=FKP}F(JfCDO@0o8>v{d0QB`#9(M4G!2FS@}$%)D311JiWfaB$#g@OQnYWk*WYKXpCy_rL~z=;Sei4!?1L9@e1 zn8|{EHiTdlCBXCI9#_V~>T@jfm!m;eX9$t@5`w{5O8!C(>upfKT0LtWijN}ZUMfiJ zP_g8jT;cYNiN`4@dYAZ@W-|N)g97v#QnmBBsCw)e0Y$3!htJ=hxetcCyeS-scR-)G z%>hz$=8}Nk*ERz0YGo0@C?kNriL!oV+^1AkATUDyK=jB9K5)NIYxUW=DJ*~0mR!gv zelD~wOgY&h*@#(ml|3)&RQiMzMn?w2hHk;Qm~(j3(}`mhd_LD z3sW_Y(n4y=Wnr8aK;*eH_;muBu!W%oX9iums){U>Ayru&X#%NGBy2b|qx&=~K^$p3}#+fUI+{P=$OY(Ed21C}MqQosfiPj&$p#-@aFd{#(KxZlCYr(C2}`Z0$CNuro1>=^UBi z6t1BstX%||2qYh<`c_axOc?E$&ssbIL$GjEZ%zQK*4b;My<$*h& zNXXIeHeU=%+w7?Q(8u8l6Ki-Cwij!fNu0ivLYd7!=j&*yv4ESZe`QzTa7q3^#t*wq zun|(rN0CYnT#DV_-S(wr;_rnuJ2DtaH!PppdfUC0)e5dLkZ5SR<4IpAZK>=#uV%=+ z{+z>9H&bMVZZ6Sf_j)_!a$p)F*|Q4>13XAhQnw-Jf-~S*_rF#4c1!S1&@xof3`78} z5b%1q1)^**C*lRqmW5D09f{H|pba2}BW>WeSkJH4|9_C<=e-acCuv2l0l776ZvA8=A71ribfumXcJFsX*@_QwvEbN85&w3gA=m${eb{ zJwBnF>n!Uq*}_Twm6BmSB`O1*!pv&Al3Q`k(MFd5M`NFuG6_ zKGxQjfUDUkGePj71m;i3;E8#{dBR%2mH2K5L?y0U4fb4JW%_p}+48P4WaZ3Q%TMaK zQeIcHklsmO^@onb81XjOsFz;w&%F8A+iEEwNVfVcGih=&2+%Po%Xu{OzSO*#F)a7e z!Xf$(&jykBZ=AU9Js@rIZarqc#4~X^BA&a|b;B1c{40L{X-3Og=*!9n8>GbjD0765 zk0v02^THi@D{=oP=P;oz{DpiG>)R587t2d3?b};rg|haxcX!du$6X9E7oY~YB9>*e zoJ(GQk_EZgGVM6i?frlv1#QjyByoIkg;&5oN#dnSPs==I>+f$B)({ zf{WxsGDA0nlfo3x&V$!|=c;~h?b`tdzax%RQ!IYGL*@5QA8kc_%5y2Z5pzz7Xgt$d z$C9hHmmo?mFc>`O8mGY>JRm^EWP9gVmNwTEe~OY=+}oq8NPs7O_|CljF~jEaiH~^6 zpy&fPqQoP0D1;S7$iOkq!G2su5_$3n!iN%4e+Hi-EDUMLYnlH3e7eFF@ZWsfTYReX zq&8F%7=M`qhL~ME1T#m79{}*#%9u+n6P>tO`FEtl5_QOAVY*~>d3_#8TpTugbvxtZ zo_nE6@W&zn+u7H&_1D9t7X>0O6TJi^?7!(WGYZbQEw6LMgoGEzh-D{xMS$kZ1zYBS z07EkG^!aToAW(^F?<^o}Q8C-zB_C#ti?(ei^={wozMqWxy)zrGlzL_qf@=A*_T2o_ zf%F~$t(I7TM4-`s!EEOgjnT;qS$HCP(_mj6D&*vh%YR)PtD=S!QuR81IUQpO@n7Wj z!n<26?Num3J4cp!AL|G>huB&WAAgnq96@6i9DKRV$L*Q3i_Y=~CyzEWuAV@-|fB=F4oSF|H76VpOepn44 z&Fyo0#!;k|`IxoP^f+3J;l#tNECC>8ly*mukRS94R6i{s5RFai*MWH@_U6BiC)X^T zBodc2%E{ZZk*6J|6#`FKY_~Yj`f5ib$MjA}AEWUS)%<+$Bmi`#AhIHEUr_U-OOEG@ z#3=Dg45Roj70EVJ6yelzo|J6{LUvBaF9zwWEN>O)aoE$8Bnk(vlIa%k|QWjCN>R-M<}w_VxQ>MgfA&qS@?%F%fKX_o z@zW@=erX7Rd&vu9kySQ(q)Aw<92lL!9XT1Xef_Es^u4PzVEQ^)_E0(WXg`gVP?*2l(Lg_KRi(l9Nqy605%B^;|>1~PVF81t6 zv>aRt=apRn*AYlpi=1ZT|6Aco1bt4DS0{*nawp6IHeQYjyhx}Y4=b}!Q zgV^8aX=$3)$_wueT@{1IK+(-nkikDh1sn!xcRXYH&HRjRMy|J~r|Dcz(fv5y|Cr6c z@xPR*M+Q*o;P*>*vu2yhf#Y0uNgnS|{EYXmsq%Swht!l;#br+D zDDMPoe9pssi&pUyjqm{jA&7sG*e;ggzWMj2D*OtSgbp z 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%0D`8K;GZCz(HfV=e>bUlAip}Jv4 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 z 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

n`;AU;~FT&&t~e| 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�X-3yP)aJPpOjQUm=OO8L_0k{^>8V7QRWn}drCdd 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

oQ8r2$MG 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

s%{W8i!&hBl5!9Eu(H(7cbygxUk9FXE*c$ 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 literal 0 HcmV?d00001 diff --git a/include/KHR/khrplatform.h b/include/KHR/khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/include/KHR/khrplatform.h @@ -0,0 +1,311 @@ +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2018 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are 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 Materials. +** +** THE MATERIALS ARE 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 +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. + * + * The master copy of khrplatform.h is maintained in the Khronos EGL + * Registry repository at https://github.com/KhronosGroup/EGL-Registry + * The last semantic modification to khrplatform.h was at commit ID: + * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 + * + * Adopters may modify this file to suit their platform. Adopters are + * encouraged to submit platform specific modifications to the Khronos + * group so that they can be included in future versions of this file. + * Please submit changes by filing pull requests or issues on + * the EGL Registry repository linked above. + * + * + * See the Implementer's Guidelines for information about where this file + * should be located on your system and for more details of its use: + * http://www.khronos.org/registry/implementers_guide.pdf + * + * This file should be included as + * #include + * by Khronos client API header files that use its types and defines. + * + * The types in khrplatform.h should only be used to define API-specific types. + * + * Types defined in khrplatform.h: + * khronos_int8_t signed 8 bit + * khronos_uint8_t unsigned 8 bit + * khronos_int16_t signed 16 bit + * khronos_uint16_t unsigned 16 bit + * khronos_int32_t signed 32 bit + * khronos_uint32_t unsigned 32 bit + * khronos_int64_t signed 64 bit + * khronos_uint64_t unsigned 64 bit + * khronos_intptr_t signed same number of bits as a pointer + * khronos_uintptr_t unsigned same number of bits as a pointer + * khronos_ssize_t signed size + * khronos_usize_t unsigned size + * khronos_float_t signed 32 bit floating point + * khronos_time_ns_t unsigned 64 bit time in nanoseconds + * khronos_utime_nanoseconds_t unsigned time interval or absolute time in + * nanoseconds + * khronos_stime_nanoseconds_t signed time interval in nanoseconds + * khronos_boolean_enum_t enumerated boolean type. This should + * only be used as a base type when a client API's boolean type is + * an enum. Client APIs which use an integer or other type for + * booleans cannot use this as the base type for their boolean. + * + * Tokens defined in khrplatform.h: + * + * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. + * + * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. + * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. + * + * Calling convention macros defined in this file: + * KHRONOS_APICALL + * KHRONOS_APIENTRY + * KHRONOS_APIATTRIBUTES + * + * These may be used in function prototypes as: + * + * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( + * int arg1, + * int arg2) KHRONOS_APIATTRIBUTES; + */ + +#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) +# define KHRONOS_STATIC 1 +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APICALL + *------------------------------------------------------------------------- + * This precedes the return type of the function in the function prototype. + */ +#if defined(KHRONOS_STATIC) + /* If the preprocessor constant KHRONOS_STATIC is defined, make the + * header compatible with static linking. */ +# define KHRONOS_APICALL +#elif defined(_WIN32) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#elif defined(__ANDROID__) +# define KHRONOS_APICALL __attribute__((visibility("default"))) +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIENTRY + *------------------------------------------------------------------------- + * This follows the return type of the function and precedes the function + * name in the function prototype. + */ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) + /* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- + * Definition of KHRONOS_APIATTRIBUTES + *------------------------------------------------------------------------- + * This follows the closing parenthesis of the function prototype arguments. + */ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- + * basic type definitions + *-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 +/* + * To support platform where unsigned long cannot be used interchangeably with + * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. + * Ideally, we could just use (u)intptr_t everywhere, but this could result in + * ABI breakage if khronos_uintptr_t is changed from unsigned long to + * unsigned long long or similar (this results in different C++ name mangling). + * To avoid changes for existing platforms, we restrict usage of intptr_t to + * platforms where the size of a pointer is larger than the size of long. + */ +#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) +#if __SIZEOF_POINTER__ > __SIZEOF_LONG__ +#define KHRONOS_USE_INTPTR_T +#endif +#endif + +#elif defined(__VMS ) || defined(__sgi) + +/* + * Using + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* + * Win32 + */ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* + * Sun or Digital + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* + * Hypothetical platform with no float or int64 support + */ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* + * Generic fallback + */ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* + * Types that are (so far) the same on all platforms + */ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* + * Types that differ between LLP64 and LP64 architectures - in LLP64, + * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears + * to be the only LLP64 architecture in current use. + */ +#ifdef KHRONOS_USE_INTPTR_T +typedef intptr_t khronos_intptr_t; +typedef uintptr_t khronos_uintptr_t; +#elif defined(_WIN64) +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +#endif + +#if defined(_WIN64) +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* + * Float type + */ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types + * + * These types can be used to represent a time interval in nanoseconds or + * an absolute Unadjusted System Time. Unadjusted System Time is the number + * of nanoseconds since some arbitrary system event (e.g. since the last + * time the system booted). The Unadjusted System Time is an unsigned + * 64 bit value that wraps back to 0 every 584 years. Time intervals + * may be either signed or unsigned. + */ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* + * Dummy value used to pad enum types to 32 bits. + */ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* + * Enumerated boolean type + * + * Values other than zero should be considered to be true. Therefore + * comparisons should not be made against KHRONOS_TRUE. + */ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ diff --git a/include/glad/glad.h b/include/glad/glad.h new file mode 100644 index 0000000..ac320d1 --- /dev/null +++ b/include/glad/glad.h @@ -0,0 +1,3611 @@ +/* + + OpenGL loader generated by glad 0.1.36 on Wed Feb 18 17:52:33 2026. + + Language/Generator: C/C++ + Specification: gl + APIs: gl=3.3 + Profile: compatibility + Extensions: + + Loader: True + Local files: False + Omit khrplatform: False + Reproducible: False + + Commandline: + --profile="compatibility" --api="gl=3.3" --generator="c" --spec="gl" --extensions="" + Online: + https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D3.3 +*/ + + +#ifndef __glad_h_ +#define __glad_h_ + +#ifdef __gl_h_ +#error OpenGL header already included, remove this include, glad already provides it +#endif +#define __gl_h_ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#define APIENTRY __stdcall +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#ifndef GLAPIENTRY +#define GLAPIENTRY APIENTRY +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +struct gladGLversionStruct { + int major; + int minor; +}; + +typedef void* (* GLADloadproc)(const char *name); + +#ifndef GLAPI +# if defined(GLAD_GLAPI_EXPORT) +# if defined(_WIN32) || defined(__CYGWIN__) +# if defined(GLAD_GLAPI_EXPORT_BUILD) +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllexport)) extern +# else +# define GLAPI __declspec(dllexport) extern +# endif +# else +# if defined(__GNUC__) +# define GLAPI __attribute__ ((dllimport)) extern +# else +# define GLAPI __declspec(dllimport) extern +# endif +# endif +# elif defined(__GNUC__) && defined(GLAD_GLAPI_EXPORT_BUILD) +# define GLAPI __attribute__ ((visibility ("default"))) extern +# else +# define GLAPI extern +# endif +# else +# define GLAPI extern +# endif +#endif + +GLAPI struct gladGLversionStruct GLVersion; + +GLAPI int gladLoadGL(void); + +GLAPI int gladLoadGLLoader(GLADloadproc); + +#include +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef void GLvoid; +typedef khronos_int8_t GLbyte; +typedef khronos_uint8_t GLubyte; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef int GLint; +typedef unsigned int GLuint; +typedef khronos_int32_t GLclampx; +typedef int GLsizei; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef double GLdouble; +typedef double GLclampd; +typedef void *GLeglClientBufferEXT; +typedef void *GLeglImageOES; +typedef char GLchar; +typedef char GLcharARB; +#ifdef __APPLE__ +typedef void *GLhandleARB; +#else +typedef unsigned int GLhandleARB; +#endif +typedef khronos_uint16_t GLhalf; +typedef khronos_uint16_t GLhalfARB; +typedef khronos_int32_t GLfixed; +typedef khronos_intptr_t GLintptr; +typedef khronos_intptr_t GLintptrARB; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_ssize_t GLsizeiptrARB; +typedef khronos_int64_t GLint64; +typedef khronos_int64_t GLint64EXT; +typedef khronos_uint64_t GLuint64; +typedef khronos_uint64_t GLuint64EXT; +typedef struct __GLsync *GLsync; +struct _cl_context; +struct _cl_event; +typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +typedef void (APIENTRY *GLDEBUGPROCAMD)(GLuint id,GLenum category,GLenum severity,GLsizei length,const GLchar *message,void *userParam); +typedef unsigned short GLhalfNV; +typedef GLintptr GLvdpauSurfaceNV; +typedef void (APIENTRY *GLVULKANPROCNV)(void); +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 +#define GL_FALSE 0 +#define GL_TRUE 1 +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 +#define GL_QUADS 0x0007 +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +#define GL_NONE 0 +#define GL_FRONT_LEFT 0x0400 +#define GL_FRONT_RIGHT 0x0401 +#define GL_BACK_LEFT 0x0402 +#define GL_BACK_RIGHT 0x0403 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_LEFT 0x0406 +#define GL_RIGHT 0x0407 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 +#define GL_CW 0x0900 +#define GL_CCW 0x0901 +#define GL_POINT_SIZE 0x0B11 +#define GL_POINT_SIZE_RANGE 0x0B12 +#define GL_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_LINE_SMOOTH 0x0B20 +#define GL_LINE_WIDTH 0x0B21 +#define GL_LINE_WIDTH_RANGE 0x0B22 +#define GL_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_POLYGON_MODE 0x0B40 +#define GL_POLYGON_SMOOTH 0x0B41 +#define GL_CULL_FACE 0x0B44 +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_TEST 0x0B71 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_TEST 0x0B90 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_VIEWPORT 0x0BA2 +#define GL_DITHER 0x0BD0 +#define GL_BLEND_DST 0x0BE0 +#define GL_BLEND_SRC 0x0BE1 +#define GL_BLEND 0x0BE2 +#define GL_LOGIC_OP_MODE 0x0BF0 +#define GL_DRAW_BUFFER 0x0C01 +#define GL_READ_BUFFER 0x0C02 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_DOUBLEBUFFER 0x0C32 +#define GL_STEREO 0x0C33 +#define GL_LINE_SMOOTH_HINT 0x0C52 +#define GL_POLYGON_SMOOTH_HINT 0x0C53 +#define GL_UNPACK_SWAP_BYTES 0x0CF0 +#define GL_UNPACK_LSB_FIRST 0x0CF1 +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_SWAP_BYTES 0x0D00 +#define GL_PACK_LSB_FIRST 0x0D01 +#define GL_PACK_ROW_LENGTH 0x0D02 +#define GL_PACK_SKIP_ROWS 0x0D03 +#define GL_PACK_SKIP_PIXELS 0x0D04 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_TEXTURE_1D 0x0DE0 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_TEXTURE_WIDTH 0x1000 +#define GL_TEXTURE_HEIGHT 0x1001 +#define GL_TEXTURE_BORDER_COLOR 0x1004 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#define GL_CLEAR 0x1500 +#define GL_AND 0x1501 +#define GL_AND_REVERSE 0x1502 +#define GL_COPY 0x1503 +#define GL_AND_INVERTED 0x1504 +#define GL_NOOP 0x1505 +#define GL_XOR 0x1506 +#define GL_OR 0x1507 +#define GL_NOR 0x1508 +#define GL_EQUIV 0x1509 +#define GL_INVERT 0x150A +#define GL_OR_REVERSE 0x150B +#define GL_COPY_INVERTED 0x150C +#define GL_OR_INVERTED 0x150D +#define GL_NAND 0x150E +#define GL_SET 0x150F +#define GL_TEXTURE 0x1702 +#define GL_COLOR 0x1800 +#define GL_DEPTH 0x1801 +#define GL_STENCIL 0x1802 +#define GL_STENCIL_INDEX 0x1901 +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_RED 0x1903 +#define GL_GREEN 0x1904 +#define GL_BLUE 0x1905 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_POINT 0x1B00 +#define GL_LINE 0x1B01 +#define GL_FILL 0x1B02 +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 +#define GL_REPEAT 0x2901 +#define GL_CURRENT_BIT 0x00000001 +#define GL_POINT_BIT 0x00000002 +#define GL_LINE_BIT 0x00000004 +#define GL_POLYGON_BIT 0x00000008 +#define GL_POLYGON_STIPPLE_BIT 0x00000010 +#define GL_PIXEL_MODE_BIT 0x00000020 +#define GL_LIGHTING_BIT 0x00000040 +#define GL_FOG_BIT 0x00000080 +#define GL_ACCUM_BUFFER_BIT 0x00000200 +#define GL_VIEWPORT_BIT 0x00000800 +#define GL_TRANSFORM_BIT 0x00001000 +#define GL_ENABLE_BIT 0x00002000 +#define GL_HINT_BIT 0x00008000 +#define GL_EVAL_BIT 0x00010000 +#define GL_LIST_BIT 0x00020000 +#define GL_TEXTURE_BIT 0x00040000 +#define GL_SCISSOR_BIT 0x00080000 +#define GL_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_QUAD_STRIP 0x0008 +#define GL_POLYGON 0x0009 +#define GL_ACCUM 0x0100 +#define GL_LOAD 0x0101 +#define GL_RETURN 0x0102 +#define GL_MULT 0x0103 +#define GL_ADD 0x0104 +#define GL_AUX0 0x0409 +#define GL_AUX1 0x040A +#define GL_AUX2 0x040B +#define GL_AUX3 0x040C +#define GL_2D 0x0600 +#define GL_3D 0x0601 +#define GL_3D_COLOR 0x0602 +#define GL_3D_COLOR_TEXTURE 0x0603 +#define GL_4D_COLOR_TEXTURE 0x0604 +#define GL_PASS_THROUGH_TOKEN 0x0700 +#define GL_POINT_TOKEN 0x0701 +#define GL_LINE_TOKEN 0x0702 +#define GL_POLYGON_TOKEN 0x0703 +#define GL_BITMAP_TOKEN 0x0704 +#define GL_DRAW_PIXEL_TOKEN 0x0705 +#define GL_COPY_PIXEL_TOKEN 0x0706 +#define GL_LINE_RESET_TOKEN 0x0707 +#define GL_EXP 0x0800 +#define GL_EXP2 0x0801 +#define GL_COEFF 0x0A00 +#define GL_ORDER 0x0A01 +#define GL_DOMAIN 0x0A02 +#define GL_PIXEL_MAP_I_TO_I 0x0C70 +#define GL_PIXEL_MAP_S_TO_S 0x0C71 +#define GL_PIXEL_MAP_I_TO_R 0x0C72 +#define GL_PIXEL_MAP_I_TO_G 0x0C73 +#define GL_PIXEL_MAP_I_TO_B 0x0C74 +#define GL_PIXEL_MAP_I_TO_A 0x0C75 +#define GL_PIXEL_MAP_R_TO_R 0x0C76 +#define GL_PIXEL_MAP_G_TO_G 0x0C77 +#define GL_PIXEL_MAP_B_TO_B 0x0C78 +#define GL_PIXEL_MAP_A_TO_A 0x0C79 +#define GL_CURRENT_COLOR 0x0B00 +#define GL_CURRENT_INDEX 0x0B01 +#define GL_CURRENT_NORMAL 0x0B02 +#define GL_CURRENT_TEXTURE_COORDS 0x0B03 +#define GL_CURRENT_RASTER_COLOR 0x0B04 +#define GL_CURRENT_RASTER_INDEX 0x0B05 +#define GL_CURRENT_RASTER_TEXTURE_COORDS 0x0B06 +#define GL_CURRENT_RASTER_POSITION 0x0B07 +#define GL_CURRENT_RASTER_POSITION_VALID 0x0B08 +#define GL_CURRENT_RASTER_DISTANCE 0x0B09 +#define GL_POINT_SMOOTH 0x0B10 +#define GL_LINE_STIPPLE 0x0B24 +#define GL_LINE_STIPPLE_PATTERN 0x0B25 +#define GL_LINE_STIPPLE_REPEAT 0x0B26 +#define GL_LIST_MODE 0x0B30 +#define GL_MAX_LIST_NESTING 0x0B31 +#define GL_LIST_BASE 0x0B32 +#define GL_LIST_INDEX 0x0B33 +#define GL_POLYGON_STIPPLE 0x0B42 +#define GL_EDGE_FLAG 0x0B43 +#define GL_LIGHTING 0x0B50 +#define GL_LIGHT_MODEL_LOCAL_VIEWER 0x0B51 +#define GL_LIGHT_MODEL_TWO_SIDE 0x0B52 +#define GL_LIGHT_MODEL_AMBIENT 0x0B53 +#define GL_SHADE_MODEL 0x0B54 +#define GL_COLOR_MATERIAL_FACE 0x0B55 +#define GL_COLOR_MATERIAL_PARAMETER 0x0B56 +#define GL_COLOR_MATERIAL 0x0B57 +#define GL_FOG 0x0B60 +#define GL_FOG_INDEX 0x0B61 +#define GL_FOG_DENSITY 0x0B62 +#define GL_FOG_START 0x0B63 +#define GL_FOG_END 0x0B64 +#define GL_FOG_MODE 0x0B65 +#define GL_FOG_COLOR 0x0B66 +#define GL_ACCUM_CLEAR_VALUE 0x0B80 +#define GL_MATRIX_MODE 0x0BA0 +#define GL_NORMALIZE 0x0BA1 +#define GL_MODELVIEW_STACK_DEPTH 0x0BA3 +#define GL_PROJECTION_STACK_DEPTH 0x0BA4 +#define GL_TEXTURE_STACK_DEPTH 0x0BA5 +#define GL_MODELVIEW_MATRIX 0x0BA6 +#define GL_PROJECTION_MATRIX 0x0BA7 +#define GL_TEXTURE_MATRIX 0x0BA8 +#define GL_ATTRIB_STACK_DEPTH 0x0BB0 +#define GL_ALPHA_TEST 0x0BC0 +#define GL_ALPHA_TEST_FUNC 0x0BC1 +#define GL_ALPHA_TEST_REF 0x0BC2 +#define GL_LOGIC_OP 0x0BF1 +#define GL_AUX_BUFFERS 0x0C00 +#define GL_INDEX_CLEAR_VALUE 0x0C20 +#define GL_INDEX_WRITEMASK 0x0C21 +#define GL_INDEX_MODE 0x0C30 +#define GL_RGBA_MODE 0x0C31 +#define GL_RENDER_MODE 0x0C40 +#define GL_PERSPECTIVE_CORRECTION_HINT 0x0C50 +#define GL_POINT_SMOOTH_HINT 0x0C51 +#define GL_FOG_HINT 0x0C54 +#define GL_TEXTURE_GEN_S 0x0C60 +#define GL_TEXTURE_GEN_T 0x0C61 +#define GL_TEXTURE_GEN_R 0x0C62 +#define GL_TEXTURE_GEN_Q 0x0C63 +#define GL_PIXEL_MAP_I_TO_I_SIZE 0x0CB0 +#define GL_PIXEL_MAP_S_TO_S_SIZE 0x0CB1 +#define GL_PIXEL_MAP_I_TO_R_SIZE 0x0CB2 +#define GL_PIXEL_MAP_I_TO_G_SIZE 0x0CB3 +#define GL_PIXEL_MAP_I_TO_B_SIZE 0x0CB4 +#define GL_PIXEL_MAP_I_TO_A_SIZE 0x0CB5 +#define GL_PIXEL_MAP_R_TO_R_SIZE 0x0CB6 +#define GL_PIXEL_MAP_G_TO_G_SIZE 0x0CB7 +#define GL_PIXEL_MAP_B_TO_B_SIZE 0x0CB8 +#define GL_PIXEL_MAP_A_TO_A_SIZE 0x0CB9 +#define GL_MAP_COLOR 0x0D10 +#define GL_MAP_STENCIL 0x0D11 +#define GL_INDEX_SHIFT 0x0D12 +#define GL_INDEX_OFFSET 0x0D13 +#define GL_RED_SCALE 0x0D14 +#define GL_RED_BIAS 0x0D15 +#define GL_ZOOM_X 0x0D16 +#define GL_ZOOM_Y 0x0D17 +#define GL_GREEN_SCALE 0x0D18 +#define GL_GREEN_BIAS 0x0D19 +#define GL_BLUE_SCALE 0x0D1A +#define GL_BLUE_BIAS 0x0D1B +#define GL_ALPHA_SCALE 0x0D1C +#define GL_ALPHA_BIAS 0x0D1D +#define GL_DEPTH_SCALE 0x0D1E +#define GL_DEPTH_BIAS 0x0D1F +#define GL_MAX_EVAL_ORDER 0x0D30 +#define GL_MAX_LIGHTS 0x0D31 +#define GL_MAX_CLIP_PLANES 0x0D32 +#define GL_MAX_PIXEL_MAP_TABLE 0x0D34 +#define GL_MAX_ATTRIB_STACK_DEPTH 0x0D35 +#define GL_MAX_MODELVIEW_STACK_DEPTH 0x0D36 +#define GL_MAX_NAME_STACK_DEPTH 0x0D37 +#define GL_MAX_PROJECTION_STACK_DEPTH 0x0D38 +#define GL_MAX_TEXTURE_STACK_DEPTH 0x0D39 +#define GL_INDEX_BITS 0x0D51 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_ACCUM_RED_BITS 0x0D58 +#define GL_ACCUM_GREEN_BITS 0x0D59 +#define GL_ACCUM_BLUE_BITS 0x0D5A +#define GL_ACCUM_ALPHA_BITS 0x0D5B +#define GL_NAME_STACK_DEPTH 0x0D70 +#define GL_AUTO_NORMAL 0x0D80 +#define GL_MAP1_COLOR_4 0x0D90 +#define GL_MAP1_INDEX 0x0D91 +#define GL_MAP1_NORMAL 0x0D92 +#define GL_MAP1_TEXTURE_COORD_1 0x0D93 +#define GL_MAP1_TEXTURE_COORD_2 0x0D94 +#define GL_MAP1_TEXTURE_COORD_3 0x0D95 +#define GL_MAP1_TEXTURE_COORD_4 0x0D96 +#define GL_MAP1_VERTEX_3 0x0D97 +#define GL_MAP1_VERTEX_4 0x0D98 +#define GL_MAP2_COLOR_4 0x0DB0 +#define GL_MAP2_INDEX 0x0DB1 +#define GL_MAP2_NORMAL 0x0DB2 +#define GL_MAP2_TEXTURE_COORD_1 0x0DB3 +#define GL_MAP2_TEXTURE_COORD_2 0x0DB4 +#define GL_MAP2_TEXTURE_COORD_3 0x0DB5 +#define GL_MAP2_TEXTURE_COORD_4 0x0DB6 +#define GL_MAP2_VERTEX_3 0x0DB7 +#define GL_MAP2_VERTEX_4 0x0DB8 +#define GL_MAP1_GRID_DOMAIN 0x0DD0 +#define GL_MAP1_GRID_SEGMENTS 0x0DD1 +#define GL_MAP2_GRID_DOMAIN 0x0DD2 +#define GL_MAP2_GRID_SEGMENTS 0x0DD3 +#define GL_TEXTURE_COMPONENTS 0x1003 +#define GL_TEXTURE_BORDER 0x1005 +#define GL_AMBIENT 0x1200 +#define GL_DIFFUSE 0x1201 +#define GL_SPECULAR 0x1202 +#define GL_POSITION 0x1203 +#define GL_SPOT_DIRECTION 0x1204 +#define GL_SPOT_EXPONENT 0x1205 +#define GL_SPOT_CUTOFF 0x1206 +#define GL_CONSTANT_ATTENUATION 0x1207 +#define GL_LINEAR_ATTENUATION 0x1208 +#define GL_QUADRATIC_ATTENUATION 0x1209 +#define GL_COMPILE 0x1300 +#define GL_COMPILE_AND_EXECUTE 0x1301 +#define GL_2_BYTES 0x1407 +#define GL_3_BYTES 0x1408 +#define GL_4_BYTES 0x1409 +#define GL_EMISSION 0x1600 +#define GL_SHININESS 0x1601 +#define GL_AMBIENT_AND_DIFFUSE 0x1602 +#define GL_COLOR_INDEXES 0x1603 +#define GL_MODELVIEW 0x1700 +#define GL_PROJECTION 0x1701 +#define GL_COLOR_INDEX 0x1900 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_BITMAP 0x1A00 +#define GL_RENDER 0x1C00 +#define GL_FEEDBACK 0x1C01 +#define GL_SELECT 0x1C02 +#define GL_FLAT 0x1D00 +#define GL_SMOOTH 0x1D01 +#define GL_S 0x2000 +#define GL_T 0x2001 +#define GL_R 0x2002 +#define GL_Q 0x2003 +#define GL_MODULATE 0x2100 +#define GL_DECAL 0x2101 +#define GL_TEXTURE_ENV_MODE 0x2200 +#define GL_TEXTURE_ENV_COLOR 0x2201 +#define GL_TEXTURE_ENV 0x2300 +#define GL_EYE_LINEAR 0x2400 +#define GL_OBJECT_LINEAR 0x2401 +#define GL_SPHERE_MAP 0x2402 +#define GL_TEXTURE_GEN_MODE 0x2500 +#define GL_OBJECT_PLANE 0x2501 +#define GL_EYE_PLANE 0x2502 +#define GL_CLAMP 0x2900 +#define GL_CLIP_PLANE0 0x3000 +#define GL_CLIP_PLANE1 0x3001 +#define GL_CLIP_PLANE2 0x3002 +#define GL_CLIP_PLANE3 0x3003 +#define GL_CLIP_PLANE4 0x3004 +#define GL_CLIP_PLANE5 0x3005 +#define GL_LIGHT0 0x4000 +#define GL_LIGHT1 0x4001 +#define GL_LIGHT2 0x4002 +#define GL_LIGHT3 0x4003 +#define GL_LIGHT4 0x4004 +#define GL_LIGHT5 0x4005 +#define GL_LIGHT6 0x4006 +#define GL_LIGHT7 0x4007 +#define GL_COLOR_LOGIC_OP 0x0BF2 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_POINT 0x2A01 +#define GL_POLYGON_OFFSET_LINE 0x2A02 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_1D 0x8068 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_TEXTURE_INTERNAL_FORMAT 0x1003 +#define GL_TEXTURE_RED_SIZE 0x805C +#define GL_TEXTURE_GREEN_SIZE 0x805D +#define GL_TEXTURE_BLUE_SIZE 0x805E +#define GL_TEXTURE_ALPHA_SIZE 0x805F +#define GL_DOUBLE 0x140A +#define GL_PROXY_TEXTURE_1D 0x8063 +#define GL_PROXY_TEXTURE_2D 0x8064 +#define GL_R3_G3_B2 0x2A10 +#define GL_RGB4 0x804F +#define GL_RGB5 0x8050 +#define GL_RGB8 0x8051 +#define GL_RGB10 0x8052 +#define GL_RGB12 0x8053 +#define GL_RGB16 0x8054 +#define GL_RGBA2 0x8055 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGBA8 0x8058 +#define GL_RGB10_A2 0x8059 +#define GL_RGBA12 0x805A +#define GL_RGBA16 0x805B +#define GL_CLIENT_PIXEL_STORE_BIT 0x00000001 +#define GL_CLIENT_VERTEX_ARRAY_BIT 0x00000002 +#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF +#define GL_VERTEX_ARRAY_POINTER 0x808E +#define GL_NORMAL_ARRAY_POINTER 0x808F +#define GL_COLOR_ARRAY_POINTER 0x8090 +#define GL_INDEX_ARRAY_POINTER 0x8091 +#define GL_TEXTURE_COORD_ARRAY_POINTER 0x8092 +#define GL_EDGE_FLAG_ARRAY_POINTER 0x8093 +#define GL_FEEDBACK_BUFFER_POINTER 0x0DF0 +#define GL_SELECTION_BUFFER_POINTER 0x0DF3 +#define GL_CLIENT_ATTRIB_STACK_DEPTH 0x0BB1 +#define GL_INDEX_LOGIC_OP 0x0BF1 +#define GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 0x0D3B +#define GL_FEEDBACK_BUFFER_SIZE 0x0DF1 +#define GL_FEEDBACK_BUFFER_TYPE 0x0DF2 +#define GL_SELECTION_BUFFER_SIZE 0x0DF4 +#define GL_VERTEX_ARRAY 0x8074 +#define GL_NORMAL_ARRAY 0x8075 +#define GL_COLOR_ARRAY 0x8076 +#define GL_INDEX_ARRAY 0x8077 +#define GL_TEXTURE_COORD_ARRAY 0x8078 +#define GL_EDGE_FLAG_ARRAY 0x8079 +#define GL_VERTEX_ARRAY_SIZE 0x807A +#define GL_VERTEX_ARRAY_TYPE 0x807B +#define GL_VERTEX_ARRAY_STRIDE 0x807C +#define GL_NORMAL_ARRAY_TYPE 0x807E +#define GL_NORMAL_ARRAY_STRIDE 0x807F +#define GL_COLOR_ARRAY_SIZE 0x8081 +#define GL_COLOR_ARRAY_TYPE 0x8082 +#define GL_COLOR_ARRAY_STRIDE 0x8083 +#define GL_INDEX_ARRAY_TYPE 0x8085 +#define GL_INDEX_ARRAY_STRIDE 0x8086 +#define GL_TEXTURE_COORD_ARRAY_SIZE 0x8088 +#define GL_TEXTURE_COORD_ARRAY_TYPE 0x8089 +#define GL_TEXTURE_COORD_ARRAY_STRIDE 0x808A +#define GL_EDGE_FLAG_ARRAY_STRIDE 0x808C +#define GL_TEXTURE_LUMINANCE_SIZE 0x8060 +#define GL_TEXTURE_INTENSITY_SIZE 0x8061 +#define GL_TEXTURE_PRIORITY 0x8066 +#define GL_TEXTURE_RESIDENT 0x8067 +#define GL_ALPHA4 0x803B +#define GL_ALPHA8 0x803C +#define GL_ALPHA12 0x803D +#define GL_ALPHA16 0x803E +#define GL_LUMINANCE4 0x803F +#define GL_LUMINANCE8 0x8040 +#define GL_LUMINANCE12 0x8041 +#define GL_LUMINANCE16 0x8042 +#define GL_LUMINANCE4_ALPHA4 0x8043 +#define GL_LUMINANCE6_ALPHA2 0x8044 +#define GL_LUMINANCE8_ALPHA8 0x8045 +#define GL_LUMINANCE12_ALPHA4 0x8046 +#define GL_LUMINANCE12_ALPHA12 0x8047 +#define GL_LUMINANCE16_ALPHA16 0x8048 +#define GL_INTENSITY 0x8049 +#define GL_INTENSITY4 0x804A +#define GL_INTENSITY8 0x804B +#define GL_INTENSITY12 0x804C +#define GL_INTENSITY16 0x804D +#define GL_V2F 0x2A20 +#define GL_V3F 0x2A21 +#define GL_C4UB_V2F 0x2A22 +#define GL_C4UB_V3F 0x2A23 +#define GL_C3F_V3F 0x2A24 +#define GL_N3F_V3F 0x2A25 +#define GL_C4F_N3F_V3F 0x2A26 +#define GL_T2F_V3F 0x2A27 +#define GL_T4F_V4F 0x2A28 +#define GL_T2F_C4UB_V3F 0x2A29 +#define GL_T2F_C3F_V3F 0x2A2A +#define GL_T2F_N3F_V3F 0x2A2B +#define GL_T2F_C4F_N3F_V3F 0x2A2C +#define GL_T4F_C4F_N3F_V4F 0x2A2D +#define GL_UNSIGNED_BYTE_3_3_2 0x8032 +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_INT_8_8_8_8 0x8035 +#define GL_UNSIGNED_INT_10_10_10_2 0x8036 +#define GL_TEXTURE_BINDING_3D 0x806A +#define GL_PACK_SKIP_IMAGES 0x806B +#define GL_PACK_IMAGE_HEIGHT 0x806C +#define GL_UNPACK_SKIP_IMAGES 0x806D +#define GL_UNPACK_IMAGE_HEIGHT 0x806E +#define GL_TEXTURE_3D 0x806F +#define GL_PROXY_TEXTURE_3D 0x8070 +#define GL_TEXTURE_DEPTH 0x8071 +#define GL_TEXTURE_WRAP_R 0x8072 +#define GL_MAX_3D_TEXTURE_SIZE 0x8073 +#define GL_UNSIGNED_BYTE_2_3_3_REV 0x8362 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 +#define GL_BGR 0x80E0 +#define GL_BGRA 0x80E1 +#define GL_MAX_ELEMENTS_VERTICES 0x80E8 +#define GL_MAX_ELEMENTS_INDICES 0x80E9 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_TEXTURE_MIN_LOD 0x813A +#define GL_TEXTURE_MAX_LOD 0x813B +#define GL_TEXTURE_BASE_LEVEL 0x813C +#define GL_TEXTURE_MAX_LEVEL 0x813D +#define GL_SMOOTH_POINT_SIZE_RANGE 0x0B12 +#define GL_SMOOTH_POINT_SIZE_GRANULARITY 0x0B13 +#define GL_SMOOTH_LINE_WIDTH_RANGE 0x0B22 +#define GL_SMOOTH_LINE_WIDTH_GRANULARITY 0x0B23 +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_RESCALE_NORMAL 0x803A +#define GL_LIGHT_MODEL_COLOR_CONTROL 0x81F8 +#define GL_SINGLE_COLOR 0x81F9 +#define GL_SEPARATE_SPECULAR_COLOR 0x81FA +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 +#define GL_MULTISAMPLE 0x809D +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_ALPHA_TO_ONE 0x809F +#define GL_SAMPLE_COVERAGE 0x80A0 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_PROXY_TEXTURE_CUBE_MAP 0x851B +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#define GL_COMPRESSED_RGB 0x84ED +#define GL_COMPRESSED_RGBA 0x84EE +#define GL_TEXTURE_COMPRESSION_HINT 0x84EF +#define GL_TEXTURE_COMPRESSED_IMAGE_SIZE 0x86A0 +#define GL_TEXTURE_COMPRESSED 0x86A1 +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_CLAMP_TO_BORDER 0x812D +#define GL_CLIENT_ACTIVE_TEXTURE 0x84E1 +#define GL_MAX_TEXTURE_UNITS 0x84E2 +#define GL_TRANSPOSE_MODELVIEW_MATRIX 0x84E3 +#define GL_TRANSPOSE_PROJECTION_MATRIX 0x84E4 +#define GL_TRANSPOSE_TEXTURE_MATRIX 0x84E5 +#define GL_TRANSPOSE_COLOR_MATRIX 0x84E6 +#define GL_MULTISAMPLE_BIT 0x20000000 +#define GL_NORMAL_MAP 0x8511 +#define GL_REFLECTION_MAP 0x8512 +#define GL_COMPRESSED_ALPHA 0x84E9 +#define GL_COMPRESSED_LUMINANCE 0x84EA +#define GL_COMPRESSED_LUMINANCE_ALPHA 0x84EB +#define GL_COMPRESSED_INTENSITY 0x84EC +#define GL_COMBINE 0x8570 +#define GL_COMBINE_RGB 0x8571 +#define GL_COMBINE_ALPHA 0x8572 +#define GL_SOURCE0_RGB 0x8580 +#define GL_SOURCE1_RGB 0x8581 +#define GL_SOURCE2_RGB 0x8582 +#define GL_SOURCE0_ALPHA 0x8588 +#define GL_SOURCE1_ALPHA 0x8589 +#define GL_SOURCE2_ALPHA 0x858A +#define GL_OPERAND0_RGB 0x8590 +#define GL_OPERAND1_RGB 0x8591 +#define GL_OPERAND2_RGB 0x8592 +#define GL_OPERAND0_ALPHA 0x8598 +#define GL_OPERAND1_ALPHA 0x8599 +#define GL_OPERAND2_ALPHA 0x859A +#define GL_RGB_SCALE 0x8573 +#define GL_ADD_SIGNED 0x8574 +#define GL_INTERPOLATE 0x8575 +#define GL_SUBTRACT 0x84E7 +#define GL_CONSTANT 0x8576 +#define GL_PRIMARY_COLOR 0x8577 +#define GL_PREVIOUS 0x8578 +#define GL_DOT3_RGB 0x86AE +#define GL_DOT3_RGBA 0x86AF +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_POINT_FADE_THRESHOLD_SIZE 0x8128 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_DEPTH_COMPONENT24 0x81A6 +#define GL_DEPTH_COMPONENT32 0x81A7 +#define GL_MIRRORED_REPEAT 0x8370 +#define GL_MAX_TEXTURE_LOD_BIAS 0x84FD +#define GL_TEXTURE_LOD_BIAS 0x8501 +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#define GL_TEXTURE_DEPTH_SIZE 0x884A +#define GL_TEXTURE_COMPARE_MODE 0x884C +#define GL_TEXTURE_COMPARE_FUNC 0x884D +#define GL_POINT_SIZE_MIN 0x8126 +#define GL_POINT_SIZE_MAX 0x8127 +#define GL_POINT_DISTANCE_ATTENUATION 0x8129 +#define GL_GENERATE_MIPMAP 0x8191 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#define GL_FOG_COORDINATE_SOURCE 0x8450 +#define GL_FOG_COORDINATE 0x8451 +#define GL_FRAGMENT_DEPTH 0x8452 +#define GL_CURRENT_FOG_COORDINATE 0x8453 +#define GL_FOG_COORDINATE_ARRAY_TYPE 0x8454 +#define GL_FOG_COORDINATE_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORDINATE_ARRAY_POINTER 0x8456 +#define GL_FOG_COORDINATE_ARRAY 0x8457 +#define GL_COLOR_SUM 0x8458 +#define GL_CURRENT_SECONDARY_COLOR 0x8459 +#define GL_SECONDARY_COLOR_ARRAY_SIZE 0x845A +#define GL_SECONDARY_COLOR_ARRAY_TYPE 0x845B +#define GL_SECONDARY_COLOR_ARRAY_STRIDE 0x845C +#define GL_SECONDARY_COLOR_ARRAY_POINTER 0x845D +#define GL_SECONDARY_COLOR_ARRAY 0x845E +#define GL_TEXTURE_FILTER_CONTROL 0x8500 +#define GL_DEPTH_TEXTURE_MODE 0x884B +#define GL_COMPARE_R_TO_TEXTURE 0x884E +#define GL_BLEND_COLOR 0x8005 +#define GL_BLEND_EQUATION 0x8009 +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_FUNC_ADD 0x8006 +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#define GL_FUNC_SUBTRACT 0x800A +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_QUERY_COUNTER_BITS 0x8864 +#define GL_CURRENT_QUERY 0x8865 +#define GL_QUERY_RESULT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE 0x8867 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_READ_ONLY 0x88B8 +#define GL_WRITE_ONLY 0x88B9 +#define GL_READ_WRITE 0x88BA +#define GL_BUFFER_ACCESS 0x88BB +#define GL_BUFFER_MAPPED 0x88BC +#define GL_BUFFER_MAP_POINTER 0x88BD +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_STATIC_DRAW 0x88E4 +#define GL_STATIC_READ 0x88E5 +#define GL_STATIC_COPY 0x88E6 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_DYNAMIC_READ 0x88E9 +#define GL_DYNAMIC_COPY 0x88EA +#define GL_SAMPLES_PASSED 0x8914 +#define GL_SRC1_ALPHA 0x8589 +#define GL_VERTEX_ARRAY_BUFFER_BINDING 0x8896 +#define GL_NORMAL_ARRAY_BUFFER_BINDING 0x8897 +#define GL_COLOR_ARRAY_BUFFER_BINDING 0x8898 +#define GL_INDEX_ARRAY_BUFFER_BINDING 0x8899 +#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A +#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING 0x889B +#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING 0x889C +#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING 0x889D +#define GL_WEIGHT_ARRAY_BUFFER_BINDING 0x889E +#define GL_FOG_COORD_SRC 0x8450 +#define GL_FOG_COORD 0x8451 +#define GL_CURRENT_FOG_COORD 0x8453 +#define GL_FOG_COORD_ARRAY_TYPE 0x8454 +#define GL_FOG_COORD_ARRAY_STRIDE 0x8455 +#define GL_FOG_COORD_ARRAY_POINTER 0x8456 +#define GL_FOG_COORD_ARRAY 0x8457 +#define GL_FOG_COORD_ARRAY_BUFFER_BINDING 0x889D +#define GL_SRC0_RGB 0x8580 +#define GL_SRC1_RGB 0x8581 +#define GL_SRC2_RGB 0x8582 +#define GL_SRC0_ALPHA 0x8588 +#define GL_SRC2_ALPHA 0x858A +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_VERTEX_PROGRAM_POINT_SIZE 0x8642 +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_MAX_DRAW_BUFFERS 0x8824 +#define GL_DRAW_BUFFER0 0x8825 +#define GL_DRAW_BUFFER1 0x8826 +#define GL_DRAW_BUFFER2 0x8827 +#define GL_DRAW_BUFFER3 0x8828 +#define GL_DRAW_BUFFER4 0x8829 +#define GL_DRAW_BUFFER5 0x882A +#define GL_DRAW_BUFFER6 0x882B +#define GL_DRAW_BUFFER7 0x882C +#define GL_DRAW_BUFFER8 0x882D +#define GL_DRAW_BUFFER9 0x882E +#define GL_DRAW_BUFFER10 0x882F +#define GL_DRAW_BUFFER11 0x8830 +#define GL_DRAW_BUFFER12 0x8831 +#define GL_DRAW_BUFFER13 0x8832 +#define GL_DRAW_BUFFER14 0x8833 +#define GL_DRAW_BUFFER15 0x8834 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49 +#define GL_MAX_VERTEX_UNIFORM_COMPONENTS 0x8B4A +#define GL_MAX_VARYING_FLOATS 0x8B4B +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_SHADER_TYPE 0x8B4F +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_1D 0x8B5D +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_3D 0x8B5F +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_SAMPLER_1D_SHADOW 0x8B61 +#define GL_SAMPLER_2D_SHADOW 0x8B62 +#define GL_DELETE_STATUS 0x8B80 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#define GL_POINT_SPRITE_COORD_ORIGIN 0x8CA0 +#define GL_LOWER_LEFT 0x8CA1 +#define GL_UPPER_LEFT 0x8CA2 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VERTEX_PROGRAM_TWO_SIDE 0x8643 +#define GL_POINT_SPRITE 0x8861 +#define GL_COORD_REPLACE 0x8862 +#define GL_MAX_TEXTURE_COORDS 0x8871 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING 0x88EF +#define GL_FLOAT_MAT2x3 0x8B65 +#define GL_FLOAT_MAT2x4 0x8B66 +#define GL_FLOAT_MAT3x2 0x8B67 +#define GL_FLOAT_MAT3x4 0x8B68 +#define GL_FLOAT_MAT4x2 0x8B69 +#define GL_FLOAT_MAT4x3 0x8B6A +#define GL_SRGB 0x8C40 +#define GL_SRGB8 0x8C41 +#define GL_SRGB_ALPHA 0x8C42 +#define GL_SRGB8_ALPHA8 0x8C43 +#define GL_COMPRESSED_SRGB 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA 0x8C49 +#define GL_CURRENT_RASTER_SECONDARY_COLOR 0x845F +#define GL_SLUMINANCE_ALPHA 0x8C44 +#define GL_SLUMINANCE8_ALPHA8 0x8C45 +#define GL_SLUMINANCE 0x8C46 +#define GL_SLUMINANCE8 0x8C47 +#define GL_COMPRESSED_SLUMINANCE 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA 0x8C4B +#define GL_COMPARE_REF_TO_TEXTURE 0x884E +#define GL_CLIP_DISTANCE0 0x3000 +#define GL_CLIP_DISTANCE1 0x3001 +#define GL_CLIP_DISTANCE2 0x3002 +#define GL_CLIP_DISTANCE3 0x3003 +#define GL_CLIP_DISTANCE4 0x3004 +#define GL_CLIP_DISTANCE5 0x3005 +#define GL_CLIP_DISTANCE6 0x3006 +#define GL_CLIP_DISTANCE7 0x3007 +#define GL_MAX_CLIP_DISTANCES 0x0D32 +#define GL_MAJOR_VERSION 0x821B +#define GL_MINOR_VERSION 0x821C +#define GL_NUM_EXTENSIONS 0x821D +#define GL_CONTEXT_FLAGS 0x821E +#define GL_COMPRESSED_RED 0x8225 +#define GL_COMPRESSED_RG 0x8226 +#define GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT 0x00000001 +#define GL_RGBA32F 0x8814 +#define GL_RGB32F 0x8815 +#define GL_RGBA16F 0x881A +#define GL_RGB16F 0x881B +#define GL_VERTEX_ATTRIB_ARRAY_INTEGER 0x88FD +#define GL_MAX_ARRAY_TEXTURE_LAYERS 0x88FF +#define GL_MIN_PROGRAM_TEXEL_OFFSET 0x8904 +#define GL_MAX_PROGRAM_TEXEL_OFFSET 0x8905 +#define GL_CLAMP_READ_COLOR 0x891C +#define GL_FIXED_ONLY 0x891D +#define GL_MAX_VARYING_COMPONENTS 0x8B4B +#define GL_TEXTURE_1D_ARRAY 0x8C18 +#define GL_PROXY_TEXTURE_1D_ARRAY 0x8C19 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_PROXY_TEXTURE_2D_ARRAY 0x8C1B +#define GL_TEXTURE_BINDING_1D_ARRAY 0x8C1C +#define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D +#define GL_R11F_G11F_B10F 0x8C3A +#define GL_UNSIGNED_INT_10F_11F_11F_REV 0x8C3B +#define GL_RGB9_E5 0x8C3D +#define GL_UNSIGNED_INT_5_9_9_9_REV 0x8C3E +#define GL_TEXTURE_SHARED_SIZE 0x8C3F +#define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76 +#define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80 +#define GL_TRANSFORM_FEEDBACK_VARYINGS 0x8C83 +#define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84 +#define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85 +#define GL_PRIMITIVES_GENERATED 0x8C87 +#define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88 +#define GL_RASTERIZER_DISCARD 0x8C89 +#define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A +#define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B +#define GL_INTERLEAVED_ATTRIBS 0x8C8C +#define GL_SEPARATE_ATTRIBS 0x8C8D +#define GL_TRANSFORM_FEEDBACK_BUFFER 0x8C8E +#define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F +#define GL_RGBA32UI 0x8D70 +#define GL_RGB32UI 0x8D71 +#define GL_RGBA16UI 0x8D76 +#define GL_RGB16UI 0x8D77 +#define GL_RGBA8UI 0x8D7C +#define GL_RGB8UI 0x8D7D +#define GL_RGBA32I 0x8D82 +#define GL_RGB32I 0x8D83 +#define GL_RGBA16I 0x8D88 +#define GL_RGB16I 0x8D89 +#define GL_RGBA8I 0x8D8E +#define GL_RGB8I 0x8D8F +#define GL_RED_INTEGER 0x8D94 +#define GL_GREEN_INTEGER 0x8D95 +#define GL_BLUE_INTEGER 0x8D96 +#define GL_RGB_INTEGER 0x8D98 +#define GL_RGBA_INTEGER 0x8D99 +#define GL_BGR_INTEGER 0x8D9A +#define GL_BGRA_INTEGER 0x8D9B +#define GL_SAMPLER_1D_ARRAY 0x8DC0 +#define GL_SAMPLER_2D_ARRAY 0x8DC1 +#define GL_SAMPLER_1D_ARRAY_SHADOW 0x8DC3 +#define GL_SAMPLER_2D_ARRAY_SHADOW 0x8DC4 +#define GL_SAMPLER_CUBE_SHADOW 0x8DC5 +#define GL_UNSIGNED_INT_VEC2 0x8DC6 +#define GL_UNSIGNED_INT_VEC3 0x8DC7 +#define GL_UNSIGNED_INT_VEC4 0x8DC8 +#define GL_INT_SAMPLER_1D 0x8DC9 +#define GL_INT_SAMPLER_2D 0x8DCA +#define GL_INT_SAMPLER_3D 0x8DCB +#define GL_INT_SAMPLER_CUBE 0x8DCC +#define GL_INT_SAMPLER_1D_ARRAY 0x8DCE +#define GL_INT_SAMPLER_2D_ARRAY 0x8DCF +#define GL_UNSIGNED_INT_SAMPLER_1D 0x8DD1 +#define GL_UNSIGNED_INT_SAMPLER_2D 0x8DD2 +#define GL_UNSIGNED_INT_SAMPLER_3D 0x8DD3 +#define GL_UNSIGNED_INT_SAMPLER_CUBE 0x8DD4 +#define GL_UNSIGNED_INT_SAMPLER_1D_ARRAY 0x8DD6 +#define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY 0x8DD7 +#define GL_QUERY_WAIT 0x8E13 +#define GL_QUERY_NO_WAIT 0x8E14 +#define GL_QUERY_BY_REGION_WAIT 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT 0x8E16 +#define GL_BUFFER_ACCESS_FLAGS 0x911F +#define GL_BUFFER_MAP_LENGTH 0x9120 +#define GL_BUFFER_MAP_OFFSET 0x9121 +#define GL_DEPTH_COMPONENT32F 0x8CAC +#define GL_DEPTH32F_STENCIL8 0x8CAD +#define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210 +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211 +#define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212 +#define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213 +#define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214 +#define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215 +#define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216 +#define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217 +#define GL_FRAMEBUFFER_DEFAULT 0x8218 +#define GL_FRAMEBUFFER_UNDEFINED 0x8219 +#define GL_DEPTH_STENCIL_ATTACHMENT 0x821A +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_DEPTH_STENCIL 0x84F9 +#define GL_UNSIGNED_INT_24_8 0x84FA +#define GL_DEPTH24_STENCIL8 0x88F0 +#define GL_TEXTURE_STENCIL_SIZE 0x88F1 +#define GL_TEXTURE_RED_TYPE 0x8C10 +#define GL_TEXTURE_GREEN_TYPE 0x8C11 +#define GL_TEXTURE_BLUE_TYPE 0x8C12 +#define GL_TEXTURE_ALPHA_TYPE 0x8C13 +#define GL_TEXTURE_DEPTH_TYPE 0x8C16 +#define GL_UNSIGNED_NORMALIZED 0x8C17 +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_DRAW_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_READ_FRAMEBUFFER_BINDING 0x8CAA +#define GL_RENDERBUFFER_SAMPLES 0x8CAB +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB +#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_MAX_COLOR_ATTACHMENTS 0x8CDF +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_COLOR_ATTACHMENT1 0x8CE1 +#define GL_COLOR_ATTACHMENT2 0x8CE2 +#define GL_COLOR_ATTACHMENT3 0x8CE3 +#define GL_COLOR_ATTACHMENT4 0x8CE4 +#define GL_COLOR_ATTACHMENT5 0x8CE5 +#define GL_COLOR_ATTACHMENT6 0x8CE6 +#define GL_COLOR_ATTACHMENT7 0x8CE7 +#define GL_COLOR_ATTACHMENT8 0x8CE8 +#define GL_COLOR_ATTACHMENT9 0x8CE9 +#define GL_COLOR_ATTACHMENT10 0x8CEA +#define GL_COLOR_ATTACHMENT11 0x8CEB +#define GL_COLOR_ATTACHMENT12 0x8CEC +#define GL_COLOR_ATTACHMENT13 0x8CED +#define GL_COLOR_ATTACHMENT14 0x8CEE +#define GL_COLOR_ATTACHMENT15 0x8CEF +#define GL_COLOR_ATTACHMENT16 0x8CF0 +#define GL_COLOR_ATTACHMENT17 0x8CF1 +#define GL_COLOR_ATTACHMENT18 0x8CF2 +#define GL_COLOR_ATTACHMENT19 0x8CF3 +#define GL_COLOR_ATTACHMENT20 0x8CF4 +#define GL_COLOR_ATTACHMENT21 0x8CF5 +#define GL_COLOR_ATTACHMENT22 0x8CF6 +#define GL_COLOR_ATTACHMENT23 0x8CF7 +#define GL_COLOR_ATTACHMENT24 0x8CF8 +#define GL_COLOR_ATTACHMENT25 0x8CF9 +#define GL_COLOR_ATTACHMENT26 0x8CFA +#define GL_COLOR_ATTACHMENT27 0x8CFB +#define GL_COLOR_ATTACHMENT28 0x8CFC +#define GL_COLOR_ATTACHMENT29 0x8CFD +#define GL_COLOR_ATTACHMENT30 0x8CFE +#define GL_COLOR_ATTACHMENT31 0x8CFF +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_STENCIL_INDEX1 0x8D46 +#define GL_STENCIL_INDEX4 0x8D47 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_STENCIL_INDEX16 0x8D49 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 +#define GL_MAX_SAMPLES 0x8D57 +#define GL_INDEX 0x8222 +#define GL_TEXTURE_LUMINANCE_TYPE 0x8C14 +#define GL_TEXTURE_INTENSITY_TYPE 0x8C15 +#define GL_FRAMEBUFFER_SRGB 0x8DB9 +#define GL_HALF_FLOAT 0x140B +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 +#define GL_COMPRESSED_RED_RGTC1 0x8DBB +#define GL_COMPRESSED_SIGNED_RED_RGTC1 0x8DBC +#define GL_COMPRESSED_RG_RGTC2 0x8DBD +#define GL_COMPRESSED_SIGNED_RG_RGTC2 0x8DBE +#define GL_RG 0x8227 +#define GL_RG_INTEGER 0x8228 +#define GL_R8 0x8229 +#define GL_R16 0x822A +#define GL_RG8 0x822B +#define GL_RG16 0x822C +#define GL_R16F 0x822D +#define GL_R32F 0x822E +#define GL_RG16F 0x822F +#define GL_RG32F 0x8230 +#define GL_R8I 0x8231 +#define GL_R8UI 0x8232 +#define GL_R16I 0x8233 +#define GL_R16UI 0x8234 +#define GL_R32I 0x8235 +#define GL_R32UI 0x8236 +#define GL_RG8I 0x8237 +#define GL_RG8UI 0x8238 +#define GL_RG16I 0x8239 +#define GL_RG16UI 0x823A +#define GL_RG32I 0x823B +#define GL_RG32UI 0x823C +#define GL_VERTEX_ARRAY_BINDING 0x85B5 +#define GL_CLAMP_VERTEX_COLOR 0x891A +#define GL_CLAMP_FRAGMENT_COLOR 0x891B +#define GL_ALPHA_INTEGER 0x8D97 +#define GL_SAMPLER_2D_RECT 0x8B63 +#define GL_SAMPLER_2D_RECT_SHADOW 0x8B64 +#define GL_SAMPLER_BUFFER 0x8DC2 +#define GL_INT_SAMPLER_2D_RECT 0x8DCD +#define GL_INT_SAMPLER_BUFFER 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_2D_RECT 0x8DD5 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER 0x8DD8 +#define GL_TEXTURE_BUFFER 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D +#define GL_TEXTURE_RECTANGLE 0x84F5 +#define GL_TEXTURE_BINDING_RECTANGLE 0x84F6 +#define GL_PROXY_TEXTURE_RECTANGLE 0x84F7 +#define GL_MAX_RECTANGLE_TEXTURE_SIZE 0x84F8 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGB8_SNORM 0x8F96 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM 0x8F98 +#define GL_RG16_SNORM 0x8F99 +#define GL_RGB16_SNORM 0x8F9A +#define GL_RGBA16_SNORM 0x8F9B +#define GL_SIGNED_NORMALIZED 0x8F9C +#define GL_PRIMITIVE_RESTART 0x8F9D +#define GL_PRIMITIVE_RESTART_INDEX 0x8F9E +#define GL_COPY_READ_BUFFER 0x8F36 +#define GL_COPY_WRITE_BUFFER 0x8F37 +#define GL_UNIFORM_BUFFER 0x8A11 +#define GL_UNIFORM_BUFFER_BINDING 0x8A28 +#define GL_UNIFORM_BUFFER_START 0x8A29 +#define GL_UNIFORM_BUFFER_SIZE 0x8A2A +#define GL_MAX_VERTEX_UNIFORM_BLOCKS 0x8A2B +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS 0x8A2C +#define GL_MAX_FRAGMENT_UNIFORM_BLOCKS 0x8A2D +#define GL_MAX_COMBINED_UNIFORM_BLOCKS 0x8A2E +#define GL_MAX_UNIFORM_BUFFER_BINDINGS 0x8A2F +#define GL_MAX_UNIFORM_BLOCK_SIZE 0x8A30 +#define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31 +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32 +#define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33 +#define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34 +#define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35 +#define GL_ACTIVE_UNIFORM_BLOCKS 0x8A36 +#define GL_UNIFORM_TYPE 0x8A37 +#define GL_UNIFORM_SIZE 0x8A38 +#define GL_UNIFORM_NAME_LENGTH 0x8A39 +#define GL_UNIFORM_BLOCK_INDEX 0x8A3A +#define GL_UNIFORM_OFFSET 0x8A3B +#define GL_UNIFORM_ARRAY_STRIDE 0x8A3C +#define GL_UNIFORM_MATRIX_STRIDE 0x8A3D +#define GL_UNIFORM_IS_ROW_MAJOR 0x8A3E +#define GL_UNIFORM_BLOCK_BINDING 0x8A3F +#define GL_UNIFORM_BLOCK_DATA_SIZE 0x8A40 +#define GL_UNIFORM_BLOCK_NAME_LENGTH 0x8A41 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS 0x8A42 +#define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER 0x8A45 +#define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46 +#define GL_INVALID_INDEX 0xFFFFFFFF +#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001 +#define GL_CONTEXT_COMPATIBILITY_PROFILE_BIT 0x00000002 +#define GL_LINES_ADJACENCY 0x000A +#define GL_LINE_STRIP_ADJACENCY 0x000B +#define GL_TRIANGLES_ADJACENCY 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY 0x000D +#define GL_PROGRAM_POINT_SIZE 0x8642 +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8 +#define GL_GEOMETRY_SHADER 0x8DD9 +#define GL_GEOMETRY_VERTICES_OUT 0x8916 +#define GL_GEOMETRY_INPUT_TYPE 0x8917 +#define GL_GEOMETRY_OUTPUT_TYPE 0x8918 +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1 +#define GL_MAX_VERTEX_OUTPUT_COMPONENTS 0x9122 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124 +#define GL_MAX_FRAGMENT_INPUT_COMPONENTS 0x9125 +#define GL_CONTEXT_PROFILE_MASK 0x9126 +#define GL_DEPTH_CLAMP 0x864F +#define GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION 0x8E4C +#define GL_FIRST_VERTEX_CONVENTION 0x8E4D +#define GL_LAST_VERTEX_CONVENTION 0x8E4E +#define GL_PROVOKING_VERTEX 0x8E4F +#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F +#define GL_MAX_SERVER_WAIT_TIMEOUT 0x9111 +#define GL_OBJECT_TYPE 0x9112 +#define GL_SYNC_CONDITION 0x9113 +#define GL_SYNC_STATUS 0x9114 +#define GL_SYNC_FLAGS 0x9115 +#define GL_SYNC_FENCE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_UNSIGNALED 0x9118 +#define GL_SIGNALED 0x9119 +#define GL_ALREADY_SIGNALED 0x911A +#define GL_TIMEOUT_EXPIRED 0x911B +#define GL_CONDITION_SATISFIED 0x911C +#define GL_WAIT_FAILED 0x911D +#define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFF +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 +#define GL_SAMPLE_POSITION 0x8E50 +#define GL_SAMPLE_MASK 0x8E51 +#define GL_SAMPLE_MASK_VALUE 0x8E52 +#define GL_MAX_SAMPLE_MASK_WORDS 0x8E59 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE 0x9101 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9103 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105 +#define GL_TEXTURE_SAMPLES 0x9106 +#define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107 +#define GL_SAMPLER_2D_MULTISAMPLE 0x9108 +#define GL_INT_SAMPLER_2D_MULTISAMPLE 0x9109 +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D +#define GL_MAX_COLOR_TEXTURE_SAMPLES 0x910E +#define GL_MAX_DEPTH_TEXTURE_SAMPLES 0x910F +#define GL_MAX_INTEGER_SAMPLES 0x9110 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE +#define GL_SRC1_COLOR 0x88F9 +#define GL_ONE_MINUS_SRC1_COLOR 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC +#define GL_ANY_SAMPLES_PASSED 0x8C2F +#define GL_SAMPLER_BINDING 0x8919 +#define GL_RGB10_A2UI 0x906F +#define GL_TEXTURE_SWIZZLE_R 0x8E42 +#define GL_TEXTURE_SWIZZLE_G 0x8E43 +#define GL_TEXTURE_SWIZZLE_B 0x8E44 +#define GL_TEXTURE_SWIZZLE_A 0x8E45 +#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46 +#define GL_TIME_ELAPSED 0x88BF +#define GL_TIMESTAMP 0x8E28 +#define GL_INT_2_10_10_10_REV 0x8D9F +#ifndef GL_VERSION_1_0 +#define GL_VERSION_1_0 1 +GLAPI int GLAD_GL_VERSION_1_0; +typedef void (APIENTRYP PFNGLCULLFACEPROC)(GLenum mode); +GLAPI PFNGLCULLFACEPROC glad_glCullFace; +#define glCullFace glad_glCullFace +typedef void (APIENTRYP PFNGLFRONTFACEPROC)(GLenum mode); +GLAPI PFNGLFRONTFACEPROC glad_glFrontFace; +#define glFrontFace glad_glFrontFace +typedef void (APIENTRYP PFNGLHINTPROC)(GLenum target, GLenum mode); +GLAPI PFNGLHINTPROC glad_glHint; +#define glHint glad_glHint +typedef void (APIENTRYP PFNGLLINEWIDTHPROC)(GLfloat width); +GLAPI PFNGLLINEWIDTHPROC glad_glLineWidth; +#define glLineWidth glad_glLineWidth +typedef void (APIENTRYP PFNGLPOINTSIZEPROC)(GLfloat size); +GLAPI PFNGLPOINTSIZEPROC glad_glPointSize; +#define glPointSize glad_glPointSize +typedef void (APIENTRYP PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode); +GLAPI PFNGLPOLYGONMODEPROC glad_glPolygonMode; +#define glPolygonMode glad_glPolygonMode +typedef void (APIENTRYP PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLSCISSORPROC glad_glScissor; +#define glScissor glad_glScissor +typedef void (APIENTRYP PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXPARAMETERFPROC glad_glTexParameterf; +#define glTexParameterf glad_glTexParameterf +typedef void (APIENTRYP PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; +#define glTexParameterfv glad_glTexParameterfv +typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXPARAMETERIPROC glad_glTexParameteri; +#define glTexParameteri glad_glTexParameteri +typedef void (APIENTRYP PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; +#define glTexParameteriv glad_glTexParameteriv +typedef void (APIENTRYP PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE1DPROC glad_glTexImage1D; +#define glTexImage1D glad_glTexImage1D +typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE2DPROC glad_glTexImage2D; +#define glTexImage2D glad_glTexImage2D +typedef void (APIENTRYP PFNGLDRAWBUFFERPROC)(GLenum buf); +GLAPI PFNGLDRAWBUFFERPROC glad_glDrawBuffer; +#define glDrawBuffer glad_glDrawBuffer +typedef void (APIENTRYP PFNGLCLEARPROC)(GLbitfield mask); +GLAPI PFNGLCLEARPROC glad_glClear; +#define glClear glad_glClear +typedef void (APIENTRYP PFNGLCLEARCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCLEARCOLORPROC glad_glClearColor; +#define glClearColor glad_glClearColor +typedef void (APIENTRYP PFNGLCLEARSTENCILPROC)(GLint s); +GLAPI PFNGLCLEARSTENCILPROC glad_glClearStencil; +#define glClearStencil glad_glClearStencil +typedef void (APIENTRYP PFNGLCLEARDEPTHPROC)(GLdouble depth); +GLAPI PFNGLCLEARDEPTHPROC glad_glClearDepth; +#define glClearDepth glad_glClearDepth +typedef void (APIENTRYP PFNGLSTENCILMASKPROC)(GLuint mask); +GLAPI PFNGLSTENCILMASKPROC glad_glStencilMask; +#define glStencilMask glad_glStencilMask +typedef void (APIENTRYP PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GLAPI PFNGLCOLORMASKPROC glad_glColorMask; +#define glColorMask glad_glColorMask +typedef void (APIENTRYP PFNGLDEPTHMASKPROC)(GLboolean flag); +GLAPI PFNGLDEPTHMASKPROC glad_glDepthMask; +#define glDepthMask glad_glDepthMask +typedef void (APIENTRYP PFNGLDISABLEPROC)(GLenum cap); +GLAPI PFNGLDISABLEPROC glad_glDisable; +#define glDisable glad_glDisable +typedef void (APIENTRYP PFNGLENABLEPROC)(GLenum cap); +GLAPI PFNGLENABLEPROC glad_glEnable; +#define glEnable glad_glEnable +typedef void (APIENTRYP PFNGLFINISHPROC)(void); +GLAPI PFNGLFINISHPROC glad_glFinish; +#define glFinish glad_glFinish +typedef void (APIENTRYP PFNGLFLUSHPROC)(void); +GLAPI PFNGLFLUSHPROC glad_glFlush; +#define glFlush glad_glFlush +typedef void (APIENTRYP PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor); +GLAPI PFNGLBLENDFUNCPROC glad_glBlendFunc; +#define glBlendFunc glad_glBlendFunc +typedef void (APIENTRYP PFNGLLOGICOPPROC)(GLenum opcode); +GLAPI PFNGLLOGICOPPROC glad_glLogicOp; +#define glLogicOp glad_glLogicOp +typedef void (APIENTRYP PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCPROC glad_glStencilFunc; +#define glStencilFunc glad_glStencilFunc +typedef void (APIENTRYP PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass); +GLAPI PFNGLSTENCILOPPROC glad_glStencilOp; +#define glStencilOp glad_glStencilOp +typedef void (APIENTRYP PFNGLDEPTHFUNCPROC)(GLenum func); +GLAPI PFNGLDEPTHFUNCPROC glad_glDepthFunc; +#define glDepthFunc glad_glDepthFunc +typedef void (APIENTRYP PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELSTOREFPROC glad_glPixelStoref; +#define glPixelStoref glad_glPixelStoref +typedef void (APIENTRYP PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELSTOREIPROC glad_glPixelStorei; +#define glPixelStorei glad_glPixelStorei +typedef void (APIENTRYP PFNGLREADBUFFERPROC)(GLenum src); +GLAPI PFNGLREADBUFFERPROC glad_glReadBuffer; +#define glReadBuffer glad_glReadBuffer +typedef void (APIENTRYP PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLREADPIXELSPROC glad_glReadPixels; +#define glReadPixels glad_glReadPixels +typedef void (APIENTRYP PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean *data); +GLAPI PFNGLGETBOOLEANVPROC glad_glGetBooleanv; +#define glGetBooleanv glad_glGetBooleanv +typedef void (APIENTRYP PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble *data); +GLAPI PFNGLGETDOUBLEVPROC glad_glGetDoublev; +#define glGetDoublev glad_glGetDoublev +typedef GLenum (APIENTRYP PFNGLGETERRORPROC)(void); +GLAPI PFNGLGETERRORPROC glad_glGetError; +#define glGetError glad_glGetError +typedef void (APIENTRYP PFNGLGETFLOATVPROC)(GLenum pname, GLfloat *data); +GLAPI PFNGLGETFLOATVPROC glad_glGetFloatv; +#define glGetFloatv glad_glGetFloatv +typedef void (APIENTRYP PFNGLGETINTEGERVPROC)(GLenum pname, GLint *data); +GLAPI PFNGLGETINTEGERVPROC glad_glGetIntegerv; +#define glGetIntegerv glad_glGetIntegerv +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGPROC)(GLenum name); +GLAPI PFNGLGETSTRINGPROC glad_glGetString; +#define glGetString glad_glGetString +typedef void (APIENTRYP PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, void *pixels); +GLAPI PFNGLGETTEXIMAGEPROC glad_glGetTexImage; +#define glGetTexImage glad_glGetTexImage +typedef void (APIENTRYP PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; +#define glGetTexParameterfv glad_glGetTexParameterfv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; +#define glGetTexParameteriv glad_glGetTexParameteriv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; +#define glGetTexLevelParameterfv glad_glGetTexLevelParameterfv +typedef void (APIENTRYP PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; +#define glGetTexLevelParameteriv glad_glGetTexLevelParameteriv +typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC)(GLenum cap); +GLAPI PFNGLISENABLEDPROC glad_glIsEnabled; +#define glIsEnabled glad_glIsEnabled +typedef void (APIENTRYP PFNGLDEPTHRANGEPROC)(GLdouble n, GLdouble f); +GLAPI PFNGLDEPTHRANGEPROC glad_glDepthRange; +#define glDepthRange glad_glDepthRange +typedef void (APIENTRYP PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLVIEWPORTPROC glad_glViewport; +#define glViewport glad_glViewport +typedef void (APIENTRYP PFNGLNEWLISTPROC)(GLuint list, GLenum mode); +GLAPI PFNGLNEWLISTPROC glad_glNewList; +#define glNewList glad_glNewList +typedef void (APIENTRYP PFNGLENDLISTPROC)(void); +GLAPI PFNGLENDLISTPROC glad_glEndList; +#define glEndList glad_glEndList +typedef void (APIENTRYP PFNGLCALLLISTPROC)(GLuint list); +GLAPI PFNGLCALLLISTPROC glad_glCallList; +#define glCallList glad_glCallList +typedef void (APIENTRYP PFNGLCALLLISTSPROC)(GLsizei n, GLenum type, const void *lists); +GLAPI PFNGLCALLLISTSPROC glad_glCallLists; +#define glCallLists glad_glCallLists +typedef void (APIENTRYP PFNGLDELETELISTSPROC)(GLuint list, GLsizei range); +GLAPI PFNGLDELETELISTSPROC glad_glDeleteLists; +#define glDeleteLists glad_glDeleteLists +typedef GLuint (APIENTRYP PFNGLGENLISTSPROC)(GLsizei range); +GLAPI PFNGLGENLISTSPROC glad_glGenLists; +#define glGenLists glad_glGenLists +typedef void (APIENTRYP PFNGLLISTBASEPROC)(GLuint base); +GLAPI PFNGLLISTBASEPROC glad_glListBase; +#define glListBase glad_glListBase +typedef void (APIENTRYP PFNGLBEGINPROC)(GLenum mode); +GLAPI PFNGLBEGINPROC glad_glBegin; +#define glBegin glad_glBegin +typedef void (APIENTRYP PFNGLBITMAPPROC)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap); +GLAPI PFNGLBITMAPPROC glad_glBitmap; +#define glBitmap glad_glBitmap +typedef void (APIENTRYP PFNGLCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); +GLAPI PFNGLCOLOR3BPROC glad_glColor3b; +#define glColor3b glad_glColor3b +typedef void (APIENTRYP PFNGLCOLOR3BVPROC)(const GLbyte *v); +GLAPI PFNGLCOLOR3BVPROC glad_glColor3bv; +#define glColor3bv glad_glColor3bv +typedef void (APIENTRYP PFNGLCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); +GLAPI PFNGLCOLOR3DPROC glad_glColor3d; +#define glColor3d glad_glColor3d +typedef void (APIENTRYP PFNGLCOLOR3DVPROC)(const GLdouble *v); +GLAPI PFNGLCOLOR3DVPROC glad_glColor3dv; +#define glColor3dv glad_glColor3dv +typedef void (APIENTRYP PFNGLCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); +GLAPI PFNGLCOLOR3FPROC glad_glColor3f; +#define glColor3f glad_glColor3f +typedef void (APIENTRYP PFNGLCOLOR3FVPROC)(const GLfloat *v); +GLAPI PFNGLCOLOR3FVPROC glad_glColor3fv; +#define glColor3fv glad_glColor3fv +typedef void (APIENTRYP PFNGLCOLOR3IPROC)(GLint red, GLint green, GLint blue); +GLAPI PFNGLCOLOR3IPROC glad_glColor3i; +#define glColor3i glad_glColor3i +typedef void (APIENTRYP PFNGLCOLOR3IVPROC)(const GLint *v); +GLAPI PFNGLCOLOR3IVPROC glad_glColor3iv; +#define glColor3iv glad_glColor3iv +typedef void (APIENTRYP PFNGLCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); +GLAPI PFNGLCOLOR3SPROC glad_glColor3s; +#define glColor3s glad_glColor3s +typedef void (APIENTRYP PFNGLCOLOR3SVPROC)(const GLshort *v); +GLAPI PFNGLCOLOR3SVPROC glad_glColor3sv; +#define glColor3sv glad_glColor3sv +typedef void (APIENTRYP PFNGLCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); +GLAPI PFNGLCOLOR3UBPROC glad_glColor3ub; +#define glColor3ub glad_glColor3ub +typedef void (APIENTRYP PFNGLCOLOR3UBVPROC)(const GLubyte *v); +GLAPI PFNGLCOLOR3UBVPROC glad_glColor3ubv; +#define glColor3ubv glad_glColor3ubv +typedef void (APIENTRYP PFNGLCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); +GLAPI PFNGLCOLOR3UIPROC glad_glColor3ui; +#define glColor3ui glad_glColor3ui +typedef void (APIENTRYP PFNGLCOLOR3UIVPROC)(const GLuint *v); +GLAPI PFNGLCOLOR3UIVPROC glad_glColor3uiv; +#define glColor3uiv glad_glColor3uiv +typedef void (APIENTRYP PFNGLCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); +GLAPI PFNGLCOLOR3USPROC glad_glColor3us; +#define glColor3us glad_glColor3us +typedef void (APIENTRYP PFNGLCOLOR3USVPROC)(const GLushort *v); +GLAPI PFNGLCOLOR3USVPROC glad_glColor3usv; +#define glColor3usv glad_glColor3usv +typedef void (APIENTRYP PFNGLCOLOR4BPROC)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); +GLAPI PFNGLCOLOR4BPROC glad_glColor4b; +#define glColor4b glad_glColor4b +typedef void (APIENTRYP PFNGLCOLOR4BVPROC)(const GLbyte *v); +GLAPI PFNGLCOLOR4BVPROC glad_glColor4bv; +#define glColor4bv glad_glColor4bv +typedef void (APIENTRYP PFNGLCOLOR4DPROC)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); +GLAPI PFNGLCOLOR4DPROC glad_glColor4d; +#define glColor4d glad_glColor4d +typedef void (APIENTRYP PFNGLCOLOR4DVPROC)(const GLdouble *v); +GLAPI PFNGLCOLOR4DVPROC glad_glColor4dv; +#define glColor4dv glad_glColor4dv +typedef void (APIENTRYP PFNGLCOLOR4FPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCOLOR4FPROC glad_glColor4f; +#define glColor4f glad_glColor4f +typedef void (APIENTRYP PFNGLCOLOR4FVPROC)(const GLfloat *v); +GLAPI PFNGLCOLOR4FVPROC glad_glColor4fv; +#define glColor4fv glad_glColor4fv +typedef void (APIENTRYP PFNGLCOLOR4IPROC)(GLint red, GLint green, GLint blue, GLint alpha); +GLAPI PFNGLCOLOR4IPROC glad_glColor4i; +#define glColor4i glad_glColor4i +typedef void (APIENTRYP PFNGLCOLOR4IVPROC)(const GLint *v); +GLAPI PFNGLCOLOR4IVPROC glad_glColor4iv; +#define glColor4iv glad_glColor4iv +typedef void (APIENTRYP PFNGLCOLOR4SPROC)(GLshort red, GLshort green, GLshort blue, GLshort alpha); +GLAPI PFNGLCOLOR4SPROC glad_glColor4s; +#define glColor4s glad_glColor4s +typedef void (APIENTRYP PFNGLCOLOR4SVPROC)(const GLshort *v); +GLAPI PFNGLCOLOR4SVPROC glad_glColor4sv; +#define glColor4sv glad_glColor4sv +typedef void (APIENTRYP PFNGLCOLOR4UBPROC)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); +GLAPI PFNGLCOLOR4UBPROC glad_glColor4ub; +#define glColor4ub glad_glColor4ub +typedef void (APIENTRYP PFNGLCOLOR4UBVPROC)(const GLubyte *v); +GLAPI PFNGLCOLOR4UBVPROC glad_glColor4ubv; +#define glColor4ubv glad_glColor4ubv +typedef void (APIENTRYP PFNGLCOLOR4UIPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha); +GLAPI PFNGLCOLOR4UIPROC glad_glColor4ui; +#define glColor4ui glad_glColor4ui +typedef void (APIENTRYP PFNGLCOLOR4UIVPROC)(const GLuint *v); +GLAPI PFNGLCOLOR4UIVPROC glad_glColor4uiv; +#define glColor4uiv glad_glColor4uiv +typedef void (APIENTRYP PFNGLCOLOR4USPROC)(GLushort red, GLushort green, GLushort blue, GLushort alpha); +GLAPI PFNGLCOLOR4USPROC glad_glColor4us; +#define glColor4us glad_glColor4us +typedef void (APIENTRYP PFNGLCOLOR4USVPROC)(const GLushort *v); +GLAPI PFNGLCOLOR4USVPROC glad_glColor4usv; +#define glColor4usv glad_glColor4usv +typedef void (APIENTRYP PFNGLEDGEFLAGPROC)(GLboolean flag); +GLAPI PFNGLEDGEFLAGPROC glad_glEdgeFlag; +#define glEdgeFlag glad_glEdgeFlag +typedef void (APIENTRYP PFNGLEDGEFLAGVPROC)(const GLboolean *flag); +GLAPI PFNGLEDGEFLAGVPROC glad_glEdgeFlagv; +#define glEdgeFlagv glad_glEdgeFlagv +typedef void (APIENTRYP PFNGLENDPROC)(void); +GLAPI PFNGLENDPROC glad_glEnd; +#define glEnd glad_glEnd +typedef void (APIENTRYP PFNGLINDEXDPROC)(GLdouble c); +GLAPI PFNGLINDEXDPROC glad_glIndexd; +#define glIndexd glad_glIndexd +typedef void (APIENTRYP PFNGLINDEXDVPROC)(const GLdouble *c); +GLAPI PFNGLINDEXDVPROC glad_glIndexdv; +#define glIndexdv glad_glIndexdv +typedef void (APIENTRYP PFNGLINDEXFPROC)(GLfloat c); +GLAPI PFNGLINDEXFPROC glad_glIndexf; +#define glIndexf glad_glIndexf +typedef void (APIENTRYP PFNGLINDEXFVPROC)(const GLfloat *c); +GLAPI PFNGLINDEXFVPROC glad_glIndexfv; +#define glIndexfv glad_glIndexfv +typedef void (APIENTRYP PFNGLINDEXIPROC)(GLint c); +GLAPI PFNGLINDEXIPROC glad_glIndexi; +#define glIndexi glad_glIndexi +typedef void (APIENTRYP PFNGLINDEXIVPROC)(const GLint *c); +GLAPI PFNGLINDEXIVPROC glad_glIndexiv; +#define glIndexiv glad_glIndexiv +typedef void (APIENTRYP PFNGLINDEXSPROC)(GLshort c); +GLAPI PFNGLINDEXSPROC glad_glIndexs; +#define glIndexs glad_glIndexs +typedef void (APIENTRYP PFNGLINDEXSVPROC)(const GLshort *c); +GLAPI PFNGLINDEXSVPROC glad_glIndexsv; +#define glIndexsv glad_glIndexsv +typedef void (APIENTRYP PFNGLNORMAL3BPROC)(GLbyte nx, GLbyte ny, GLbyte nz); +GLAPI PFNGLNORMAL3BPROC glad_glNormal3b; +#define glNormal3b glad_glNormal3b +typedef void (APIENTRYP PFNGLNORMAL3BVPROC)(const GLbyte *v); +GLAPI PFNGLNORMAL3BVPROC glad_glNormal3bv; +#define glNormal3bv glad_glNormal3bv +typedef void (APIENTRYP PFNGLNORMAL3DPROC)(GLdouble nx, GLdouble ny, GLdouble nz); +GLAPI PFNGLNORMAL3DPROC glad_glNormal3d; +#define glNormal3d glad_glNormal3d +typedef void (APIENTRYP PFNGLNORMAL3DVPROC)(const GLdouble *v); +GLAPI PFNGLNORMAL3DVPROC glad_glNormal3dv; +#define glNormal3dv glad_glNormal3dv +typedef void (APIENTRYP PFNGLNORMAL3FPROC)(GLfloat nx, GLfloat ny, GLfloat nz); +GLAPI PFNGLNORMAL3FPROC glad_glNormal3f; +#define glNormal3f glad_glNormal3f +typedef void (APIENTRYP PFNGLNORMAL3FVPROC)(const GLfloat *v); +GLAPI PFNGLNORMAL3FVPROC glad_glNormal3fv; +#define glNormal3fv glad_glNormal3fv +typedef void (APIENTRYP PFNGLNORMAL3IPROC)(GLint nx, GLint ny, GLint nz); +GLAPI PFNGLNORMAL3IPROC glad_glNormal3i; +#define glNormal3i glad_glNormal3i +typedef void (APIENTRYP PFNGLNORMAL3IVPROC)(const GLint *v); +GLAPI PFNGLNORMAL3IVPROC glad_glNormal3iv; +#define glNormal3iv glad_glNormal3iv +typedef void (APIENTRYP PFNGLNORMAL3SPROC)(GLshort nx, GLshort ny, GLshort nz); +GLAPI PFNGLNORMAL3SPROC glad_glNormal3s; +#define glNormal3s glad_glNormal3s +typedef void (APIENTRYP PFNGLNORMAL3SVPROC)(const GLshort *v); +GLAPI PFNGLNORMAL3SVPROC glad_glNormal3sv; +#define glNormal3sv glad_glNormal3sv +typedef void (APIENTRYP PFNGLRASTERPOS2DPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLRASTERPOS2DPROC glad_glRasterPos2d; +#define glRasterPos2d glad_glRasterPos2d +typedef void (APIENTRYP PFNGLRASTERPOS2DVPROC)(const GLdouble *v); +GLAPI PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv; +#define glRasterPos2dv glad_glRasterPos2dv +typedef void (APIENTRYP PFNGLRASTERPOS2FPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLRASTERPOS2FPROC glad_glRasterPos2f; +#define glRasterPos2f glad_glRasterPos2f +typedef void (APIENTRYP PFNGLRASTERPOS2FVPROC)(const GLfloat *v); +GLAPI PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv; +#define glRasterPos2fv glad_glRasterPos2fv +typedef void (APIENTRYP PFNGLRASTERPOS2IPROC)(GLint x, GLint y); +GLAPI PFNGLRASTERPOS2IPROC glad_glRasterPos2i; +#define glRasterPos2i glad_glRasterPos2i +typedef void (APIENTRYP PFNGLRASTERPOS2IVPROC)(const GLint *v); +GLAPI PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv; +#define glRasterPos2iv glad_glRasterPos2iv +typedef void (APIENTRYP PFNGLRASTERPOS2SPROC)(GLshort x, GLshort y); +GLAPI PFNGLRASTERPOS2SPROC glad_glRasterPos2s; +#define glRasterPos2s glad_glRasterPos2s +typedef void (APIENTRYP PFNGLRASTERPOS2SVPROC)(const GLshort *v); +GLAPI PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv; +#define glRasterPos2sv glad_glRasterPos2sv +typedef void (APIENTRYP PFNGLRASTERPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLRASTERPOS3DPROC glad_glRasterPos3d; +#define glRasterPos3d glad_glRasterPos3d +typedef void (APIENTRYP PFNGLRASTERPOS3DVPROC)(const GLdouble *v); +GLAPI PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv; +#define glRasterPos3dv glad_glRasterPos3dv +typedef void (APIENTRYP PFNGLRASTERPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLRASTERPOS3FPROC glad_glRasterPos3f; +#define glRasterPos3f glad_glRasterPos3f +typedef void (APIENTRYP PFNGLRASTERPOS3FVPROC)(const GLfloat *v); +GLAPI PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv; +#define glRasterPos3fv glad_glRasterPos3fv +typedef void (APIENTRYP PFNGLRASTERPOS3IPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLRASTERPOS3IPROC glad_glRasterPos3i; +#define glRasterPos3i glad_glRasterPos3i +typedef void (APIENTRYP PFNGLRASTERPOS3IVPROC)(const GLint *v); +GLAPI PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv; +#define glRasterPos3iv glad_glRasterPos3iv +typedef void (APIENTRYP PFNGLRASTERPOS3SPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLRASTERPOS3SPROC glad_glRasterPos3s; +#define glRasterPos3s glad_glRasterPos3s +typedef void (APIENTRYP PFNGLRASTERPOS3SVPROC)(const GLshort *v); +GLAPI PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv; +#define glRasterPos3sv glad_glRasterPos3sv +typedef void (APIENTRYP PFNGLRASTERPOS4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLRASTERPOS4DPROC glad_glRasterPos4d; +#define glRasterPos4d glad_glRasterPos4d +typedef void (APIENTRYP PFNGLRASTERPOS4DVPROC)(const GLdouble *v); +GLAPI PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv; +#define glRasterPos4dv glad_glRasterPos4dv +typedef void (APIENTRYP PFNGLRASTERPOS4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLRASTERPOS4FPROC glad_glRasterPos4f; +#define glRasterPos4f glad_glRasterPos4f +typedef void (APIENTRYP PFNGLRASTERPOS4FVPROC)(const GLfloat *v); +GLAPI PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv; +#define glRasterPos4fv glad_glRasterPos4fv +typedef void (APIENTRYP PFNGLRASTERPOS4IPROC)(GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLRASTERPOS4IPROC glad_glRasterPos4i; +#define glRasterPos4i glad_glRasterPos4i +typedef void (APIENTRYP PFNGLRASTERPOS4IVPROC)(const GLint *v); +GLAPI PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv; +#define glRasterPos4iv glad_glRasterPos4iv +typedef void (APIENTRYP PFNGLRASTERPOS4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLRASTERPOS4SPROC glad_glRasterPos4s; +#define glRasterPos4s glad_glRasterPos4s +typedef void (APIENTRYP PFNGLRASTERPOS4SVPROC)(const GLshort *v); +GLAPI PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv; +#define glRasterPos4sv glad_glRasterPos4sv +typedef void (APIENTRYP PFNGLRECTDPROC)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); +GLAPI PFNGLRECTDPROC glad_glRectd; +#define glRectd glad_glRectd +typedef void (APIENTRYP PFNGLRECTDVPROC)(const GLdouble *v1, const GLdouble *v2); +GLAPI PFNGLRECTDVPROC glad_glRectdv; +#define glRectdv glad_glRectdv +typedef void (APIENTRYP PFNGLRECTFPROC)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); +GLAPI PFNGLRECTFPROC glad_glRectf; +#define glRectf glad_glRectf +typedef void (APIENTRYP PFNGLRECTFVPROC)(const GLfloat *v1, const GLfloat *v2); +GLAPI PFNGLRECTFVPROC glad_glRectfv; +#define glRectfv glad_glRectfv +typedef void (APIENTRYP PFNGLRECTIPROC)(GLint x1, GLint y1, GLint x2, GLint y2); +GLAPI PFNGLRECTIPROC glad_glRecti; +#define glRecti glad_glRecti +typedef void (APIENTRYP PFNGLRECTIVPROC)(const GLint *v1, const GLint *v2); +GLAPI PFNGLRECTIVPROC glad_glRectiv; +#define glRectiv glad_glRectiv +typedef void (APIENTRYP PFNGLRECTSPROC)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); +GLAPI PFNGLRECTSPROC glad_glRects; +#define glRects glad_glRects +typedef void (APIENTRYP PFNGLRECTSVPROC)(const GLshort *v1, const GLshort *v2); +GLAPI PFNGLRECTSVPROC glad_glRectsv; +#define glRectsv glad_glRectsv +typedef void (APIENTRYP PFNGLTEXCOORD1DPROC)(GLdouble s); +GLAPI PFNGLTEXCOORD1DPROC glad_glTexCoord1d; +#define glTexCoord1d glad_glTexCoord1d +typedef void (APIENTRYP PFNGLTEXCOORD1DVPROC)(const GLdouble *v); +GLAPI PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv; +#define glTexCoord1dv glad_glTexCoord1dv +typedef void (APIENTRYP PFNGLTEXCOORD1FPROC)(GLfloat s); +GLAPI PFNGLTEXCOORD1FPROC glad_glTexCoord1f; +#define glTexCoord1f glad_glTexCoord1f +typedef void (APIENTRYP PFNGLTEXCOORD1FVPROC)(const GLfloat *v); +GLAPI PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv; +#define glTexCoord1fv glad_glTexCoord1fv +typedef void (APIENTRYP PFNGLTEXCOORD1IPROC)(GLint s); +GLAPI PFNGLTEXCOORD1IPROC glad_glTexCoord1i; +#define glTexCoord1i glad_glTexCoord1i +typedef void (APIENTRYP PFNGLTEXCOORD1IVPROC)(const GLint *v); +GLAPI PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv; +#define glTexCoord1iv glad_glTexCoord1iv +typedef void (APIENTRYP PFNGLTEXCOORD1SPROC)(GLshort s); +GLAPI PFNGLTEXCOORD1SPROC glad_glTexCoord1s; +#define glTexCoord1s glad_glTexCoord1s +typedef void (APIENTRYP PFNGLTEXCOORD1SVPROC)(const GLshort *v); +GLAPI PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv; +#define glTexCoord1sv glad_glTexCoord1sv +typedef void (APIENTRYP PFNGLTEXCOORD2DPROC)(GLdouble s, GLdouble t); +GLAPI PFNGLTEXCOORD2DPROC glad_glTexCoord2d; +#define glTexCoord2d glad_glTexCoord2d +typedef void (APIENTRYP PFNGLTEXCOORD2DVPROC)(const GLdouble *v); +GLAPI PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv; +#define glTexCoord2dv glad_glTexCoord2dv +typedef void (APIENTRYP PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t); +GLAPI PFNGLTEXCOORD2FPROC glad_glTexCoord2f; +#define glTexCoord2f glad_glTexCoord2f +typedef void (APIENTRYP PFNGLTEXCOORD2FVPROC)(const GLfloat *v); +GLAPI PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv; +#define glTexCoord2fv glad_glTexCoord2fv +typedef void (APIENTRYP PFNGLTEXCOORD2IPROC)(GLint s, GLint t); +GLAPI PFNGLTEXCOORD2IPROC glad_glTexCoord2i; +#define glTexCoord2i glad_glTexCoord2i +typedef void (APIENTRYP PFNGLTEXCOORD2IVPROC)(const GLint *v); +GLAPI PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv; +#define glTexCoord2iv glad_glTexCoord2iv +typedef void (APIENTRYP PFNGLTEXCOORD2SPROC)(GLshort s, GLshort t); +GLAPI PFNGLTEXCOORD2SPROC glad_glTexCoord2s; +#define glTexCoord2s glad_glTexCoord2s +typedef void (APIENTRYP PFNGLTEXCOORD2SVPROC)(const GLshort *v); +GLAPI PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv; +#define glTexCoord2sv glad_glTexCoord2sv +typedef void (APIENTRYP PFNGLTEXCOORD3DPROC)(GLdouble s, GLdouble t, GLdouble r); +GLAPI PFNGLTEXCOORD3DPROC glad_glTexCoord3d; +#define glTexCoord3d glad_glTexCoord3d +typedef void (APIENTRYP PFNGLTEXCOORD3DVPROC)(const GLdouble *v); +GLAPI PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv; +#define glTexCoord3dv glad_glTexCoord3dv +typedef void (APIENTRYP PFNGLTEXCOORD3FPROC)(GLfloat s, GLfloat t, GLfloat r); +GLAPI PFNGLTEXCOORD3FPROC glad_glTexCoord3f; +#define glTexCoord3f glad_glTexCoord3f +typedef void (APIENTRYP PFNGLTEXCOORD3FVPROC)(const GLfloat *v); +GLAPI PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv; +#define glTexCoord3fv glad_glTexCoord3fv +typedef void (APIENTRYP PFNGLTEXCOORD3IPROC)(GLint s, GLint t, GLint r); +GLAPI PFNGLTEXCOORD3IPROC glad_glTexCoord3i; +#define glTexCoord3i glad_glTexCoord3i +typedef void (APIENTRYP PFNGLTEXCOORD3IVPROC)(const GLint *v); +GLAPI PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv; +#define glTexCoord3iv glad_glTexCoord3iv +typedef void (APIENTRYP PFNGLTEXCOORD3SPROC)(GLshort s, GLshort t, GLshort r); +GLAPI PFNGLTEXCOORD3SPROC glad_glTexCoord3s; +#define glTexCoord3s glad_glTexCoord3s +typedef void (APIENTRYP PFNGLTEXCOORD3SVPROC)(const GLshort *v); +GLAPI PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv; +#define glTexCoord3sv glad_glTexCoord3sv +typedef void (APIENTRYP PFNGLTEXCOORD4DPROC)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI PFNGLTEXCOORD4DPROC glad_glTexCoord4d; +#define glTexCoord4d glad_glTexCoord4d +typedef void (APIENTRYP PFNGLTEXCOORD4DVPROC)(const GLdouble *v); +GLAPI PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv; +#define glTexCoord4dv glad_glTexCoord4dv +typedef void (APIENTRYP PFNGLTEXCOORD4FPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI PFNGLTEXCOORD4FPROC glad_glTexCoord4f; +#define glTexCoord4f glad_glTexCoord4f +typedef void (APIENTRYP PFNGLTEXCOORD4FVPROC)(const GLfloat *v); +GLAPI PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv; +#define glTexCoord4fv glad_glTexCoord4fv +typedef void (APIENTRYP PFNGLTEXCOORD4IPROC)(GLint s, GLint t, GLint r, GLint q); +GLAPI PFNGLTEXCOORD4IPROC glad_glTexCoord4i; +#define glTexCoord4i glad_glTexCoord4i +typedef void (APIENTRYP PFNGLTEXCOORD4IVPROC)(const GLint *v); +GLAPI PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv; +#define glTexCoord4iv glad_glTexCoord4iv +typedef void (APIENTRYP PFNGLTEXCOORD4SPROC)(GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI PFNGLTEXCOORD4SPROC glad_glTexCoord4s; +#define glTexCoord4s glad_glTexCoord4s +typedef void (APIENTRYP PFNGLTEXCOORD4SVPROC)(const GLshort *v); +GLAPI PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv; +#define glTexCoord4sv glad_glTexCoord4sv +typedef void (APIENTRYP PFNGLVERTEX2DPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLVERTEX2DPROC glad_glVertex2d; +#define glVertex2d glad_glVertex2d +typedef void (APIENTRYP PFNGLVERTEX2DVPROC)(const GLdouble *v); +GLAPI PFNGLVERTEX2DVPROC glad_glVertex2dv; +#define glVertex2dv glad_glVertex2dv +typedef void (APIENTRYP PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLVERTEX2FPROC glad_glVertex2f; +#define glVertex2f glad_glVertex2f +typedef void (APIENTRYP PFNGLVERTEX2FVPROC)(const GLfloat *v); +GLAPI PFNGLVERTEX2FVPROC glad_glVertex2fv; +#define glVertex2fv glad_glVertex2fv +typedef void (APIENTRYP PFNGLVERTEX2IPROC)(GLint x, GLint y); +GLAPI PFNGLVERTEX2IPROC glad_glVertex2i; +#define glVertex2i glad_glVertex2i +typedef void (APIENTRYP PFNGLVERTEX2IVPROC)(const GLint *v); +GLAPI PFNGLVERTEX2IVPROC glad_glVertex2iv; +#define glVertex2iv glad_glVertex2iv +typedef void (APIENTRYP PFNGLVERTEX2SPROC)(GLshort x, GLshort y); +GLAPI PFNGLVERTEX2SPROC glad_glVertex2s; +#define glVertex2s glad_glVertex2s +typedef void (APIENTRYP PFNGLVERTEX2SVPROC)(const GLshort *v); +GLAPI PFNGLVERTEX2SVPROC glad_glVertex2sv; +#define glVertex2sv glad_glVertex2sv +typedef void (APIENTRYP PFNGLVERTEX3DPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEX3DPROC glad_glVertex3d; +#define glVertex3d glad_glVertex3d +typedef void (APIENTRYP PFNGLVERTEX3DVPROC)(const GLdouble *v); +GLAPI PFNGLVERTEX3DVPROC glad_glVertex3dv; +#define glVertex3dv glad_glVertex3dv +typedef void (APIENTRYP PFNGLVERTEX3FPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEX3FPROC glad_glVertex3f; +#define glVertex3f glad_glVertex3f +typedef void (APIENTRYP PFNGLVERTEX3FVPROC)(const GLfloat *v); +GLAPI PFNGLVERTEX3FVPROC glad_glVertex3fv; +#define glVertex3fv glad_glVertex3fv +typedef void (APIENTRYP PFNGLVERTEX3IPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEX3IPROC glad_glVertex3i; +#define glVertex3i glad_glVertex3i +typedef void (APIENTRYP PFNGLVERTEX3IVPROC)(const GLint *v); +GLAPI PFNGLVERTEX3IVPROC glad_glVertex3iv; +#define glVertex3iv glad_glVertex3iv +typedef void (APIENTRYP PFNGLVERTEX3SPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEX3SPROC glad_glVertex3s; +#define glVertex3s glad_glVertex3s +typedef void (APIENTRYP PFNGLVERTEX3SVPROC)(const GLshort *v); +GLAPI PFNGLVERTEX3SVPROC glad_glVertex3sv; +#define glVertex3sv glad_glVertex3sv +typedef void (APIENTRYP PFNGLVERTEX4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEX4DPROC glad_glVertex4d; +#define glVertex4d glad_glVertex4d +typedef void (APIENTRYP PFNGLVERTEX4DVPROC)(const GLdouble *v); +GLAPI PFNGLVERTEX4DVPROC glad_glVertex4dv; +#define glVertex4dv glad_glVertex4dv +typedef void (APIENTRYP PFNGLVERTEX4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEX4FPROC glad_glVertex4f; +#define glVertex4f glad_glVertex4f +typedef void (APIENTRYP PFNGLVERTEX4FVPROC)(const GLfloat *v); +GLAPI PFNGLVERTEX4FVPROC glad_glVertex4fv; +#define glVertex4fv glad_glVertex4fv +typedef void (APIENTRYP PFNGLVERTEX4IPROC)(GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEX4IPROC glad_glVertex4i; +#define glVertex4i glad_glVertex4i +typedef void (APIENTRYP PFNGLVERTEX4IVPROC)(const GLint *v); +GLAPI PFNGLVERTEX4IVPROC glad_glVertex4iv; +#define glVertex4iv glad_glVertex4iv +typedef void (APIENTRYP PFNGLVERTEX4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEX4SPROC glad_glVertex4s; +#define glVertex4s glad_glVertex4s +typedef void (APIENTRYP PFNGLVERTEX4SVPROC)(const GLshort *v); +GLAPI PFNGLVERTEX4SVPROC glad_glVertex4sv; +#define glVertex4sv glad_glVertex4sv +typedef void (APIENTRYP PFNGLCLIPPLANEPROC)(GLenum plane, const GLdouble *equation); +GLAPI PFNGLCLIPPLANEPROC glad_glClipPlane; +#define glClipPlane glad_glClipPlane +typedef void (APIENTRYP PFNGLCOLORMATERIALPROC)(GLenum face, GLenum mode); +GLAPI PFNGLCOLORMATERIALPROC glad_glColorMaterial; +#define glColorMaterial glad_glColorMaterial +typedef void (APIENTRYP PFNGLFOGFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLFOGFPROC glad_glFogf; +#define glFogf glad_glFogf +typedef void (APIENTRYP PFNGLFOGFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLFOGFVPROC glad_glFogfv; +#define glFogfv glad_glFogfv +typedef void (APIENTRYP PFNGLFOGIPROC)(GLenum pname, GLint param); +GLAPI PFNGLFOGIPROC glad_glFogi; +#define glFogi glad_glFogi +typedef void (APIENTRYP PFNGLFOGIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLFOGIVPROC glad_glFogiv; +#define glFogiv glad_glFogiv +typedef void (APIENTRYP PFNGLLIGHTFPROC)(GLenum light, GLenum pname, GLfloat param); +GLAPI PFNGLLIGHTFPROC glad_glLightf; +#define glLightf glad_glLightf +typedef void (APIENTRYP PFNGLLIGHTFVPROC)(GLenum light, GLenum pname, const GLfloat *params); +GLAPI PFNGLLIGHTFVPROC glad_glLightfv; +#define glLightfv glad_glLightfv +typedef void (APIENTRYP PFNGLLIGHTIPROC)(GLenum light, GLenum pname, GLint param); +GLAPI PFNGLLIGHTIPROC glad_glLighti; +#define glLighti glad_glLighti +typedef void (APIENTRYP PFNGLLIGHTIVPROC)(GLenum light, GLenum pname, const GLint *params); +GLAPI PFNGLLIGHTIVPROC glad_glLightiv; +#define glLightiv glad_glLightiv +typedef void (APIENTRYP PFNGLLIGHTMODELFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLLIGHTMODELFPROC glad_glLightModelf; +#define glLightModelf glad_glLightModelf +typedef void (APIENTRYP PFNGLLIGHTMODELFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLLIGHTMODELFVPROC glad_glLightModelfv; +#define glLightModelfv glad_glLightModelfv +typedef void (APIENTRYP PFNGLLIGHTMODELIPROC)(GLenum pname, GLint param); +GLAPI PFNGLLIGHTMODELIPROC glad_glLightModeli; +#define glLightModeli glad_glLightModeli +typedef void (APIENTRYP PFNGLLIGHTMODELIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLLIGHTMODELIVPROC glad_glLightModeliv; +#define glLightModeliv glad_glLightModeliv +typedef void (APIENTRYP PFNGLLINESTIPPLEPROC)(GLint factor, GLushort pattern); +GLAPI PFNGLLINESTIPPLEPROC glad_glLineStipple; +#define glLineStipple glad_glLineStipple +typedef void (APIENTRYP PFNGLMATERIALFPROC)(GLenum face, GLenum pname, GLfloat param); +GLAPI PFNGLMATERIALFPROC glad_glMaterialf; +#define glMaterialf glad_glMaterialf +typedef void (APIENTRYP PFNGLMATERIALFVPROC)(GLenum face, GLenum pname, const GLfloat *params); +GLAPI PFNGLMATERIALFVPROC glad_glMaterialfv; +#define glMaterialfv glad_glMaterialfv +typedef void (APIENTRYP PFNGLMATERIALIPROC)(GLenum face, GLenum pname, GLint param); +GLAPI PFNGLMATERIALIPROC glad_glMateriali; +#define glMateriali glad_glMateriali +typedef void (APIENTRYP PFNGLMATERIALIVPROC)(GLenum face, GLenum pname, const GLint *params); +GLAPI PFNGLMATERIALIVPROC glad_glMaterialiv; +#define glMaterialiv glad_glMaterialiv +typedef void (APIENTRYP PFNGLPOLYGONSTIPPLEPROC)(const GLubyte *mask); +GLAPI PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple; +#define glPolygonStipple glad_glPolygonStipple +typedef void (APIENTRYP PFNGLSHADEMODELPROC)(GLenum mode); +GLAPI PFNGLSHADEMODELPROC glad_glShadeModel; +#define glShadeModel glad_glShadeModel +typedef void (APIENTRYP PFNGLTEXENVFPROC)(GLenum target, GLenum pname, GLfloat param); +GLAPI PFNGLTEXENVFPROC glad_glTexEnvf; +#define glTexEnvf glad_glTexEnvf +typedef void (APIENTRYP PFNGLTEXENVFVPROC)(GLenum target, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXENVFVPROC glad_glTexEnvfv; +#define glTexEnvfv glad_glTexEnvfv +typedef void (APIENTRYP PFNGLTEXENVIPROC)(GLenum target, GLenum pname, GLint param); +GLAPI PFNGLTEXENVIPROC glad_glTexEnvi; +#define glTexEnvi glad_glTexEnvi +typedef void (APIENTRYP PFNGLTEXENVIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXENVIVPROC glad_glTexEnviv; +#define glTexEnviv glad_glTexEnviv +typedef void (APIENTRYP PFNGLTEXGENDPROC)(GLenum coord, GLenum pname, GLdouble param); +GLAPI PFNGLTEXGENDPROC glad_glTexGend; +#define glTexGend glad_glTexGend +typedef void (APIENTRYP PFNGLTEXGENDVPROC)(GLenum coord, GLenum pname, const GLdouble *params); +GLAPI PFNGLTEXGENDVPROC glad_glTexGendv; +#define glTexGendv glad_glTexGendv +typedef void (APIENTRYP PFNGLTEXGENFPROC)(GLenum coord, GLenum pname, GLfloat param); +GLAPI PFNGLTEXGENFPROC glad_glTexGenf; +#define glTexGenf glad_glTexGenf +typedef void (APIENTRYP PFNGLTEXGENFVPROC)(GLenum coord, GLenum pname, const GLfloat *params); +GLAPI PFNGLTEXGENFVPROC glad_glTexGenfv; +#define glTexGenfv glad_glTexGenfv +typedef void (APIENTRYP PFNGLTEXGENIPROC)(GLenum coord, GLenum pname, GLint param); +GLAPI PFNGLTEXGENIPROC glad_glTexGeni; +#define glTexGeni glad_glTexGeni +typedef void (APIENTRYP PFNGLTEXGENIVPROC)(GLenum coord, GLenum pname, const GLint *params); +GLAPI PFNGLTEXGENIVPROC glad_glTexGeniv; +#define glTexGeniv glad_glTexGeniv +typedef void (APIENTRYP PFNGLFEEDBACKBUFFERPROC)(GLsizei size, GLenum type, GLfloat *buffer); +GLAPI PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer; +#define glFeedbackBuffer glad_glFeedbackBuffer +typedef void (APIENTRYP PFNGLSELECTBUFFERPROC)(GLsizei size, GLuint *buffer); +GLAPI PFNGLSELECTBUFFERPROC glad_glSelectBuffer; +#define glSelectBuffer glad_glSelectBuffer +typedef GLint (APIENTRYP PFNGLRENDERMODEPROC)(GLenum mode); +GLAPI PFNGLRENDERMODEPROC glad_glRenderMode; +#define glRenderMode glad_glRenderMode +typedef void (APIENTRYP PFNGLINITNAMESPROC)(void); +GLAPI PFNGLINITNAMESPROC glad_glInitNames; +#define glInitNames glad_glInitNames +typedef void (APIENTRYP PFNGLLOADNAMEPROC)(GLuint name); +GLAPI PFNGLLOADNAMEPROC glad_glLoadName; +#define glLoadName glad_glLoadName +typedef void (APIENTRYP PFNGLPASSTHROUGHPROC)(GLfloat token); +GLAPI PFNGLPASSTHROUGHPROC glad_glPassThrough; +#define glPassThrough glad_glPassThrough +typedef void (APIENTRYP PFNGLPOPNAMEPROC)(void); +GLAPI PFNGLPOPNAMEPROC glad_glPopName; +#define glPopName glad_glPopName +typedef void (APIENTRYP PFNGLPUSHNAMEPROC)(GLuint name); +GLAPI PFNGLPUSHNAMEPROC glad_glPushName; +#define glPushName glad_glPushName +typedef void (APIENTRYP PFNGLCLEARACCUMPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLCLEARACCUMPROC glad_glClearAccum; +#define glClearAccum glad_glClearAccum +typedef void (APIENTRYP PFNGLCLEARINDEXPROC)(GLfloat c); +GLAPI PFNGLCLEARINDEXPROC glad_glClearIndex; +#define glClearIndex glad_glClearIndex +typedef void (APIENTRYP PFNGLINDEXMASKPROC)(GLuint mask); +GLAPI PFNGLINDEXMASKPROC glad_glIndexMask; +#define glIndexMask glad_glIndexMask +typedef void (APIENTRYP PFNGLACCUMPROC)(GLenum op, GLfloat value); +GLAPI PFNGLACCUMPROC glad_glAccum; +#define glAccum glad_glAccum +typedef void (APIENTRYP PFNGLPOPATTRIBPROC)(void); +GLAPI PFNGLPOPATTRIBPROC glad_glPopAttrib; +#define glPopAttrib glad_glPopAttrib +typedef void (APIENTRYP PFNGLPUSHATTRIBPROC)(GLbitfield mask); +GLAPI PFNGLPUSHATTRIBPROC glad_glPushAttrib; +#define glPushAttrib glad_glPushAttrib +typedef void (APIENTRYP PFNGLMAP1DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points); +GLAPI PFNGLMAP1DPROC glad_glMap1d; +#define glMap1d glad_glMap1d +typedef void (APIENTRYP PFNGLMAP1FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points); +GLAPI PFNGLMAP1FPROC glad_glMap1f; +#define glMap1f glad_glMap1f +typedef void (APIENTRYP PFNGLMAP2DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points); +GLAPI PFNGLMAP2DPROC glad_glMap2d; +#define glMap2d glad_glMap2d +typedef void (APIENTRYP PFNGLMAP2FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points); +GLAPI PFNGLMAP2FPROC glad_glMap2f; +#define glMap2f glad_glMap2f +typedef void (APIENTRYP PFNGLMAPGRID1DPROC)(GLint un, GLdouble u1, GLdouble u2); +GLAPI PFNGLMAPGRID1DPROC glad_glMapGrid1d; +#define glMapGrid1d glad_glMapGrid1d +typedef void (APIENTRYP PFNGLMAPGRID1FPROC)(GLint un, GLfloat u1, GLfloat u2); +GLAPI PFNGLMAPGRID1FPROC glad_glMapGrid1f; +#define glMapGrid1f glad_glMapGrid1f +typedef void (APIENTRYP PFNGLMAPGRID2DPROC)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); +GLAPI PFNGLMAPGRID2DPROC glad_glMapGrid2d; +#define glMapGrid2d glad_glMapGrid2d +typedef void (APIENTRYP PFNGLMAPGRID2FPROC)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); +GLAPI PFNGLMAPGRID2FPROC glad_glMapGrid2f; +#define glMapGrid2f glad_glMapGrid2f +typedef void (APIENTRYP PFNGLEVALCOORD1DPROC)(GLdouble u); +GLAPI PFNGLEVALCOORD1DPROC glad_glEvalCoord1d; +#define glEvalCoord1d glad_glEvalCoord1d +typedef void (APIENTRYP PFNGLEVALCOORD1DVPROC)(const GLdouble *u); +GLAPI PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv; +#define glEvalCoord1dv glad_glEvalCoord1dv +typedef void (APIENTRYP PFNGLEVALCOORD1FPROC)(GLfloat u); +GLAPI PFNGLEVALCOORD1FPROC glad_glEvalCoord1f; +#define glEvalCoord1f glad_glEvalCoord1f +typedef void (APIENTRYP PFNGLEVALCOORD1FVPROC)(const GLfloat *u); +GLAPI PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv; +#define glEvalCoord1fv glad_glEvalCoord1fv +typedef void (APIENTRYP PFNGLEVALCOORD2DPROC)(GLdouble u, GLdouble v); +GLAPI PFNGLEVALCOORD2DPROC glad_glEvalCoord2d; +#define glEvalCoord2d glad_glEvalCoord2d +typedef void (APIENTRYP PFNGLEVALCOORD2DVPROC)(const GLdouble *u); +GLAPI PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv; +#define glEvalCoord2dv glad_glEvalCoord2dv +typedef void (APIENTRYP PFNGLEVALCOORD2FPROC)(GLfloat u, GLfloat v); +GLAPI PFNGLEVALCOORD2FPROC glad_glEvalCoord2f; +#define glEvalCoord2f glad_glEvalCoord2f +typedef void (APIENTRYP PFNGLEVALCOORD2FVPROC)(const GLfloat *u); +GLAPI PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv; +#define glEvalCoord2fv glad_glEvalCoord2fv +typedef void (APIENTRYP PFNGLEVALMESH1PROC)(GLenum mode, GLint i1, GLint i2); +GLAPI PFNGLEVALMESH1PROC glad_glEvalMesh1; +#define glEvalMesh1 glad_glEvalMesh1 +typedef void (APIENTRYP PFNGLEVALPOINT1PROC)(GLint i); +GLAPI PFNGLEVALPOINT1PROC glad_glEvalPoint1; +#define glEvalPoint1 glad_glEvalPoint1 +typedef void (APIENTRYP PFNGLEVALMESH2PROC)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); +GLAPI PFNGLEVALMESH2PROC glad_glEvalMesh2; +#define glEvalMesh2 glad_glEvalMesh2 +typedef void (APIENTRYP PFNGLEVALPOINT2PROC)(GLint i, GLint j); +GLAPI PFNGLEVALPOINT2PROC glad_glEvalPoint2; +#define glEvalPoint2 glad_glEvalPoint2 +typedef void (APIENTRYP PFNGLALPHAFUNCPROC)(GLenum func, GLfloat ref); +GLAPI PFNGLALPHAFUNCPROC glad_glAlphaFunc; +#define glAlphaFunc glad_glAlphaFunc +typedef void (APIENTRYP PFNGLPIXELZOOMPROC)(GLfloat xfactor, GLfloat yfactor); +GLAPI PFNGLPIXELZOOMPROC glad_glPixelZoom; +#define glPixelZoom glad_glPixelZoom +typedef void (APIENTRYP PFNGLPIXELTRANSFERFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf; +#define glPixelTransferf glad_glPixelTransferf +typedef void (APIENTRYP PFNGLPIXELTRANSFERIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi; +#define glPixelTransferi glad_glPixelTransferi +typedef void (APIENTRYP PFNGLPIXELMAPFVPROC)(GLenum map, GLsizei mapsize, const GLfloat *values); +GLAPI PFNGLPIXELMAPFVPROC glad_glPixelMapfv; +#define glPixelMapfv glad_glPixelMapfv +typedef void (APIENTRYP PFNGLPIXELMAPUIVPROC)(GLenum map, GLsizei mapsize, const GLuint *values); +GLAPI PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv; +#define glPixelMapuiv glad_glPixelMapuiv +typedef void (APIENTRYP PFNGLPIXELMAPUSVPROC)(GLenum map, GLsizei mapsize, const GLushort *values); +GLAPI PFNGLPIXELMAPUSVPROC glad_glPixelMapusv; +#define glPixelMapusv glad_glPixelMapusv +typedef void (APIENTRYP PFNGLCOPYPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); +GLAPI PFNGLCOPYPIXELSPROC glad_glCopyPixels; +#define glCopyPixels glad_glCopyPixels +typedef void (APIENTRYP PFNGLDRAWPIXELSPROC)(GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLDRAWPIXELSPROC glad_glDrawPixels; +#define glDrawPixels glad_glDrawPixels +typedef void (APIENTRYP PFNGLGETCLIPPLANEPROC)(GLenum plane, GLdouble *equation); +GLAPI PFNGLGETCLIPPLANEPROC glad_glGetClipPlane; +#define glGetClipPlane glad_glGetClipPlane +typedef void (APIENTRYP PFNGLGETLIGHTFVPROC)(GLenum light, GLenum pname, GLfloat *params); +GLAPI PFNGLGETLIGHTFVPROC glad_glGetLightfv; +#define glGetLightfv glad_glGetLightfv +typedef void (APIENTRYP PFNGLGETLIGHTIVPROC)(GLenum light, GLenum pname, GLint *params); +GLAPI PFNGLGETLIGHTIVPROC glad_glGetLightiv; +#define glGetLightiv glad_glGetLightiv +typedef void (APIENTRYP PFNGLGETMAPDVPROC)(GLenum target, GLenum query, GLdouble *v); +GLAPI PFNGLGETMAPDVPROC glad_glGetMapdv; +#define glGetMapdv glad_glGetMapdv +typedef void (APIENTRYP PFNGLGETMAPFVPROC)(GLenum target, GLenum query, GLfloat *v); +GLAPI PFNGLGETMAPFVPROC glad_glGetMapfv; +#define glGetMapfv glad_glGetMapfv +typedef void (APIENTRYP PFNGLGETMAPIVPROC)(GLenum target, GLenum query, GLint *v); +GLAPI PFNGLGETMAPIVPROC glad_glGetMapiv; +#define glGetMapiv glad_glGetMapiv +typedef void (APIENTRYP PFNGLGETMATERIALFVPROC)(GLenum face, GLenum pname, GLfloat *params); +GLAPI PFNGLGETMATERIALFVPROC glad_glGetMaterialfv; +#define glGetMaterialfv glad_glGetMaterialfv +typedef void (APIENTRYP PFNGLGETMATERIALIVPROC)(GLenum face, GLenum pname, GLint *params); +GLAPI PFNGLGETMATERIALIVPROC glad_glGetMaterialiv; +#define glGetMaterialiv glad_glGetMaterialiv +typedef void (APIENTRYP PFNGLGETPIXELMAPFVPROC)(GLenum map, GLfloat *values); +GLAPI PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv; +#define glGetPixelMapfv glad_glGetPixelMapfv +typedef void (APIENTRYP PFNGLGETPIXELMAPUIVPROC)(GLenum map, GLuint *values); +GLAPI PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv; +#define glGetPixelMapuiv glad_glGetPixelMapuiv +typedef void (APIENTRYP PFNGLGETPIXELMAPUSVPROC)(GLenum map, GLushort *values); +GLAPI PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv; +#define glGetPixelMapusv glad_glGetPixelMapusv +typedef void (APIENTRYP PFNGLGETPOLYGONSTIPPLEPROC)(GLubyte *mask); +GLAPI PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple; +#define glGetPolygonStipple glad_glGetPolygonStipple +typedef void (APIENTRYP PFNGLGETTEXENVFVPROC)(GLenum target, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv; +#define glGetTexEnvfv glad_glGetTexEnvfv +typedef void (APIENTRYP PFNGLGETTEXENVIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXENVIVPROC glad_glGetTexEnviv; +#define glGetTexEnviv glad_glGetTexEnviv +typedef void (APIENTRYP PFNGLGETTEXGENDVPROC)(GLenum coord, GLenum pname, GLdouble *params); +GLAPI PFNGLGETTEXGENDVPROC glad_glGetTexGendv; +#define glGetTexGendv glad_glGetTexGendv +typedef void (APIENTRYP PFNGLGETTEXGENFVPROC)(GLenum coord, GLenum pname, GLfloat *params); +GLAPI PFNGLGETTEXGENFVPROC glad_glGetTexGenfv; +#define glGetTexGenfv glad_glGetTexGenfv +typedef void (APIENTRYP PFNGLGETTEXGENIVPROC)(GLenum coord, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXGENIVPROC glad_glGetTexGeniv; +#define glGetTexGeniv glad_glGetTexGeniv +typedef GLboolean (APIENTRYP PFNGLISLISTPROC)(GLuint list); +GLAPI PFNGLISLISTPROC glad_glIsList; +#define glIsList glad_glIsList +typedef void (APIENTRYP PFNGLFRUSTUMPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLFRUSTUMPROC glad_glFrustum; +#define glFrustum glad_glFrustum +typedef void (APIENTRYP PFNGLLOADIDENTITYPROC)(void); +GLAPI PFNGLLOADIDENTITYPROC glad_glLoadIdentity; +#define glLoadIdentity glad_glLoadIdentity +typedef void (APIENTRYP PFNGLLOADMATRIXFPROC)(const GLfloat *m); +GLAPI PFNGLLOADMATRIXFPROC glad_glLoadMatrixf; +#define glLoadMatrixf glad_glLoadMatrixf +typedef void (APIENTRYP PFNGLLOADMATRIXDPROC)(const GLdouble *m); +GLAPI PFNGLLOADMATRIXDPROC glad_glLoadMatrixd; +#define glLoadMatrixd glad_glLoadMatrixd +typedef void (APIENTRYP PFNGLMATRIXMODEPROC)(GLenum mode); +GLAPI PFNGLMATRIXMODEPROC glad_glMatrixMode; +#define glMatrixMode glad_glMatrixMode +typedef void (APIENTRYP PFNGLMULTMATRIXFPROC)(const GLfloat *m); +GLAPI PFNGLMULTMATRIXFPROC glad_glMultMatrixf; +#define glMultMatrixf glad_glMultMatrixf +typedef void (APIENTRYP PFNGLMULTMATRIXDPROC)(const GLdouble *m); +GLAPI PFNGLMULTMATRIXDPROC glad_glMultMatrixd; +#define glMultMatrixd glad_glMultMatrixd +typedef void (APIENTRYP PFNGLORTHOPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GLAPI PFNGLORTHOPROC glad_glOrtho; +#define glOrtho glad_glOrtho +typedef void (APIENTRYP PFNGLPOPMATRIXPROC)(void); +GLAPI PFNGLPOPMATRIXPROC glad_glPopMatrix; +#define glPopMatrix glad_glPopMatrix +typedef void (APIENTRYP PFNGLPUSHMATRIXPROC)(void); +GLAPI PFNGLPUSHMATRIXPROC glad_glPushMatrix; +#define glPushMatrix glad_glPushMatrix +typedef void (APIENTRYP PFNGLROTATEDPROC)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLROTATEDPROC glad_glRotated; +#define glRotated glad_glRotated +typedef void (APIENTRYP PFNGLROTATEFPROC)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLROTATEFPROC glad_glRotatef; +#define glRotatef glad_glRotatef +typedef void (APIENTRYP PFNGLSCALEDPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLSCALEDPROC glad_glScaled; +#define glScaled glad_glScaled +typedef void (APIENTRYP PFNGLSCALEFPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLSCALEFPROC glad_glScalef; +#define glScalef glad_glScalef +typedef void (APIENTRYP PFNGLTRANSLATEDPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLTRANSLATEDPROC glad_glTranslated; +#define glTranslated glad_glTranslated +typedef void (APIENTRYP PFNGLTRANSLATEFPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLTRANSLATEFPROC glad_glTranslatef; +#define glTranslatef glad_glTranslatef +#endif +#ifndef GL_VERSION_1_1 +#define GL_VERSION_1_1 1 +GLAPI int GLAD_GL_VERSION_1_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count); +GLAPI PFNGLDRAWARRAYSPROC glad_glDrawArrays; +#define glDrawArrays glad_glDrawArrays +typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWELEMENTSPROC glad_glDrawElements; +#define glDrawElements glad_glDrawElements +typedef void (APIENTRYP PFNGLGETPOINTERVPROC)(GLenum pname, void **params); +GLAPI PFNGLGETPOINTERVPROC glad_glGetPointerv; +#define glGetPointerv glad_glGetPointerv +typedef void (APIENTRYP PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units); +GLAPI PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; +#define glPolygonOffset glad_glPolygonOffset +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); +GLAPI PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; +#define glCopyTexImage1D glad_glCopyTexImage1D +typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GLAPI PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; +#define glCopyTexImage2D glad_glCopyTexImage2D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); +GLAPI PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; +#define glCopyTexSubImage1D glad_glCopyTexSubImage1D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; +#define glCopyTexSubImage2D glad_glCopyTexSubImage2D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; +#define glTexSubImage1D glad_glTexSubImage1D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; +#define glTexSubImage2D glad_glTexSubImage2D +typedef void (APIENTRYP PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture); +GLAPI PFNGLBINDTEXTUREPROC glad_glBindTexture; +#define glBindTexture glad_glBindTexture +typedef void (APIENTRYP PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint *textures); +GLAPI PFNGLDELETETEXTURESPROC glad_glDeleteTextures; +#define glDeleteTextures glad_glDeleteTextures +typedef void (APIENTRYP PFNGLGENTEXTURESPROC)(GLsizei n, GLuint *textures); +GLAPI PFNGLGENTEXTURESPROC glad_glGenTextures; +#define glGenTextures glad_glGenTextures +typedef GLboolean (APIENTRYP PFNGLISTEXTUREPROC)(GLuint texture); +GLAPI PFNGLISTEXTUREPROC glad_glIsTexture; +#define glIsTexture glad_glIsTexture +typedef void (APIENTRYP PFNGLARRAYELEMENTPROC)(GLint i); +GLAPI PFNGLARRAYELEMENTPROC glad_glArrayElement; +#define glArrayElement glad_glArrayElement +typedef void (APIENTRYP PFNGLCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLCOLORPOINTERPROC glad_glColorPointer; +#define glColorPointer glad_glColorPointer +typedef void (APIENTRYP PFNGLDISABLECLIENTSTATEPROC)(GLenum array); +GLAPI PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState; +#define glDisableClientState glad_glDisableClientState +typedef void (APIENTRYP PFNGLEDGEFLAGPOINTERPROC)(GLsizei stride, const void *pointer); +GLAPI PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer; +#define glEdgeFlagPointer glad_glEdgeFlagPointer +typedef void (APIENTRYP PFNGLENABLECLIENTSTATEPROC)(GLenum array); +GLAPI PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState; +#define glEnableClientState glad_glEnableClientState +typedef void (APIENTRYP PFNGLINDEXPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLINDEXPOINTERPROC glad_glIndexPointer; +#define glIndexPointer glad_glIndexPointer +typedef void (APIENTRYP PFNGLINTERLEAVEDARRAYSPROC)(GLenum format, GLsizei stride, const void *pointer); +GLAPI PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays; +#define glInterleavedArrays glad_glInterleavedArrays +typedef void (APIENTRYP PFNGLNORMALPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLNORMALPOINTERPROC glad_glNormalPointer; +#define glNormalPointer glad_glNormalPointer +typedef void (APIENTRYP PFNGLTEXCOORDPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer; +#define glTexCoordPointer glad_glTexCoordPointer +typedef void (APIENTRYP PFNGLVERTEXPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXPOINTERPROC glad_glVertexPointer; +#define glVertexPointer glad_glVertexPointer +typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTPROC)(GLsizei n, const GLuint *textures, GLboolean *residences); +GLAPI PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident; +#define glAreTexturesResident glad_glAreTexturesResident +typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESPROC)(GLsizei n, const GLuint *textures, const GLfloat *priorities); +GLAPI PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures; +#define glPrioritizeTextures glad_glPrioritizeTextures +typedef void (APIENTRYP PFNGLINDEXUBPROC)(GLubyte c); +GLAPI PFNGLINDEXUBPROC glad_glIndexub; +#define glIndexub glad_glIndexub +typedef void (APIENTRYP PFNGLINDEXUBVPROC)(const GLubyte *c); +GLAPI PFNGLINDEXUBVPROC glad_glIndexubv; +#define glIndexubv glad_glIndexubv +typedef void (APIENTRYP PFNGLPOPCLIENTATTRIBPROC)(void); +GLAPI PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib; +#define glPopClientAttrib glad_glPopClientAttrib +typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBPROC)(GLbitfield mask); +GLAPI PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib; +#define glPushClientAttrib glad_glPushClientAttrib +#endif +#ifndef GL_VERSION_1_2 +#define GL_VERSION_1_2 1 +GLAPI int GLAD_GL_VERSION_1_2; +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices); +GLAPI PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; +#define glDrawRangeElements glad_glDrawRangeElements +typedef void (APIENTRYP PFNGLTEXIMAGE3DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXIMAGE3DPROC glad_glTexImage3D; +#define glTexImage3D glad_glTexImage3D +typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GLAPI PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; +#define glTexSubImage3D glad_glTexSubImage3D +typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GLAPI PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; +#define glCopyTexSubImage3D glad_glCopyTexSubImage3D +#endif +#ifndef GL_VERSION_1_3 +#define GL_VERSION_1_3 1 +GLAPI int GLAD_GL_VERSION_1_3; +typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture); +GLAPI PFNGLACTIVETEXTUREPROC glad_glActiveTexture; +#define glActiveTexture glad_glActiveTexture +typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC)(GLfloat value, GLboolean invert); +GLAPI PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; +#define glSampleCoverage glad_glSampleCoverage +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; +#define glCompressedTexImage3D glad_glCompressedTexImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; +#define glCompressedTexImage2D glad_glCompressedTexImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; +#define glCompressedTexImage1D glad_glCompressedTexImage1D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; +#define glCompressedTexSubImage3D glad_glCompressedTexSubImage3D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; +#define glCompressedTexSubImage2D glad_glCompressedTexSubImage2D +typedef void (APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data); +GLAPI PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; +#define glCompressedTexSubImage1D glad_glCompressedTexSubImage1D +typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC)(GLenum target, GLint level, void *img); +GLAPI PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; +#define glGetCompressedTexImage glad_glGetCompressedTexImage +typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC)(GLenum texture); +GLAPI PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture; +#define glClientActiveTexture glad_glClientActiveTexture +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC)(GLenum target, GLdouble s); +GLAPI PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d; +#define glMultiTexCoord1d glad_glMultiTexCoord1d +typedef void (APIENTRYP PFNGLMULTITEXCOORD1DVPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv; +#define glMultiTexCoord1dv glad_glMultiTexCoord1dv +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FPROC)(GLenum target, GLfloat s); +GLAPI PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f; +#define glMultiTexCoord1f glad_glMultiTexCoord1f +typedef void (APIENTRYP PFNGLMULTITEXCOORD1FVPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv; +#define glMultiTexCoord1fv glad_glMultiTexCoord1fv +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IPROC)(GLenum target, GLint s); +GLAPI PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i; +#define glMultiTexCoord1i glad_glMultiTexCoord1i +typedef void (APIENTRYP PFNGLMULTITEXCOORD1IVPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv; +#define glMultiTexCoord1iv glad_glMultiTexCoord1iv +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SPROC)(GLenum target, GLshort s); +GLAPI PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s; +#define glMultiTexCoord1s glad_glMultiTexCoord1s +typedef void (APIENTRYP PFNGLMULTITEXCOORD1SVPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv; +#define glMultiTexCoord1sv glad_glMultiTexCoord1sv +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DPROC)(GLenum target, GLdouble s, GLdouble t); +GLAPI PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d; +#define glMultiTexCoord2d glad_glMultiTexCoord2d +typedef void (APIENTRYP PFNGLMULTITEXCOORD2DVPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv; +#define glMultiTexCoord2dv glad_glMultiTexCoord2dv +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FPROC)(GLenum target, GLfloat s, GLfloat t); +GLAPI PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f; +#define glMultiTexCoord2f glad_glMultiTexCoord2f +typedef void (APIENTRYP PFNGLMULTITEXCOORD2FVPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv; +#define glMultiTexCoord2fv glad_glMultiTexCoord2fv +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IPROC)(GLenum target, GLint s, GLint t); +GLAPI PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i; +#define glMultiTexCoord2i glad_glMultiTexCoord2i +typedef void (APIENTRYP PFNGLMULTITEXCOORD2IVPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv; +#define glMultiTexCoord2iv glad_glMultiTexCoord2iv +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SPROC)(GLenum target, GLshort s, GLshort t); +GLAPI PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s; +#define glMultiTexCoord2s glad_glMultiTexCoord2s +typedef void (APIENTRYP PFNGLMULTITEXCOORD2SVPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv; +#define glMultiTexCoord2sv glad_glMultiTexCoord2sv +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r); +GLAPI PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d; +#define glMultiTexCoord3d glad_glMultiTexCoord3d +typedef void (APIENTRYP PFNGLMULTITEXCOORD3DVPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv; +#define glMultiTexCoord3dv glad_glMultiTexCoord3dv +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r); +GLAPI PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f; +#define glMultiTexCoord3f glad_glMultiTexCoord3f +typedef void (APIENTRYP PFNGLMULTITEXCOORD3FVPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv; +#define glMultiTexCoord3fv glad_glMultiTexCoord3fv +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IPROC)(GLenum target, GLint s, GLint t, GLint r); +GLAPI PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i; +#define glMultiTexCoord3i glad_glMultiTexCoord3i +typedef void (APIENTRYP PFNGLMULTITEXCOORD3IVPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv; +#define glMultiTexCoord3iv glad_glMultiTexCoord3iv +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SPROC)(GLenum target, GLshort s, GLshort t, GLshort r); +GLAPI PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s; +#define glMultiTexCoord3s glad_glMultiTexCoord3s +typedef void (APIENTRYP PFNGLMULTITEXCOORD3SVPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv; +#define glMultiTexCoord3sv glad_glMultiTexCoord3sv +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DPROC)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); +GLAPI PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d; +#define glMultiTexCoord4d glad_glMultiTexCoord4d +typedef void (APIENTRYP PFNGLMULTITEXCOORD4DVPROC)(GLenum target, const GLdouble *v); +GLAPI PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv; +#define glMultiTexCoord4dv glad_glMultiTexCoord4dv +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FPROC)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +GLAPI PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f; +#define glMultiTexCoord4f glad_glMultiTexCoord4f +typedef void (APIENTRYP PFNGLMULTITEXCOORD4FVPROC)(GLenum target, const GLfloat *v); +GLAPI PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv; +#define glMultiTexCoord4fv glad_glMultiTexCoord4fv +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IPROC)(GLenum target, GLint s, GLint t, GLint r, GLint q); +GLAPI PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i; +#define glMultiTexCoord4i glad_glMultiTexCoord4i +typedef void (APIENTRYP PFNGLMULTITEXCOORD4IVPROC)(GLenum target, const GLint *v); +GLAPI PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv; +#define glMultiTexCoord4iv glad_glMultiTexCoord4iv +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SPROC)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); +GLAPI PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s; +#define glMultiTexCoord4s glad_glMultiTexCoord4s +typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVPROC)(GLenum target, const GLshort *v); +GLAPI PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv; +#define glMultiTexCoord4sv glad_glMultiTexCoord4sv +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFPROC)(const GLfloat *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf; +#define glLoadTransposeMatrixf glad_glLoadTransposeMatrixf +typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDPROC)(const GLdouble *m); +GLAPI PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd; +#define glLoadTransposeMatrixd glad_glLoadTransposeMatrixd +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXFPROC)(const GLfloat *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf; +#define glMultTransposeMatrixf glad_glMultTransposeMatrixf +typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC)(const GLdouble *m); +GLAPI PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd; +#define glMultTransposeMatrixd glad_glMultTransposeMatrixd +#endif +#ifndef GL_VERSION_1_4 +#define GL_VERSION_1_4 1 +GLAPI int GLAD_GL_VERSION_1_4; +typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GLAPI PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; +#define glBlendFuncSeparate glad_glBlendFuncSeparate +typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; +#define glMultiDrawArrays glad_glMultiDrawArrays +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount); +GLAPI PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; +#define glMultiDrawElements glad_glMultiDrawElements +typedef void (APIENTRYP PFNGLPOINTPARAMETERFPROC)(GLenum pname, GLfloat param); +GLAPI PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; +#define glPointParameterf glad_glPointParameterf +typedef void (APIENTRYP PFNGLPOINTPARAMETERFVPROC)(GLenum pname, const GLfloat *params); +GLAPI PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; +#define glPointParameterfv glad_glPointParameterfv +typedef void (APIENTRYP PFNGLPOINTPARAMETERIPROC)(GLenum pname, GLint param); +GLAPI PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; +#define glPointParameteri glad_glPointParameteri +typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC)(GLenum pname, const GLint *params); +GLAPI PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; +#define glPointParameteriv glad_glPointParameteriv +typedef void (APIENTRYP PFNGLFOGCOORDFPROC)(GLfloat coord); +GLAPI PFNGLFOGCOORDFPROC glad_glFogCoordf; +#define glFogCoordf glad_glFogCoordf +typedef void (APIENTRYP PFNGLFOGCOORDFVPROC)(const GLfloat *coord); +GLAPI PFNGLFOGCOORDFVPROC glad_glFogCoordfv; +#define glFogCoordfv glad_glFogCoordfv +typedef void (APIENTRYP PFNGLFOGCOORDDPROC)(GLdouble coord); +GLAPI PFNGLFOGCOORDDPROC glad_glFogCoordd; +#define glFogCoordd glad_glFogCoordd +typedef void (APIENTRYP PFNGLFOGCOORDDVPROC)(const GLdouble *coord); +GLAPI PFNGLFOGCOORDDVPROC glad_glFogCoorddv; +#define glFogCoorddv glad_glFogCoorddv +typedef void (APIENTRYP PFNGLFOGCOORDPOINTERPROC)(GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer; +#define glFogCoordPointer glad_glFogCoordPointer +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue); +GLAPI PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b; +#define glSecondaryColor3b glad_glSecondaryColor3b +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVPROC)(const GLbyte *v); +GLAPI PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv; +#define glSecondaryColor3bv glad_glSecondaryColor3bv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue); +GLAPI PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d; +#define glSecondaryColor3d glad_glSecondaryColor3d +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3DVPROC)(const GLdouble *v); +GLAPI PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv; +#define glSecondaryColor3dv glad_glSecondaryColor3dv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue); +GLAPI PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f; +#define glSecondaryColor3f glad_glSecondaryColor3f +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3FVPROC)(const GLfloat *v); +GLAPI PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv; +#define glSecondaryColor3fv glad_glSecondaryColor3fv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IPROC)(GLint red, GLint green, GLint blue); +GLAPI PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i; +#define glSecondaryColor3i glad_glSecondaryColor3i +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3IVPROC)(const GLint *v); +GLAPI PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv; +#define glSecondaryColor3iv glad_glSecondaryColor3iv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue); +GLAPI PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s; +#define glSecondaryColor3s glad_glSecondaryColor3s +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3SVPROC)(const GLshort *v); +GLAPI PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv; +#define glSecondaryColor3sv glad_glSecondaryColor3sv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue); +GLAPI PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub; +#define glSecondaryColor3ub glad_glSecondaryColor3ub +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UBVPROC)(const GLubyte *v); +GLAPI PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv; +#define glSecondaryColor3ubv glad_glSecondaryColor3ubv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue); +GLAPI PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui; +#define glSecondaryColor3ui glad_glSecondaryColor3ui +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3UIVPROC)(const GLuint *v); +GLAPI PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv; +#define glSecondaryColor3uiv glad_glSecondaryColor3uiv +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue); +GLAPI PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us; +#define glSecondaryColor3us glad_glSecondaryColor3us +typedef void (APIENTRYP PFNGLSECONDARYCOLOR3USVPROC)(const GLushort *v); +GLAPI PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv; +#define glSecondaryColor3usv glad_glSecondaryColor3usv +typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer; +#define glSecondaryColorPointer glad_glSecondaryColorPointer +typedef void (APIENTRYP PFNGLWINDOWPOS2DPROC)(GLdouble x, GLdouble y); +GLAPI PFNGLWINDOWPOS2DPROC glad_glWindowPos2d; +#define glWindowPos2d glad_glWindowPos2d +typedef void (APIENTRYP PFNGLWINDOWPOS2DVPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv; +#define glWindowPos2dv glad_glWindowPos2dv +typedef void (APIENTRYP PFNGLWINDOWPOS2FPROC)(GLfloat x, GLfloat y); +GLAPI PFNGLWINDOWPOS2FPROC glad_glWindowPos2f; +#define glWindowPos2f glad_glWindowPos2f +typedef void (APIENTRYP PFNGLWINDOWPOS2FVPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv; +#define glWindowPos2fv glad_glWindowPos2fv +typedef void (APIENTRYP PFNGLWINDOWPOS2IPROC)(GLint x, GLint y); +GLAPI PFNGLWINDOWPOS2IPROC glad_glWindowPos2i; +#define glWindowPos2i glad_glWindowPos2i +typedef void (APIENTRYP PFNGLWINDOWPOS2IVPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv; +#define glWindowPos2iv glad_glWindowPos2iv +typedef void (APIENTRYP PFNGLWINDOWPOS2SPROC)(GLshort x, GLshort y); +GLAPI PFNGLWINDOWPOS2SPROC glad_glWindowPos2s; +#define glWindowPos2s glad_glWindowPos2s +typedef void (APIENTRYP PFNGLWINDOWPOS2SVPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv; +#define glWindowPos2sv glad_glWindowPos2sv +typedef void (APIENTRYP PFNGLWINDOWPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLWINDOWPOS3DPROC glad_glWindowPos3d; +#define glWindowPos3d glad_glWindowPos3d +typedef void (APIENTRYP PFNGLWINDOWPOS3DVPROC)(const GLdouble *v); +GLAPI PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv; +#define glWindowPos3dv glad_glWindowPos3dv +typedef void (APIENTRYP PFNGLWINDOWPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLWINDOWPOS3FPROC glad_glWindowPos3f; +#define glWindowPos3f glad_glWindowPos3f +typedef void (APIENTRYP PFNGLWINDOWPOS3FVPROC)(const GLfloat *v); +GLAPI PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv; +#define glWindowPos3fv glad_glWindowPos3fv +typedef void (APIENTRYP PFNGLWINDOWPOS3IPROC)(GLint x, GLint y, GLint z); +GLAPI PFNGLWINDOWPOS3IPROC glad_glWindowPos3i; +#define glWindowPos3i glad_glWindowPos3i +typedef void (APIENTRYP PFNGLWINDOWPOS3IVPROC)(const GLint *v); +GLAPI PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv; +#define glWindowPos3iv glad_glWindowPos3iv +typedef void (APIENTRYP PFNGLWINDOWPOS3SPROC)(GLshort x, GLshort y, GLshort z); +GLAPI PFNGLWINDOWPOS3SPROC glad_glWindowPos3s; +#define glWindowPos3s glad_glWindowPos3s +typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC)(const GLshort *v); +GLAPI PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv; +#define glWindowPos3sv glad_glWindowPos3sv +typedef void (APIENTRYP PFNGLBLENDCOLORPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GLAPI PFNGLBLENDCOLORPROC glad_glBlendColor; +#define glBlendColor glad_glBlendColor +typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC)(GLenum mode); +GLAPI PFNGLBLENDEQUATIONPROC glad_glBlendEquation; +#define glBlendEquation glad_glBlendEquation +#endif +#ifndef GL_VERSION_1_5 +#define GL_VERSION_1_5 1 +GLAPI int GLAD_GL_VERSION_1_5; +typedef void (APIENTRYP PFNGLGENQUERIESPROC)(GLsizei n, GLuint *ids); +GLAPI PFNGLGENQUERIESPROC glad_glGenQueries; +#define glGenQueries glad_glGenQueries +typedef void (APIENTRYP PFNGLDELETEQUERIESPROC)(GLsizei n, const GLuint *ids); +GLAPI PFNGLDELETEQUERIESPROC glad_glDeleteQueries; +#define glDeleteQueries glad_glDeleteQueries +typedef GLboolean (APIENTRYP PFNGLISQUERYPROC)(GLuint id); +GLAPI PFNGLISQUERYPROC glad_glIsQuery; +#define glIsQuery glad_glIsQuery +typedef void (APIENTRYP PFNGLBEGINQUERYPROC)(GLenum target, GLuint id); +GLAPI PFNGLBEGINQUERYPROC glad_glBeginQuery; +#define glBeginQuery glad_glBeginQuery +typedef void (APIENTRYP PFNGLENDQUERYPROC)(GLenum target); +GLAPI PFNGLENDQUERYPROC glad_glEndQuery; +#define glEndQuery glad_glEndQuery +typedef void (APIENTRYP PFNGLGETQUERYIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYIVPROC glad_glGetQueryiv; +#define glGetQueryiv glad_glGetQueryiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTIVPROC)(GLuint id, GLenum pname, GLint *params); +GLAPI PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; +#define glGetQueryObjectiv glad_glGetQueryObjectiv +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVPROC)(GLuint id, GLenum pname, GLuint *params); +GLAPI PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; +#define glGetQueryObjectuiv glad_glGetQueryObjectuiv +typedef void (APIENTRYP PFNGLBINDBUFFERPROC)(GLenum target, GLuint buffer); +GLAPI PFNGLBINDBUFFERPROC glad_glBindBuffer; +#define glBindBuffer glad_glBindBuffer +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC)(GLsizei n, const GLuint *buffers); +GLAPI PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; +#define glDeleteBuffers glad_glDeleteBuffers +typedef void (APIENTRYP PFNGLGENBUFFERSPROC)(GLsizei n, GLuint *buffers); +GLAPI PFNGLGENBUFFERSPROC glad_glGenBuffers; +#define glGenBuffers glad_glGenBuffers +typedef GLboolean (APIENTRYP PFNGLISBUFFERPROC)(GLuint buffer); +GLAPI PFNGLISBUFFERPROC glad_glIsBuffer; +#define glIsBuffer glad_glIsBuffer +typedef void (APIENTRYP PFNGLBUFFERDATAPROC)(GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GLAPI PFNGLBUFFERDATAPROC glad_glBufferData; +#define glBufferData glad_glBufferData +typedef void (APIENTRYP PFNGLBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GLAPI PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; +#define glBufferSubData glad_glBufferSubData +typedef void (APIENTRYP PFNGLGETBUFFERSUBDATAPROC)(GLenum target, GLintptr offset, GLsizeiptr size, void *data); +GLAPI PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; +#define glGetBufferSubData glad_glGetBufferSubData +typedef void * (APIENTRYP PFNGLMAPBUFFERPROC)(GLenum target, GLenum access); +GLAPI PFNGLMAPBUFFERPROC glad_glMapBuffer; +#define glMapBuffer glad_glMapBuffer +typedef GLboolean (APIENTRYP PFNGLUNMAPBUFFERPROC)(GLenum target); +GLAPI PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; +#define glUnmapBuffer glad_glUnmapBuffer +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; +#define glGetBufferParameteriv glad_glGetBufferParameteriv +typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC)(GLenum target, GLenum pname, void **params); +GLAPI PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; +#define glGetBufferPointerv glad_glGetBufferPointerv +#endif +#ifndef GL_VERSION_2_0 +#define GL_VERSION_2_0 1 +GLAPI int GLAD_GL_VERSION_2_0; +typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC)(GLenum modeRGB, GLenum modeAlpha); +GLAPI PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; +#define glBlendEquationSeparate glad_glBlendEquationSeparate +typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC)(GLsizei n, const GLenum *bufs); +GLAPI PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; +#define glDrawBuffers glad_glDrawBuffers +typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEPROC)(GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GLAPI PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; +#define glStencilOpSeparate glad_glStencilOpSeparate +typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC)(GLenum face, GLenum func, GLint ref, GLuint mask); +GLAPI PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; +#define glStencilFuncSeparate glad_glStencilFuncSeparate +typedef void (APIENTRYP PFNGLSTENCILMASKSEPARATEPROC)(GLenum face, GLuint mask); +GLAPI PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; +#define glStencilMaskSeparate glad_glStencilMaskSeparate +typedef void (APIENTRYP PFNGLATTACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLATTACHSHADERPROC glad_glAttachShader; +#define glAttachShader glad_glAttachShader +typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONPROC)(GLuint program, GLuint index, const GLchar *name); +GLAPI PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; +#define glBindAttribLocation glad_glBindAttribLocation +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC)(GLuint shader); +GLAPI PFNGLCOMPILESHADERPROC glad_glCompileShader; +#define glCompileShader glad_glCompileShader +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC)(void); +GLAPI PFNGLCREATEPROGRAMPROC glad_glCreateProgram; +#define glCreateProgram glad_glCreateProgram +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC)(GLenum type); +GLAPI PFNGLCREATESHADERPROC glad_glCreateShader; +#define glCreateShader glad_glCreateShader +typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC)(GLuint program); +GLAPI PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; +#define glDeleteProgram glad_glDeleteProgram +typedef void (APIENTRYP PFNGLDELETESHADERPROC)(GLuint shader); +GLAPI PFNGLDELETESHADERPROC glad_glDeleteShader; +#define glDeleteShader glad_glDeleteShader +typedef void (APIENTRYP PFNGLDETACHSHADERPROC)(GLuint program, GLuint shader); +GLAPI PFNGLDETACHSHADERPROC glad_glDetachShader; +#define glDetachShader glad_glDetachShader +typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; +#define glDisableVertexAttribArray glad_glDisableVertexAttribArray +typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC)(GLuint index); +GLAPI PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; +#define glEnableVertexAttribArray glad_glEnableVertexAttribArray +typedef void (APIENTRYP PFNGLGETACTIVEATTRIBPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; +#define glGetActiveAttrib glad_glGetActiveAttrib +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; +#define glGetActiveUniform glad_glGetActiveUniform +typedef void (APIENTRYP PFNGLGETATTACHEDSHADERSPROC)(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GLAPI PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; +#define glGetAttachedShaders glad_glGetAttachedShaders +typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; +#define glGetAttribLocation glad_glGetAttribLocation +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC)(GLuint program, GLenum pname, GLint *params); +GLAPI PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; +#define glGetProgramiv glad_glGetProgramiv +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC)(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; +#define glGetProgramInfoLog glad_glGetProgramInfoLog +typedef void (APIENTRYP PFNGLGETSHADERIVPROC)(GLuint shader, GLenum pname, GLint *params); +GLAPI PFNGLGETSHADERIVPROC glad_glGetShaderiv; +#define glGetShaderiv glad_glGetShaderiv +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GLAPI PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; +#define glGetShaderInfoLog glad_glGetShaderInfoLog +typedef void (APIENTRYP PFNGLGETSHADERSOURCEPROC)(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GLAPI PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; +#define glGetShaderSource glad_glGetShaderSource +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; +#define glGetUniformLocation glad_glGetUniformLocation +typedef void (APIENTRYP PFNGLGETUNIFORMFVPROC)(GLuint program, GLint location, GLfloat *params); +GLAPI PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; +#define glGetUniformfv glad_glGetUniformfv +typedef void (APIENTRYP PFNGLGETUNIFORMIVPROC)(GLuint program, GLint location, GLint *params); +GLAPI PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; +#define glGetUniformiv glad_glGetUniformiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBDVPROC)(GLuint index, GLenum pname, GLdouble *params); +GLAPI PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; +#define glGetVertexAttribdv glad_glGetVertexAttribdv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBFVPROC)(GLuint index, GLenum pname, GLfloat *params); +GLAPI PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; +#define glGetVertexAttribfv glad_glGetVertexAttribfv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; +#define glGetVertexAttribiv glad_glGetVertexAttribiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC)(GLuint index, GLenum pname, void **pointer); +GLAPI PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; +#define glGetVertexAttribPointerv glad_glGetVertexAttribPointerv +typedef GLboolean (APIENTRYP PFNGLISPROGRAMPROC)(GLuint program); +GLAPI PFNGLISPROGRAMPROC glad_glIsProgram; +#define glIsProgram glad_glIsProgram +typedef GLboolean (APIENTRYP PFNGLISSHADERPROC)(GLuint shader); +GLAPI PFNGLISSHADERPROC glad_glIsShader; +#define glIsShader glad_glIsShader +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC)(GLuint program); +GLAPI PFNGLLINKPROGRAMPROC glad_glLinkProgram; +#define glLinkProgram glad_glLinkProgram +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC)(GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GLAPI PFNGLSHADERSOURCEPROC glad_glShaderSource; +#define glShaderSource glad_glShaderSource +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC)(GLuint program); +GLAPI PFNGLUSEPROGRAMPROC glad_glUseProgram; +#define glUseProgram glad_glUseProgram +typedef void (APIENTRYP PFNGLUNIFORM1FPROC)(GLint location, GLfloat v0); +GLAPI PFNGLUNIFORM1FPROC glad_glUniform1f; +#define glUniform1f glad_glUniform1f +typedef void (APIENTRYP PFNGLUNIFORM2FPROC)(GLint location, GLfloat v0, GLfloat v1); +GLAPI PFNGLUNIFORM2FPROC glad_glUniform2f; +#define glUniform2f glad_glUniform2f +typedef void (APIENTRYP PFNGLUNIFORM3FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GLAPI PFNGLUNIFORM3FPROC glad_glUniform3f; +#define glUniform3f glad_glUniform3f +typedef void (APIENTRYP PFNGLUNIFORM4FPROC)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GLAPI PFNGLUNIFORM4FPROC glad_glUniform4f; +#define glUniform4f glad_glUniform4f +typedef void (APIENTRYP PFNGLUNIFORM1IPROC)(GLint location, GLint v0); +GLAPI PFNGLUNIFORM1IPROC glad_glUniform1i; +#define glUniform1i glad_glUniform1i +typedef void (APIENTRYP PFNGLUNIFORM2IPROC)(GLint location, GLint v0, GLint v1); +GLAPI PFNGLUNIFORM2IPROC glad_glUniform2i; +#define glUniform2i glad_glUniform2i +typedef void (APIENTRYP PFNGLUNIFORM3IPROC)(GLint location, GLint v0, GLint v1, GLint v2); +GLAPI PFNGLUNIFORM3IPROC glad_glUniform3i; +#define glUniform3i glad_glUniform3i +typedef void (APIENTRYP PFNGLUNIFORM4IPROC)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GLAPI PFNGLUNIFORM4IPROC glad_glUniform4i; +#define glUniform4i glad_glUniform4i +typedef void (APIENTRYP PFNGLUNIFORM1FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM1FVPROC glad_glUniform1fv; +#define glUniform1fv glad_glUniform1fv +typedef void (APIENTRYP PFNGLUNIFORM2FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM2FVPROC glad_glUniform2fv; +#define glUniform2fv glad_glUniform2fv +typedef void (APIENTRYP PFNGLUNIFORM3FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM3FVPROC glad_glUniform3fv; +#define glUniform3fv glad_glUniform3fv +typedef void (APIENTRYP PFNGLUNIFORM4FVPROC)(GLint location, GLsizei count, const GLfloat *value); +GLAPI PFNGLUNIFORM4FVPROC glad_glUniform4fv; +#define glUniform4fv glad_glUniform4fv +typedef void (APIENTRYP PFNGLUNIFORM1IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM1IVPROC glad_glUniform1iv; +#define glUniform1iv glad_glUniform1iv +typedef void (APIENTRYP PFNGLUNIFORM2IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM2IVPROC glad_glUniform2iv; +#define glUniform2iv glad_glUniform2iv +typedef void (APIENTRYP PFNGLUNIFORM3IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM3IVPROC glad_glUniform3iv; +#define glUniform3iv glad_glUniform3iv +typedef void (APIENTRYP PFNGLUNIFORM4IVPROC)(GLint location, GLsizei count, const GLint *value); +GLAPI PFNGLUNIFORM4IVPROC glad_glUniform4iv; +#define glUniform4iv glad_glUniform4iv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; +#define glUniformMatrix2fv glad_glUniformMatrix2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; +#define glUniformMatrix3fv glad_glUniformMatrix3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; +#define glUniformMatrix4fv glad_glUniformMatrix4fv +typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC)(GLuint program); +GLAPI PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; +#define glValidateProgram glad_glValidateProgram +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DPROC)(GLuint index, GLdouble x); +GLAPI PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; +#define glVertexAttrib1d glad_glVertexAttrib1d +typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; +#define glVertexAttrib1dv glad_glVertexAttrib1dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FPROC)(GLuint index, GLfloat x); +GLAPI PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; +#define glVertexAttrib1f glad_glVertexAttrib1f +typedef void (APIENTRYP PFNGLVERTEXATTRIB1FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; +#define glVertexAttrib1fv glad_glVertexAttrib1fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SPROC)(GLuint index, GLshort x); +GLAPI PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; +#define glVertexAttrib1s glad_glVertexAttrib1s +typedef void (APIENTRYP PFNGLVERTEXATTRIB1SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; +#define glVertexAttrib1sv glad_glVertexAttrib1sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DPROC)(GLuint index, GLdouble x, GLdouble y); +GLAPI PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; +#define glVertexAttrib2d glad_glVertexAttrib2d +typedef void (APIENTRYP PFNGLVERTEXATTRIB2DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; +#define glVertexAttrib2dv glad_glVertexAttrib2dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FPROC)(GLuint index, GLfloat x, GLfloat y); +GLAPI PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; +#define glVertexAttrib2f glad_glVertexAttrib2f +typedef void (APIENTRYP PFNGLVERTEXATTRIB2FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; +#define glVertexAttrib2fv glad_glVertexAttrib2fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SPROC)(GLuint index, GLshort x, GLshort y); +GLAPI PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; +#define glVertexAttrib2s glad_glVertexAttrib2s +typedef void (APIENTRYP PFNGLVERTEXATTRIB2SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; +#define glVertexAttrib2sv glad_glVertexAttrib2sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z); +GLAPI PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; +#define glVertexAttrib3d glad_glVertexAttrib3d +typedef void (APIENTRYP PFNGLVERTEXATTRIB3DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; +#define glVertexAttrib3dv glad_glVertexAttrib3dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z); +GLAPI PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; +#define glVertexAttrib3f glad_glVertexAttrib3f +typedef void (APIENTRYP PFNGLVERTEXATTRIB3FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; +#define glVertexAttrib3fv glad_glVertexAttrib3fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SPROC)(GLuint index, GLshort x, GLshort y, GLshort z); +GLAPI PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; +#define glVertexAttrib3s glad_glVertexAttrib3s +typedef void (APIENTRYP PFNGLVERTEXATTRIB3SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; +#define glVertexAttrib3sv glad_glVertexAttrib3sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NBVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; +#define glVertexAttrib4Nbv glad_glVertexAttrib4Nbv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NIVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; +#define glVertexAttrib4Niv glad_glVertexAttrib4Niv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NSVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; +#define glVertexAttrib4Nsv glad_glVertexAttrib4Nsv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBPROC)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); +GLAPI PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; +#define glVertexAttrib4Nub glad_glVertexAttrib4Nub +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; +#define glVertexAttrib4Nubv glad_glVertexAttrib4Nubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; +#define glVertexAttrib4Nuiv glad_glVertexAttrib4Nuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4NUSVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; +#define glVertexAttrib4Nusv glad_glVertexAttrib4Nusv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; +#define glVertexAttrib4bv glad_glVertexAttrib4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DPROC)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); +GLAPI PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; +#define glVertexAttrib4d glad_glVertexAttrib4d +typedef void (APIENTRYP PFNGLVERTEXATTRIB4DVPROC)(GLuint index, const GLdouble *v); +GLAPI PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; +#define glVertexAttrib4dv glad_glVertexAttrib4dv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FPROC)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GLAPI PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; +#define glVertexAttrib4f glad_glVertexAttrib4f +typedef void (APIENTRYP PFNGLVERTEXATTRIB4FVPROC)(GLuint index, const GLfloat *v); +GLAPI PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; +#define glVertexAttrib4fv glad_glVertexAttrib4fv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; +#define glVertexAttrib4iv glad_glVertexAttrib4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SPROC)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); +GLAPI PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; +#define glVertexAttrib4s glad_glVertexAttrib4s +typedef void (APIENTRYP PFNGLVERTEXATTRIB4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; +#define glVertexAttrib4sv glad_glVertexAttrib4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; +#define glVertexAttrib4ubv glad_glVertexAttrib4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; +#define glVertexAttrib4uiv glad_glVertexAttrib4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIB4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; +#define glVertexAttrib4usv glad_glVertexAttrib4usv +typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; +#define glVertexAttribPointer glad_glVertexAttribPointer +#endif +#ifndef GL_VERSION_2_1 +#define GL_VERSION_2_1 1 +GLAPI int GLAD_GL_VERSION_2_1; +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; +#define glUniformMatrix2x3fv glad_glUniformMatrix2x3fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; +#define glUniformMatrix3x2fv glad_glUniformMatrix3x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; +#define glUniformMatrix2x4fv glad_glUniformMatrix2x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; +#define glUniformMatrix4x2fv glad_glUniformMatrix4x2fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; +#define glUniformMatrix3x4fv glad_glUniformMatrix3x4fv +typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GLAPI PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; +#define glUniformMatrix4x3fv glad_glUniformMatrix4x3fv +#endif +#ifndef GL_VERSION_3_0 +#define GL_VERSION_3_0 1 +GLAPI int GLAD_GL_VERSION_3_0; +typedef void (APIENTRYP PFNGLCOLORMASKIPROC)(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GLAPI PFNGLCOLORMASKIPROC glad_glColorMaski; +#define glColorMaski glad_glColorMaski +typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC)(GLenum target, GLuint index, GLboolean *data); +GLAPI PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; +#define glGetBooleani_v glad_glGetBooleani_v +typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC)(GLenum target, GLuint index, GLint *data); +GLAPI PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; +#define glGetIntegeri_v glad_glGetIntegeri_v +typedef void (APIENTRYP PFNGLENABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLENABLEIPROC glad_glEnablei; +#define glEnablei glad_glEnablei +typedef void (APIENTRYP PFNGLDISABLEIPROC)(GLenum target, GLuint index); +GLAPI PFNGLDISABLEIPROC glad_glDisablei; +#define glDisablei glad_glDisablei +typedef GLboolean (APIENTRYP PFNGLISENABLEDIPROC)(GLenum target, GLuint index); +GLAPI PFNGLISENABLEDIPROC glad_glIsEnabledi; +#define glIsEnabledi glad_glIsEnabledi +typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKPROC)(GLenum primitiveMode); +GLAPI PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; +#define glBeginTransformFeedback glad_glBeginTransformFeedback +typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKPROC)(void); +GLAPI PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; +#define glEndTransformFeedback glad_glEndTransformFeedback +typedef void (APIENTRYP PFNGLBINDBUFFERRANGEPROC)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); +GLAPI PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; +#define glBindBufferRange glad_glBindBufferRange +typedef void (APIENTRYP PFNGLBINDBUFFERBASEPROC)(GLenum target, GLuint index, GLuint buffer); +GLAPI PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; +#define glBindBufferBase glad_glBindBufferBase +typedef void (APIENTRYP PFNGLTRANSFORMFEEDBACKVARYINGSPROC)(GLuint program, GLsizei count, const GLchar *const*varyings, GLenum bufferMode); +GLAPI PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; +#define glTransformFeedbackVaryings glad_glTransformFeedbackVaryings +typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name); +GLAPI PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; +#define glGetTransformFeedbackVarying glad_glGetTransformFeedbackVarying +typedef void (APIENTRYP PFNGLCLAMPCOLORPROC)(GLenum target, GLenum clamp); +GLAPI PFNGLCLAMPCOLORPROC glad_glClampColor; +#define glClampColor glad_glClampColor +typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERPROC)(GLuint id, GLenum mode); +GLAPI PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; +#define glBeginConditionalRender glad_glBeginConditionalRender +typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERPROC)(void); +GLAPI PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; +#define glEndConditionalRender glad_glEndConditionalRender +typedef void (APIENTRYP PFNGLVERTEXATTRIBIPOINTERPROC)(GLuint index, GLint size, GLenum type, GLsizei stride, const void *pointer); +GLAPI PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; +#define glVertexAttribIPointer glad_glVertexAttribIPointer +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIIVPROC)(GLuint index, GLenum pname, GLint *params); +GLAPI PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; +#define glGetVertexAttribIiv glad_glGetVertexAttribIiv +typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVPROC)(GLuint index, GLenum pname, GLuint *params); +GLAPI PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; +#define glGetVertexAttribIuiv glad_glGetVertexAttribIuiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IPROC)(GLuint index, GLint x); +GLAPI PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; +#define glVertexAttribI1i glad_glVertexAttribI1i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IPROC)(GLuint index, GLint x, GLint y); +GLAPI PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; +#define glVertexAttribI2i glad_glVertexAttribI2i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IPROC)(GLuint index, GLint x, GLint y, GLint z); +GLAPI PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; +#define glVertexAttribI3i glad_glVertexAttribI3i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IPROC)(GLuint index, GLint x, GLint y, GLint z, GLint w); +GLAPI PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; +#define glVertexAttribI4i glad_glVertexAttribI4i +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIPROC)(GLuint index, GLuint x); +GLAPI PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; +#define glVertexAttribI1ui glad_glVertexAttribI1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIPROC)(GLuint index, GLuint x, GLuint y); +GLAPI PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; +#define glVertexAttribI2ui glad_glVertexAttribI2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z); +GLAPI PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; +#define glVertexAttribI3ui glad_glVertexAttribI3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIPROC)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); +GLAPI PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; +#define glVertexAttribI4ui glad_glVertexAttribI4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; +#define glVertexAttribI1iv glad_glVertexAttribI1iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; +#define glVertexAttribI2iv glad_glVertexAttribI2iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; +#define glVertexAttribI3iv glad_glVertexAttribI3iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4IVPROC)(GLuint index, const GLint *v); +GLAPI PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; +#define glVertexAttribI4iv glad_glVertexAttribI4iv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI1UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; +#define glVertexAttribI1uiv glad_glVertexAttribI1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI2UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; +#define glVertexAttribI2uiv glad_glVertexAttribI2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI3UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; +#define glVertexAttribI3uiv glad_glVertexAttribI3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UIVPROC)(GLuint index, const GLuint *v); +GLAPI PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; +#define glVertexAttribI4uiv glad_glVertexAttribI4uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4BVPROC)(GLuint index, const GLbyte *v); +GLAPI PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; +#define glVertexAttribI4bv glad_glVertexAttribI4bv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4SVPROC)(GLuint index, const GLshort *v); +GLAPI PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; +#define glVertexAttribI4sv glad_glVertexAttribI4sv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4UBVPROC)(GLuint index, const GLubyte *v); +GLAPI PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; +#define glVertexAttribI4ubv glad_glVertexAttribI4ubv +typedef void (APIENTRYP PFNGLVERTEXATTRIBI4USVPROC)(GLuint index, const GLushort *v); +GLAPI PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; +#define glVertexAttribI4usv glad_glVertexAttribI4usv +typedef void (APIENTRYP PFNGLGETUNIFORMUIVPROC)(GLuint program, GLint location, GLuint *params); +GLAPI PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; +#define glGetUniformuiv glad_glGetUniformuiv +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONPROC)(GLuint program, GLuint color, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; +#define glBindFragDataLocation glad_glBindFragDataLocation +typedef GLint (APIENTRYP PFNGLGETFRAGDATALOCATIONPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; +#define glGetFragDataLocation glad_glGetFragDataLocation +typedef void (APIENTRYP PFNGLUNIFORM1UIPROC)(GLint location, GLuint v0); +GLAPI PFNGLUNIFORM1UIPROC glad_glUniform1ui; +#define glUniform1ui glad_glUniform1ui +typedef void (APIENTRYP PFNGLUNIFORM2UIPROC)(GLint location, GLuint v0, GLuint v1); +GLAPI PFNGLUNIFORM2UIPROC glad_glUniform2ui; +#define glUniform2ui glad_glUniform2ui +typedef void (APIENTRYP PFNGLUNIFORM3UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2); +GLAPI PFNGLUNIFORM3UIPROC glad_glUniform3ui; +#define glUniform3ui glad_glUniform3ui +typedef void (APIENTRYP PFNGLUNIFORM4UIPROC)(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GLAPI PFNGLUNIFORM4UIPROC glad_glUniform4ui; +#define glUniform4ui glad_glUniform4ui +typedef void (APIENTRYP PFNGLUNIFORM1UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; +#define glUniform1uiv glad_glUniform1uiv +typedef void (APIENTRYP PFNGLUNIFORM2UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; +#define glUniform2uiv glad_glUniform2uiv +typedef void (APIENTRYP PFNGLUNIFORM3UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; +#define glUniform3uiv glad_glUniform3uiv +typedef void (APIENTRYP PFNGLUNIFORM4UIVPROC)(GLint location, GLsizei count, const GLuint *value); +GLAPI PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; +#define glUniform4uiv glad_glUniform4uiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, const GLint *params); +GLAPI PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; +#define glTexParameterIiv glad_glTexParameterIiv +typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, const GLuint *params); +GLAPI PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; +#define glTexParameterIuiv glad_glTexParameterIuiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; +#define glGetTexParameterIiv glad_glGetTexParameterIiv +typedef void (APIENTRYP PFNGLGETTEXPARAMETERIUIVPROC)(GLenum target, GLenum pname, GLuint *params); +GLAPI PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; +#define glGetTexParameterIuiv glad_glGetTexParameterIuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERIVPROC)(GLenum buffer, GLint drawbuffer, const GLint *value); +GLAPI PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; +#define glClearBufferiv glad_glClearBufferiv +typedef void (APIENTRYP PFNGLCLEARBUFFERUIVPROC)(GLenum buffer, GLint drawbuffer, const GLuint *value); +GLAPI PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; +#define glClearBufferuiv glad_glClearBufferuiv +typedef void (APIENTRYP PFNGLCLEARBUFFERFVPROC)(GLenum buffer, GLint drawbuffer, const GLfloat *value); +GLAPI PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; +#define glClearBufferfv glad_glClearBufferfv +typedef void (APIENTRYP PFNGLCLEARBUFFERFIPROC)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); +GLAPI PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; +#define glClearBufferfi glad_glClearBufferfi +typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC)(GLenum name, GLuint index); +GLAPI PFNGLGETSTRINGIPROC glad_glGetStringi; +#define glGetStringi glad_glGetStringi +typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC)(GLuint renderbuffer); +GLAPI PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; +#define glIsRenderbuffer glad_glIsRenderbuffer +typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC)(GLenum target, GLuint renderbuffer); +GLAPI PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; +#define glBindRenderbuffer glad_glBindRenderbuffer +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSPROC)(GLsizei n, const GLuint *renderbuffers); +GLAPI PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; +#define glDeleteRenderbuffers glad_glDeleteRenderbuffers +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSPROC)(GLsizei n, GLuint *renderbuffers); +GLAPI PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; +#define glGenRenderbuffers glad_glGenRenderbuffers +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; +#define glRenderbufferStorage glad_glRenderbufferStorage +typedef void (APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC)(GLenum target, GLenum pname, GLint *params); +GLAPI PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; +#define glGetRenderbufferParameteriv glad_glGetRenderbufferParameteriv +typedef GLboolean (APIENTRYP PFNGLISFRAMEBUFFERPROC)(GLuint framebuffer); +GLAPI PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; +#define glIsFramebuffer glad_glIsFramebuffer +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFERPROC)(GLenum target, GLuint framebuffer); +GLAPI PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; +#define glBindFramebuffer glad_glBindFramebuffer +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC)(GLsizei n, const GLuint *framebuffers); +GLAPI PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; +#define glDeleteFramebuffers glad_glDeleteFramebuffers +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSPROC)(GLsizei n, GLuint *framebuffers); +GLAPI PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; +#define glGenFramebuffers glad_glGenFramebuffers +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC)(GLenum target); +GLAPI PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; +#define glCheckFramebufferStatus glad_glCheckFramebufferStatus +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE1DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; +#define glFramebufferTexture1D glad_glFramebufferTexture1D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; +#define glFramebufferTexture2D glad_glFramebufferTexture2D +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DPROC)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +GLAPI PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; +#define glFramebufferTexture3D glad_glFramebufferTexture3D +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GLAPI PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; +#define glFramebufferRenderbuffer glad_glFramebufferRenderbuffer +typedef void (APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)(GLenum target, GLenum attachment, GLenum pname, GLint *params); +GLAPI PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; +#define glGetFramebufferAttachmentParameteriv glad_glGetFramebufferAttachmentParameteriv +typedef void (APIENTRYP PFNGLGENERATEMIPMAPPROC)(GLenum target); +GLAPI PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; +#define glGenerateMipmap glad_glGenerateMipmap +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFERPROC)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +GLAPI PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; +#define glBlitFramebuffer glad_glBlitFramebuffer +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GLAPI PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; +#define glRenderbufferStorageMultisample glad_glRenderbufferStorageMultisample +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); +GLAPI PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; +#define glFramebufferTextureLayer glad_glFramebufferTextureLayer +typedef void * (APIENTRYP PFNGLMAPBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; +#define glMapBufferRange glad_glMapBufferRange +typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC)(GLenum target, GLintptr offset, GLsizeiptr length); +GLAPI PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; +#define glFlushMappedBufferRange glad_glFlushMappedBufferRange +typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; +#define glBindVertexArray glad_glBindVertexArray +typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC)(GLsizei n, const GLuint *arrays); +GLAPI PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; +#define glDeleteVertexArrays glad_glDeleteVertexArrays +typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC)(GLsizei n, GLuint *arrays); +GLAPI PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; +#define glGenVertexArrays glad_glGenVertexArrays +typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC)(GLuint array); +GLAPI PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; +#define glIsVertexArray glad_glIsVertexArray +#endif +#ifndef GL_VERSION_3_1 +#define GL_VERSION_3_1 1 +GLAPI int GLAD_GL_VERSION_3_1; +typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC)(GLenum mode, GLint first, GLsizei count, GLsizei instancecount); +GLAPI PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; +#define glDrawArraysInstanced glad_glDrawArraysInstanced +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount); +GLAPI PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; +#define glDrawElementsInstanced glad_glDrawElementsInstanced +typedef void (APIENTRYP PFNGLTEXBUFFERPROC)(GLenum target, GLenum internalformat, GLuint buffer); +GLAPI PFNGLTEXBUFFERPROC glad_glTexBuffer; +#define glTexBuffer glad_glTexBuffer +typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC)(GLuint index); +GLAPI PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; +#define glPrimitiveRestartIndex glad_glPrimitiveRestartIndex +typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +GLAPI PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; +#define glCopyBufferSubData glad_glCopyBufferSubData +typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC)(GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices); +GLAPI PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; +#define glGetUniformIndices glad_glGetUniformIndices +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC)(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; +#define glGetActiveUniformsiv glad_glGetActiveUniformsiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMNAMEPROC)(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName); +GLAPI PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; +#define glGetActiveUniformName glad_glGetActiveUniformName +typedef GLuint (APIENTRYP PFNGLGETUNIFORMBLOCKINDEXPROC)(GLuint program, const GLchar *uniformBlockName); +GLAPI PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; +#define glGetUniformBlockIndex glad_glGetUniformBlockIndex +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKIVPROC)(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; +#define glGetActiveUniformBlockiv glad_glGetActiveUniformBlockiv +typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName); +GLAPI PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; +#define glGetActiveUniformBlockName glad_glGetActiveUniformBlockName +typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC)(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); +GLAPI PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; +#define glUniformBlockBinding glad_glUniformBlockBinding +#endif +#ifndef GL_VERSION_3_2 +#define GL_VERSION_3_2 1 +GLAPI int GLAD_GL_VERSION_3_2; +typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; +#define glDrawElementsBaseVertex glad_glDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GLAPI PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; +#define glDrawRangeElementsBaseVertex glad_glDrawRangeElementsBaseVertex +typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GLAPI PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; +#define glDrawElementsInstancedBaseVertex glad_glDrawElementsInstancedBaseVertex +typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)(GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +GLAPI PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; +#define glMultiDrawElementsBaseVertex glad_glMultiDrawElementsBaseVertex +typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC)(GLenum mode); +GLAPI PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; +#define glProvokingVertex glad_glProvokingVertex +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC)(GLenum condition, GLbitfield flags); +GLAPI PFNGLFENCESYNCPROC glad_glFenceSync; +#define glFenceSync glad_glFenceSync +typedef GLboolean (APIENTRYP PFNGLISSYNCPROC)(GLsync sync); +GLAPI PFNGLISSYNCPROC glad_glIsSync; +#define glIsSync glad_glIsSync +typedef void (APIENTRYP PFNGLDELETESYNCPROC)(GLsync sync); +GLAPI PFNGLDELETESYNCPROC glad_glDeleteSync; +#define glDeleteSync glad_glDeleteSync +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; +#define glClientWaitSync glad_glClientWaitSync +typedef void (APIENTRYP PFNGLWAITSYNCPROC)(GLsync sync, GLbitfield flags, GLuint64 timeout); +GLAPI PFNGLWAITSYNCPROC glad_glWaitSync; +#define glWaitSync glad_glWaitSync +typedef void (APIENTRYP PFNGLGETINTEGER64VPROC)(GLenum pname, GLint64 *data); +GLAPI PFNGLGETINTEGER64VPROC glad_glGetInteger64v; +#define glGetInteger64v glad_glGetInteger64v +typedef void (APIENTRYP PFNGLGETSYNCIVPROC)(GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +GLAPI PFNGLGETSYNCIVPROC glad_glGetSynciv; +#define glGetSynciv glad_glGetSynciv +typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC)(GLenum target, GLuint index, GLint64 *data); +GLAPI PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; +#define glGetInteger64i_v glad_glGetInteger64i_v +typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC)(GLenum target, GLenum pname, GLint64 *params); +GLAPI PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; +#define glGetBufferParameteri64v glad_glGetBufferParameteri64v +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC)(GLenum target, GLenum attachment, GLuint texture, GLint level); +GLAPI PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; +#define glFramebufferTexture glad_glFramebufferTexture +typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; +#define glTexImage2DMultisample glad_glTexImage2DMultisample +typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +GLAPI PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; +#define glTexImage3DMultisample glad_glTexImage3DMultisample +typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC)(GLenum pname, GLuint index, GLfloat *val); +GLAPI PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; +#define glGetMultisamplefv glad_glGetMultisamplefv +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC)(GLuint maskNumber, GLbitfield mask); +GLAPI PFNGLSAMPLEMASKIPROC glad_glSampleMaski; +#define glSampleMaski glad_glSampleMaski +#endif +#ifndef GL_VERSION_3_3 +#define GL_VERSION_3_3 1 +GLAPI int GLAD_GL_VERSION_3_3; +typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GLAPI PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; +#define glBindFragDataLocationIndexed glad_glBindFragDataLocationIndexed +typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC)(GLuint program, const GLchar *name); +GLAPI PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; +#define glGetFragDataIndex glad_glGetFragDataIndex +typedef void (APIENTRYP PFNGLGENSAMPLERSPROC)(GLsizei count, GLuint *samplers); +GLAPI PFNGLGENSAMPLERSPROC glad_glGenSamplers; +#define glGenSamplers glad_glGenSamplers +typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC)(GLsizei count, const GLuint *samplers); +GLAPI PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; +#define glDeleteSamplers glad_glDeleteSamplers +typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC)(GLuint sampler); +GLAPI PFNGLISSAMPLERPROC glad_glIsSampler; +#define glIsSampler glad_glIsSampler +typedef void (APIENTRYP PFNGLBINDSAMPLERPROC)(GLuint unit, GLuint sampler); +GLAPI PFNGLBINDSAMPLERPROC glad_glBindSampler; +#define glBindSampler glad_glBindSampler +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC)(GLuint sampler, GLenum pname, GLint param); +GLAPI PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; +#define glSamplerParameteri glad_glSamplerParameteri +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; +#define glSamplerParameteriv glad_glSamplerParameteriv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC)(GLuint sampler, GLenum pname, GLfloat param); +GLAPI PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; +#define glSamplerParameterf glad_glSamplerParameterf +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, const GLfloat *param); +GLAPI PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; +#define glSamplerParameterfv glad_glSamplerParameterfv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, const GLint *param); +GLAPI PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; +#define glSamplerParameterIiv glad_glSamplerParameterIiv +typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, const GLuint *param); +GLAPI PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; +#define glSamplerParameterIuiv glad_glSamplerParameterIuiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; +#define glGetSamplerParameteriv glad_glGetSamplerParameteriv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC)(GLuint sampler, GLenum pname, GLint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; +#define glGetSamplerParameterIiv glad_glGetSamplerParameterIiv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC)(GLuint sampler, GLenum pname, GLfloat *params); +GLAPI PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; +#define glGetSamplerParameterfv glad_glGetSamplerParameterfv +typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVPROC)(GLuint sampler, GLenum pname, GLuint *params); +GLAPI PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; +#define glGetSamplerParameterIuiv glad_glGetSamplerParameterIuiv +typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC)(GLuint id, GLenum target); +GLAPI PFNGLQUERYCOUNTERPROC glad_glQueryCounter; +#define glQueryCounter glad_glQueryCounter +typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC)(GLuint id, GLenum pname, GLint64 *params); +GLAPI PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; +#define glGetQueryObjecti64v glad_glGetQueryObjecti64v +typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC)(GLuint id, GLenum pname, GLuint64 *params); +GLAPI PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; +#define glGetQueryObjectui64v glad_glGetQueryObjectui64v +typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORPROC)(GLuint index, GLuint divisor); +GLAPI PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; +#define glVertexAttribDivisor glad_glVertexAttribDivisor +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; +#define glVertexAttribP1ui glad_glVertexAttribP1ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; +#define glVertexAttribP1uiv glad_glVertexAttribP1uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; +#define glVertexAttribP2ui glad_glVertexAttribP2ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; +#define glVertexAttribP2uiv glad_glVertexAttribP2uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; +#define glVertexAttribP3ui glad_glVertexAttribP3ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; +#define glVertexAttribP3uiv glad_glVertexAttribP3uiv +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC)(GLuint index, GLenum type, GLboolean normalized, GLuint value); +GLAPI PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; +#define glVertexAttribP4ui glad_glVertexAttribP4ui +typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC)(GLuint index, GLenum type, GLboolean normalized, const GLuint *value); +GLAPI PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; +#define glVertexAttribP4uiv glad_glVertexAttribP4uiv +typedef void (APIENTRYP PFNGLVERTEXP2UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP2UIPROC glad_glVertexP2ui; +#define glVertexP2ui glad_glVertexP2ui +typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; +#define glVertexP2uiv glad_glVertexP2uiv +typedef void (APIENTRYP PFNGLVERTEXP3UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP3UIPROC glad_glVertexP3ui; +#define glVertexP3ui glad_glVertexP3ui +typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; +#define glVertexP3uiv glad_glVertexP3uiv +typedef void (APIENTRYP PFNGLVERTEXP4UIPROC)(GLenum type, GLuint value); +GLAPI PFNGLVERTEXP4UIPROC glad_glVertexP4ui; +#define glVertexP4ui glad_glVertexP4ui +typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC)(GLenum type, const GLuint *value); +GLAPI PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; +#define glVertexP4uiv glad_glVertexP4uiv +typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; +#define glTexCoordP1ui glad_glTexCoordP1ui +typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; +#define glTexCoordP1uiv glad_glTexCoordP1uiv +typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; +#define glTexCoordP2ui glad_glTexCoordP2ui +typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; +#define glTexCoordP2uiv glad_glTexCoordP2uiv +typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; +#define glTexCoordP3ui glad_glTexCoordP3ui +typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; +#define glTexCoordP3uiv glad_glTexCoordP3uiv +typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; +#define glTexCoordP4ui glad_glTexCoordP4ui +typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; +#define glTexCoordP4uiv glad_glTexCoordP4uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; +#define glMultiTexCoordP1ui glad_glMultiTexCoordP1ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; +#define glMultiTexCoordP1uiv glad_glMultiTexCoordP1uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; +#define glMultiTexCoordP2ui glad_glMultiTexCoordP2ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; +#define glMultiTexCoordP2uiv glad_glMultiTexCoordP2uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; +#define glMultiTexCoordP3ui glad_glMultiTexCoordP3ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; +#define glMultiTexCoordP3uiv glad_glMultiTexCoordP3uiv +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC)(GLenum texture, GLenum type, GLuint coords); +GLAPI PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; +#define glMultiTexCoordP4ui glad_glMultiTexCoordP4ui +typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC)(GLenum texture, GLenum type, const GLuint *coords); +GLAPI PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; +#define glMultiTexCoordP4uiv glad_glMultiTexCoordP4uiv +typedef void (APIENTRYP PFNGLNORMALP3UIPROC)(GLenum type, GLuint coords); +GLAPI PFNGLNORMALP3UIPROC glad_glNormalP3ui; +#define glNormalP3ui glad_glNormalP3ui +typedef void (APIENTRYP PFNGLNORMALP3UIVPROC)(GLenum type, const GLuint *coords); +GLAPI PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; +#define glNormalP3uiv glad_glNormalP3uiv +typedef void (APIENTRYP PFNGLCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP3UIPROC glad_glColorP3ui; +#define glColorP3ui glad_glColorP3ui +typedef void (APIENTRYP PFNGLCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP3UIVPROC glad_glColorP3uiv; +#define glColorP3uiv glad_glColorP3uiv +typedef void (APIENTRYP PFNGLCOLORP4UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLCOLORP4UIPROC glad_glColorP4ui; +#define glColorP4ui glad_glColorP4ui +typedef void (APIENTRYP PFNGLCOLORP4UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLCOLORP4UIVPROC glad_glColorP4uiv; +#define glColorP4uiv glad_glColorP4uiv +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC)(GLenum type, GLuint color); +GLAPI PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; +#define glSecondaryColorP3ui glad_glSecondaryColorP3ui +typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC)(GLenum type, const GLuint *color); +GLAPI PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; +#define glSecondaryColorP3uiv glad_glSecondaryColorP3uiv +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/glm/.gitignore b/include/glm/.gitignore new file mode 100644 index 0000000..c2be5e8 --- /dev/null +++ b/include/glm/.gitignore @@ -0,0 +1,62 @@ +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# CMake +CMakeCache.txt +CMakeFiles +cmake_install.cmake +install_manifest.txt +*.cmake +!glmConfig.cmake +!glmConfig-version.cmake +# ^ May need to add future .cmake files as exceptions + +# Test logs +Testing/* + +# Test input +test/gtc/*.dds + +# Project Files +Makefile +*.cbp +*.user +.idea/ + +# Misc. +*.log + +# local build(s) +build* + +/.vs +/.vscode +/CMakeSettings.json +.DS_Store +*.swp diff --git a/include/glm/CMakeLists.txt b/include/glm/CMakeLists.txt new file mode 100644 index 0000000..f026fb5 --- /dev/null +++ b/include/glm/CMakeLists.txt @@ -0,0 +1,304 @@ +# 3.6 is the actual minimun. 3.14 as the upper policy limit avoids CMake deprecation warnings. +cmake_minimum_required(VERSION 3.6...3.14 FATAL_ERROR) +cmake_policy(VERSION 3.6...3.14) + +file(READ "glm/detail/setup.hpp" GLM_SETUP_FILE) +string(REGEX MATCH "#define[ ]+GLM_VERSION_MAJOR[ ]+([0-9]+)" _ ${GLM_SETUP_FILE}) +set(GLM_VERSION_MAJOR "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ ]+GLM_VERSION_MINOR[ ]+([0-9]+)" _ ${GLM_SETUP_FILE}) +set(GLM_VERSION_MINOR "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ ]+GLM_VERSION_PATCH[ ]+([0-9]+)" _ ${GLM_SETUP_FILE}) +set(GLM_VERSION_PATCH "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ ]+GLM_VERSION_REVISION[ ]+([0-9]+)" _ ${GLM_SETUP_FILE}) +set(GLM_VERSION_REVISION "${CMAKE_MATCH_1}") + +set(GLM_VERSION ${GLM_VERSION_MAJOR}.${GLM_VERSION_MINOR}.${GLM_VERSION_PATCH}) +project(glm VERSION ${GLM_VERSION} LANGUAGES CXX) +message(STATUS "GLM: Version " ${GLM_VERSION}) + +set(GLM_IS_MASTER_PROJECT OFF) +if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) + set(GLM_IS_MASTER_PROJECT ON) +endif() + +option(GLM_BUILD_LIBRARY "Build dynamic/static library" ON) +option(GLM_BUILD_TESTS "Build the test programs" OFF) +option(GLM_BUILD_INSTALL "Generate the install target" ${GLM_IS_MASTER_PROJECT}) + +include(GNUInstallDirs) + +option(GLM_ENABLE_CXX_98 "Enable C++ 98" OFF) +option(GLM_ENABLE_CXX_11 "Enable C++ 11" OFF) +option(GLM_ENABLE_CXX_14 "Enable C++ 14" OFF) +option(GLM_ENABLE_CXX_17 "Enable C++ 17" OFF) +option(GLM_ENABLE_CXX_20 "Enable C++ 20" OFF) + +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(GLM_ENABLE_CXX_20) + set(CMAKE_CXX_STANDARD 20) + add_definitions(-DGLM_FORCE_CXX20) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "GLM: Disable -Wc++98-compat warnings") + add_compile_options(-Wno-c++98-compat) + add_compile_options(-Wno-c++98-compat-pedantic) + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++20 features") + endif() + +elseif(GLM_ENABLE_CXX_17) + set(CMAKE_CXX_STANDARD 17) + add_definitions(-DGLM_FORCE_CXX17) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "GLM: Disable -Wc++98-compat warnings") + add_compile_options(-Wno-c++98-compat) + add_compile_options(-Wno-c++98-compat-pedantic) + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++17 features") + endif() + +elseif(GLM_ENABLE_CXX_14) + set(CMAKE_CXX_STANDARD 14) + add_definitions(-DGLM_FORCE_CXX14) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "GLM: Disable -Wc++98-compat warnings") + add_compile_options(-Wno-c++98-compat) + add_compile_options(-Wno-c++98-compat-pedantic) + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++14 features") + endif() + +elseif(GLM_ENABLE_CXX_11) + set(CMAKE_CXX_STANDARD 11) + add_definitions(-DGLM_FORCE_CXX11) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "GLM: Disable -Wc++98-compat warnings") + add_compile_options(-Wno-c++98-compat) + add_compile_options(-Wno-c++98-compat-pedantic) + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++11 features") + endif() + +elseif(GLM_ENABLE_CXX_98) + set(CMAKE_CXX_STANDARD 98) + add_definitions(-DGLM_FORCE_CXX98) + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++98 features") + endif() + +else() + if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + message(STATUS "GLM: Disable -Wc++98-compat warnings") + add_compile_options(-Wno-c++98-compat) + add_compile_options(-Wno-c++98-compat-pedantic) + add_compile_options(-Wno-switch-default) + endif() + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with C++ features auto detection") + endif() + +endif() + +option(GLM_ENABLE_LANG_EXTENSIONS "Enable language extensions" OFF) +option(GLM_DISABLE_AUTO_DETECTION "Disable platform, compiler, arch and C++ language detection" OFF) + +if(GLM_DISABLE_AUTO_DETECTION) + add_definitions(-DGLM_FORCE_PLATFORM_UNKNOWN -DGLM_FORCE_COMPILER_UNKNOWN -DGLM_FORCE_ARCH_UNKNOWN -DGLM_FORCE_CXX_UNKNOWN) +endif() + +if(GLM_ENABLE_LANG_EXTENSIONS) + set(CMAKE_CXX_EXTENSIONS ON) + if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU")) + add_compile_options(-fms-extensions) + endif() + message(STATUS "GLM: Build with C++ language extensions") +else() + set(CMAKE_CXX_EXTENSIONS OFF) + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/Za) + if(MSVC15) + add_compile_options(/permissive-) + endif() + endif() +endif() + +option(GLM_ENABLE_FAST_MATH "Enable fast math optimizations" OFF) +if(GLM_ENABLE_FAST_MATH) + if(NOT GLM_QUIET) + message(STATUS "GLM: Build with fast math optimizations") + endif() + + if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU")) + add_compile_options(-ffast-math) + + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/fp:fast) + endif() +else() + if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/fp:precise) + endif() +endif() + +option(GLM_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF) +option(GLM_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF) +option(GLM_ENABLE_SIMD_SSSE3 "Enable SSSE3 optimizations" OFF) +option(GLM_ENABLE_SIMD_SSE4_1 "Enable SSE 4.1 optimizations" OFF) +option(GLM_ENABLE_SIMD_SSE4_2 "Enable SSE 4.2 optimizations" OFF) +option(GLM_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF) +option(GLM_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF) +option(GLM_ENABLE_SIMD_NEON "Enable ARM NEON optimizations" OFF) +option(GLM_FORCE_PURE "Force 'pure' instructions" OFF) + +if(GLM_FORCE_PURE) + add_definitions(-DGLM_FORCE_PURE) + + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + add_compile_options(-mfpmath=387) + endif() + message(STATUS "GLM: No SIMD instruction set") + +elseif(GLM_ENABLE_SIMD_AVX2) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-mavx2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxAVX2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/arch:AVX2) + endif() + message(STATUS "GLM: AVX2 instruction set") + +elseif(GLM_ENABLE_SIMD_AVX) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-mavx) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxAVX) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_compile_options(/arch:AVX) + endif() + message(STATUS "GLM: AVX instruction set") + +elseif(GLM_ENABLE_SIMD_SSE4_2) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse4.2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE4.2) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE4.2) + endif() + message(STATUS "GLM: SSE4.2 instruction set") + +elseif(GLM_ENABLE_SIMD_SSE4_1) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse4.1) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE4.1) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) # VC doesn't support SSE4.1 + endif() + message(STATUS "GLM: SSE4.1 instruction set") + +elseif(GLM_ENABLE_SIMD_SSSE3) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-mssse3) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSSE3) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) # VC doesn't support SSSE3 + endif() + message(STATUS "GLM: SSSE3 instruction set") + +elseif(GLM_ENABLE_SIMD_SSE3) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse3) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE3) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) # VC doesn't support SSE3 + endif() + message(STATUS "GLM: SSE3 instruction set") + +elseif(GLM_ENABLE_SIMD_SSE2) + add_definitions(-DGLM_FORCE_INTRINSICS) + + if((CMAKE_CXX_COMPILER_ID MATCHES "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang")) + add_compile_options(-msse2) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Intel") + add_compile_options(/QxSSE2) + elseif((CMAKE_CXX_COMPILER_ID MATCHES "MSVC") AND NOT CMAKE_CL_64) + add_compile_options(/arch:SSE2) + endif() + message(STATUS "GLM: SSE2 instruction set") +elseif(GLM_ENABLE_SIMD_NEON) + add_definitions(-DGLM_FORCE_INTRINSICS) + + message(STATUS "GLM: ARM NEON instruction set") +endif() + +add_subdirectory(glm) + +if (GLM_BUILD_TESTS) + include(CTest) + add_subdirectory(test) +endif() + +if (GLM_BUILD_INSTALL) + include(CPack) + + install(TARGETS glm-header-only glm EXPORT glm) + install( + DIRECTORY glm + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" + PATTERN "CMakeLists.txt" EXCLUDE + ) + install( + EXPORT glm + NAMESPACE glm:: + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glm" + FILE glmConfig.cmake + ) + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" + COMPATIBILITY AnyNewerVersion + ) + install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/glm" + ) + + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY + ) + + add_custom_target( + uninstall + "${CMAKE_COMMAND}" -P + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + ) +endif() diff --git a/include/glm/cmake/cmake_uninstall.cmake.in b/include/glm/cmake/cmake_uninstall.cmake.in new file mode 100644 index 0000000..f3005c1 --- /dev/null +++ b/include/glm/cmake/cmake_uninstall.cmake.in @@ -0,0 +1,21 @@ +if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") +endif() + +file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) +string(REGEX REPLACE "\n" ";" files "${files}") +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + exec_program( + "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" + OUTPUT_VARIABLE rm_out + RETURN_VALUE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") + endif() + else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif() +endforeach() diff --git a/include/glm/copying.txt b/include/glm/copying.txt new file mode 100644 index 0000000..5c43d39 --- /dev/null +++ b/include/glm/copying.txt @@ -0,0 +1,54 @@ +================================================================================ +OpenGL Mathematics (GLM) +-------------------------------------------------------------------------------- +GLM is licensed under The Happy Bunny License or MIT License + +================================================================================ +The Happy Bunny License (Modified MIT License) +-------------------------------------------------------------------------------- +Copyright (c) 2005 - 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 - 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/include/glm/doc/api/a00002.html b/include/glm/doc/api/a00002.html new file mode 100644 index 0000000..12bcdb9 --- /dev/null +++ b/include/glm/doc/api/a00002.html @@ -0,0 +1,249 @@ + + + + + + + +1.0.2 API documentation: common.hpp File Reference + + + + + + + + + +

+
+ +
+
common.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType abs (genType x)
 Returns x if x >= 0; otherwise, it returns -x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > abs (vec< L, T, Q > const &x)
 Returns x if x >= 0; otherwise, it returns -x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceil (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer that is greater than or equal to x. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType clamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
GLM_FUNC_DECL int floatBitsToInt (float v)
 Returns a signed integer value representing the encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt (vec< L, float, Q > const &v)
 Returns a signed integer value representing the encoding of a floating-point value. More...
 
GLM_FUNC_DECL uint floatBitsToUint (float v)
 Returns a unsigned integer value representing the encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint (vec< L, float, Q > const &v)
 Returns a unsigned integer value representing the encoding of a floating-point value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floor (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer that is less then or equal to x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fma (genType const &a, genType const &b, genType const &c)
 Computes and returns a * b + c. More...
 
template<typename genType >
GLM_FUNC_DECL genType fract (genType x)
 Return x - floor(x). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fract (vec< L, T, Q > const &x)
 Return x - floor(x). More...
 
template<typename genType >
GLM_FUNC_DECL genType frexp (genType x, int &exp)
 Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) More...
 
GLM_FUNC_DECL float intBitsToFloat (int v)
 Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat (vec< L, int, Q > const &v)
 Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isinf (vec< L, T, Q > const &x)
 Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isnan (vec< L, T, Q > const &x)
 Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. More...
 
template<typename genType >
GLM_FUNC_DECL genType ldexp (genType const &x, int const &exp)
 Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType max (genType x, genType y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, T y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType min (genType x, genType y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix (genTypeT x, genTypeT y, genTypeU a)
 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. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mod (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Modulus. More...
 
template<typename genType >
GLM_FUNC_DECL genType modf (genType x, genType &i)
 Returns the fractional part of x and sets i to the integer part (as a whole number floating point value). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > round (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundEven (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > sign (vec< L, T, Q > const &x)
 Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. More...
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (genType edge0, genType edge1, genType x)
 Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1. More...
 
template<typename genType >
GLM_FUNC_DECL genType step (genType edge, genType x)
 Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > step (T edge, vec< L, T, Q > const &x)
 Returns 0.0 if x < edge, otherwise it returns 1.0. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > step (vec< L, T, Q > const &edge, vec< L, T, Q > const &x)
 Returns 0.0 if x < edge, otherwise it returns 1.0. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > trunc (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x. More...
 
GLM_FUNC_DECL float uintBitsToFloat (uint v)
 Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat (vec< L, uint, Q > const &v)
 Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00002_source.html b/include/glm/doc/api/a00002_source.html new file mode 100644 index 0000000..aa4c14a --- /dev/null +++ b/include/glm/doc/api/a00002_source.html @@ -0,0 +1,257 @@ + + + + + + + +1.0.2 API documentation: common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 #include "detail/qualifier.hpp"
+
18 #include "detail/_fixes.hpp"
+
19 
+
20 namespace glm
+
21 {
+
24 
+
31  template<typename genType>
+
32  GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x);
+
33 
+
42  template<length_t L, typename T, qualifier Q>
+
43  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> abs(vec<L, T, Q> const& x);
+
44 
+
53  template<length_t L, typename T, qualifier Q>
+
54  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> sign(vec<L, T, Q> const& x);
+
55 
+
64  template<length_t L, typename T, qualifier Q>
+
65  GLM_FUNC_DECL vec<L, T, Q> floor(vec<L, T, Q> const& x);
+
66 
+
76  template<length_t L, typename T, qualifier Q>
+
77  GLM_FUNC_DECL vec<L, T, Q> trunc(vec<L, T, Q> const& x);
+
78 
+
91  template<length_t L, typename T, qualifier Q>
+
92  GLM_FUNC_DECL vec<L, T, Q> round(vec<L, T, Q> const& x);
+
93 
+
105  template<length_t L, typename T, qualifier Q>
+
106  GLM_FUNC_DECL vec<L, T, Q> roundEven(vec<L, T, Q> const& x);
+
107 
+
117  template<length_t L, typename T, qualifier Q>
+
118  GLM_FUNC_DECL vec<L, T, Q> ceil(vec<L, T, Q> const& x);
+
119 
+
126  template<typename genType>
+
127  GLM_FUNC_DECL genType fract(genType x);
+
128 
+
137  template<length_t L, typename T, qualifier Q>
+
138  GLM_FUNC_DECL vec<L, T, Q> fract(vec<L, T, Q> const& x);
+
139 
+
140  template<typename genType>
+
141  GLM_FUNC_DECL genType mod(genType x, genType y);
+
142 
+
143  template<length_t L, typename T, qualifier Q>
+
144  GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, T y);
+
145 
+
155  template<length_t L, typename T, qualifier Q>
+
156  GLM_FUNC_DECL vec<L, T, Q> mod(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
157 
+
167  template<typename genType>
+
168  GLM_FUNC_DECL genType modf(genType x, genType& i);
+
169 
+
176  template<typename genType>
+
177  GLM_FUNC_DECL GLM_CONSTEXPR genType min(genType x, genType y);
+
178 
+
187  template<length_t L, typename T, qualifier Q>
+
188  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, T y);
+
189 
+
198  template<length_t L, typename T, qualifier Q>
+
199  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
200 
+
207  template<typename genType>
+
208  GLM_FUNC_DECL GLM_CONSTEXPR genType max(genType x, genType y);
+
209 
+
218  template<length_t L, typename T, qualifier Q>
+
219  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, T y);
+
220 
+
229  template<length_t L, typename T, qualifier Q>
+
230  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
231 
+
239  template<typename genType>
+
240  GLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal);
+
241 
+
251  template<length_t L, typename T, qualifier Q>
+
252  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, T minVal, T maxVal);
+
253 
+
263  template<length_t L, typename T, qualifier Q>
+
264  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> clamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
+
265 
+
308  template<typename genTypeT, typename genTypeU>
+
309  GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
+
310 
+
311  template<length_t L, typename T, typename U, qualifier Q>
+
312  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, U, Q> const& a);
+
313 
+
314  template<length_t L, typename T, typename U, qualifier Q>
+
315  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> mix(vec<L, T, Q> const& x, vec<L, T, Q> const& y, U a);
+
316 
+
321  template<typename genType>
+
322  GLM_FUNC_DECL genType step(genType edge, genType x);
+
323 
+
332  template<length_t L, typename T, qualifier Q>
+
333  GLM_FUNC_DECL vec<L, T, Q> step(T edge, vec<L, T, Q> const& x);
+
334 
+
343  template<length_t L, typename T, qualifier Q>
+
344  GLM_FUNC_DECL vec<L, T, Q> step(vec<L, T, Q> const& edge, vec<L, T, Q> const& x);
+
345 
+
360  template<typename genType>
+
361  GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
+
362 
+
363  template<length_t L, typename T, qualifier Q>
+
364  GLM_FUNC_DECL vec<L, T, Q> smoothstep(T edge0, T edge1, vec<L, T, Q> const& x);
+
365 
+
366  template<length_t L, typename T, qualifier Q>
+
367  GLM_FUNC_DECL vec<L, T, Q> smoothstep(vec<L, T, Q> const& edge0, vec<L, T, Q> const& edge1, vec<L, T, Q> const& x);
+
368 
+
383  template<length_t L, typename T, qualifier Q>
+
384  GLM_FUNC_DECL vec<L, bool, Q> isnan(vec<L, T, Q> const& x);
+
385 
+
398  template<length_t L, typename T, qualifier Q>
+
399  GLM_FUNC_DECL vec<L, bool, Q> isinf(vec<L, T, Q> const& x);
+
400 
+
407  GLM_FUNC_DECL int floatBitsToInt(float v);
+
408 
+
418  template<length_t L, qualifier Q>
+
419  GLM_FUNC_DECL vec<L, int, Q> floatBitsToInt(vec<L, float, Q> const& v);
+
420 
+
427  GLM_FUNC_DECL uint floatBitsToUint(float v);
+
428 
+
438  template<length_t L, qualifier Q>
+
439  GLM_FUNC_DECL vec<L, uint, Q> floatBitsToUint(vec<L, float, Q> const& v);
+
440 
+
449  GLM_FUNC_DECL float intBitsToFloat(int v);
+
450 
+
462  template<length_t L, qualifier Q>
+
463  GLM_FUNC_DECL vec<L, float, Q> intBitsToFloat(vec<L, int, Q> const& v);
+
464 
+
473  GLM_FUNC_DECL float uintBitsToFloat(uint v);
+
474 
+
486  template<length_t L, qualifier Q>
+
487  GLM_FUNC_DECL vec<L, float, Q> uintBitsToFloat(vec<L, uint, Q> const& v);
+
488 
+
495  template<typename genType>
+
496  GLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType const& c);
+
497 
+
512  template<typename genType>
+
513  GLM_FUNC_DECL genType frexp(genType x, int& exp);
+
514 
+
515  template<length_t L, typename T, qualifier Q>
+
516  GLM_FUNC_DECL vec<L, T, Q> frexp(vec<L, T, Q> const& v, vec<L, int, Q>& exp);
+
517 
+
529  template<typename genType>
+
530  GLM_FUNC_DECL genType ldexp(genType const& x, int const& exp);
+
531 
+
532  template<length_t L, typename T, qualifier Q>
+
533  GLM_FUNC_DECL vec<L, T, Q> ldexp(vec<L, T, Q> const& v, vec<L, int, Q> const& exp);
+
534 
+
536 }//namespace glm
+
537 
+
538 #include "detail/func_common.inl"
+
539 
+
+
GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)
Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > abs(vec< L, T, Q > const &x)
Returns x if x >= 0; otherwise, it returns -x.
+
GLM_FUNC_DECL genType ldexp(genType const &x, int const &exp)
Builds a floating-point number from x and the corresponding integral exponent of two in exp,...
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
+
GLM_FUNC_DECL vec< L, T, Q > step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)
Returns 0.0 if x < edge, otherwise it returns 1.0.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns y if y < x; otherwise, it returns x.
+
GLM_FUNC_DECL genType frexp(genType x, int &exp)
Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two,...
+
GLM_FUNC_DECL vec< L, T, Q > ceil(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is greater than or equal to x.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > sign(vec< L, T, Q > const &x)
Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+
GLM_FUNC_DECL vec< L, T, Q > round(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint(vec< L, float, Q > const &v)
Returns a unsigned integer value representing the encoding of a floating-point value.
+
GLM_FUNC_DECL vec< L, T, Q > roundEven(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL vec< L, bool, Q > isinf(vec< L, T, Q > const &x)
Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns y if x < y; otherwise, it returns x.
+
GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)
Returns the natural exponentiation of v, i.e., e^v.
+
GLM_FUNC_DECL genType modf(genType x, genType &i)
Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...
+
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
+
GLM_FUNC_DECL vec< L, bool, Q > isnan(vec< L, T, Q > const &x)
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...
+
GLM_FUNC_DECL vec< L, T, Q > fract(vec< L, T, Q > const &x)
Return x - floor(x).
+
GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt(vec< L, float, Q > const &v)
Returns a signed integer value representing the encoding of a floating-point value.
+
GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)
Computes and returns a * b + c.
+
GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat(vec< L, uint, Q > const &v)
Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value...
+
GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat(vec< L, int, Q > const &v)
Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.
+
GLM_FUNC_DECL vec< L, T, Q > mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Modulus.
+
GLM_FUNC_DECL vec< L, T, Q > trunc(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...
+ + + + diff --git a/include/glm/doc/api/a00005_source.html b/include/glm/doc/api/a00005_source.html new file mode 100644 index 0000000..8a81564 --- /dev/null +++ b/include/glm/doc/api/a00005_source.html @@ -0,0 +1,475 @@ + + + + + + + +1.0.2 API documentation: _features.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_features.hpp
+
+
+
1 #pragma once
+
2 
+
3 // #define GLM_CXX98_EXCEPTIONS
+
4 // #define GLM_CXX98_RTTI
+
5 
+
6 // #define GLM_CXX11_RVALUE_REFERENCES
+
7 // Rvalue references - GCC 4.3
+
8 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html
+
9 
+
10 // GLM_CXX11_TRAILING_RETURN
+
11 // Rvalue references for *this - GCC not supported
+
12 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm
+
13 
+
14 // GLM_CXX11_NONSTATIC_MEMBER_INIT
+
15 // Initialization of class objects by rvalues - GCC any
+
16 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html
+
17 
+
18 // GLM_CXX11_NONSTATIC_MEMBER_INIT
+
19 // Non-static data member initializers - GCC 4.7
+
20 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm
+
21 
+
22 // #define GLM_CXX11_VARIADIC_TEMPLATE
+
23 // Variadic templates - GCC 4.3
+
24 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf
+
25 
+
26 //
+
27 // Extending variadic template template parameters - GCC 4.4
+
28 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf
+
29 
+
30 // #define GLM_CXX11_GENERALIZED_INITIALIZERS
+
31 // Initializer lists - GCC 4.4
+
32 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
33 
+
34 // #define GLM_CXX11_STATIC_ASSERT
+
35 // Static assertions - GCC 4.3
+
36 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html
+
37 
+
38 // #define GLM_CXX11_AUTO_TYPE
+
39 // auto-typed variables - GCC 4.4
+
40 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf
+
41 
+
42 // #define GLM_CXX11_AUTO_TYPE
+
43 // Multi-declarator auto - GCC 4.4
+
44 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf
+
45 
+
46 // #define GLM_CXX11_AUTO_TYPE
+
47 // Removal of auto as a storage-class specifier - GCC 4.4
+
48 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm
+
49 
+
50 // #define GLM_CXX11_AUTO_TYPE
+
51 // New function declarator syntax - GCC 4.4
+
52 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm
+
53 
+
54 // #define GLM_CXX11_LAMBDAS
+
55 // New wording for C++0x lambdas - GCC 4.5
+
56 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf
+
57 
+
58 // #define GLM_CXX11_DECLTYPE
+
59 // Declared type of an expression - GCC 4.3
+
60 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf
+
61 
+
62 //
+
63 // Right angle brackets - GCC 4.3
+
64 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html
+
65 
+
66 //
+
67 // Default template arguments for function templates DR226 GCC 4.3
+
68 // http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226
+
69 
+
70 //
+
71 // Solving the SFINAE problem for expressions DR339 GCC 4.4
+
72 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html
+
73 
+
74 // #define GLM_CXX11_ALIAS_TEMPLATE
+
75 // Template aliases N2258 GCC 4.7
+
76 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
77 
+
78 //
+
79 // Extern templates N1987 Yes
+
80 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm
+
81 
+
82 // #define GLM_CXX11_NULLPTR
+
83 // Null pointer constant N2431 GCC 4.6
+
84 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf
+
85 
+
86 // #define GLM_CXX11_STRONG_ENUMS
+
87 // Strongly-typed enums N2347 GCC 4.4
+
88 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf
+
89 
+
90 //
+
91 // Forward declarations for enums N2764 GCC 4.6
+
92 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf
+
93 
+
94 //
+
95 // Generalized attributes N2761 GCC 4.8
+
96 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf
+
97 
+
98 //
+
99 // Generalized constant expressions N2235 GCC 4.6
+
100 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
101 
+
102 //
+
103 // Alignment support N2341 GCC 4.8
+
104 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
105 
+
106 // #define GLM_CXX11_DELEGATING_CONSTRUCTORS
+
107 // Delegating constructors N1986 GCC 4.7
+
108 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf
+
109 
+
110 //
+
111 // Inheriting constructors N2540 GCC 4.8
+
112 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm
+
113 
+
114 // #define GLM_CXX11_EXPLICIT_CONVERSIONS
+
115 // Explicit conversion operators N2437 GCC 4.5
+
116 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
117 
+
118 //
+
119 // New character types N2249 GCC 4.4
+
120 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html
+
121 
+
122 //
+
123 // Unicode string literals N2442 GCC 4.5
+
124 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
125 
+
126 //
+
127 // Raw string literals N2442 GCC 4.5
+
128 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm
+
129 
+
130 //
+
131 // Universal character name literals N2170 GCC 4.5
+
132 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html
+
133 
+
134 // #define GLM_CXX11_USER_LITERALS
+
135 // User-defined literals N2765 GCC 4.7
+
136 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf
+
137 
+
138 //
+
139 // Standard Layout Types N2342 GCC 4.5
+
140 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm
+
141 
+
142 // #define GLM_CXX11_DEFAULTED_FUNCTIONS
+
143 // #define GLM_CXX11_DELETED_FUNCTIONS
+
144 // Defaulted and deleted functions N2346 GCC 4.4
+
145 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm
+
146 
+
147 //
+
148 // Extended friend declarations N1791 GCC 4.7
+
149 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf
+
150 
+
151 //
+
152 // Extending sizeof N2253 GCC 4.4
+
153 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html
+
154 
+
155 // #define GLM_CXX11_INLINE_NAMESPACES
+
156 // Inline namespaces N2535 GCC 4.4
+
157 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm
+
158 
+
159 // #define GLM_CXX11_UNRESTRICTED_UNIONS
+
160 // Unrestricted unions N2544 GCC 4.6
+
161 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
162 
+
163 // #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+
164 // Local and unnamed types as template arguments N2657 GCC 4.5
+
165 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm
+
166 
+
167 // #define GLM_CXX11_RANGE_FOR
+
168 // Range-based for N2930 GCC 4.6
+
169 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html
+
170 
+
171 // #define GLM_CXX11_OVERRIDE_CONTROL
+
172 // Explicit virtual overrides N2928 N3206 N3272 GCC 4.7
+
173 // http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm
+
174 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
+
175 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm
+
176 
+
177 //
+
178 // Minimal support for garbage collection and reachability-based leak detection N2670 No
+
179 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm
+
180 
+
181 // #define GLM_CXX11_NOEXCEPT
+
182 // Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)
+
183 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html
+
184 
+
185 //
+
186 // Defining move special member functions N3053 GCC 4.6
+
187 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html
+
188 
+
189 //
+
190 // Sequence points N2239 Yes
+
191 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
192 
+
193 //
+
194 // Atomic operations N2427 GCC 4.4
+
195 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html
+
196 
+
197 //
+
198 // Strong Compare and Exchange N2748 GCC 4.5
+
199 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html
+
200 
+
201 //
+
202 // Bidirectional Fences N2752 GCC 4.8
+
203 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm
+
204 
+
205 //
+
206 // Memory model N2429 GCC 4.8
+
207 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm
+
208 
+
209 //
+
210 // Data-dependency ordering: atomics and memory model N2664 GCC 4.4
+
211 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm
+
212 
+
213 //
+
214 // Propagating exceptions N2179 GCC 4.4
+
215 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html
+
216 
+
217 //
+
218 // Abandoning a process and at_quick_exit N2440 GCC 4.8
+
219 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm
+
220 
+
221 //
+
222 // Allow atomics use in signal handlers N2547 Yes
+
223 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm
+
224 
+
225 //
+
226 // Thread-local storage N2659 GCC 4.8
+
227 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm
+
228 
+
229 //
+
230 // Dynamic initialization and destruction with concurrency N2660 GCC 4.3
+
231 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
+
232 
+
233 //
+
234 // __func__ predefined identifier N2340 GCC 4.3
+
235 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm
+
236 
+
237 //
+
238 // C99 preprocessor N1653 GCC 4.3
+
239 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm
+
240 
+
241 //
+
242 // long long N1811 GCC 4.3
+
243 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf
+
244 
+
245 //
+
246 // Extended integral types N1988 Yes
+
247 // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf
+
248 
+
249 #if(GLM_COMPILER & GLM_COMPILER_GCC)
+
250 
+
251 # define GLM_CXX11_STATIC_ASSERT
+
252 
+
253 #elif(GLM_COMPILER & GLM_COMPILER_CLANG)
+
254 # if(__has_feature(cxx_exceptions))
+
255 # define GLM_CXX98_EXCEPTIONS
+
256 # endif
+
257 
+
258 # if(__has_feature(cxx_rtti))
+
259 # define GLM_CXX98_RTTI
+
260 # endif
+
261 
+
262 # if(__has_feature(cxx_access_control_sfinae))
+
263 # define GLM_CXX11_ACCESS_CONTROL_SFINAE
+
264 # endif
+
265 
+
266 # if(__has_feature(cxx_alias_templates))
+
267 # define GLM_CXX11_ALIAS_TEMPLATE
+
268 # endif
+
269 
+
270 # if(__has_feature(cxx_alignas))
+
271 # define GLM_CXX11_ALIGNAS
+
272 # endif
+
273 
+
274 # if(__has_feature(cxx_attributes))
+
275 # define GLM_CXX11_ATTRIBUTES
+
276 # endif
+
277 
+
278 # if(__has_feature(cxx_constexpr))
+
279 # define GLM_CXX11_CONSTEXPR
+
280 # endif
+
281 
+
282 # if(__has_feature(cxx_decltype))
+
283 # define GLM_CXX11_DECLTYPE
+
284 # endif
+
285 
+
286 # if(__has_feature(cxx_default_function_template_args))
+
287 # define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS
+
288 # endif
+
289 
+
290 # if(__has_feature(cxx_defaulted_functions))
+
291 # define GLM_CXX11_DEFAULTED_FUNCTIONS
+
292 # endif
+
293 
+
294 # if(__has_feature(cxx_delegating_constructors))
+
295 # define GLM_CXX11_DELEGATING_CONSTRUCTORS
+
296 # endif
+
297 
+
298 # if(__has_feature(cxx_deleted_functions))
+
299 # define GLM_CXX11_DELETED_FUNCTIONS
+
300 # endif
+
301 
+
302 # if(__has_feature(cxx_explicit_conversions))
+
303 # define GLM_CXX11_EXPLICIT_CONVERSIONS
+
304 # endif
+
305 
+
306 # if(__has_feature(cxx_generalized_initializers))
+
307 # define GLM_CXX11_GENERALIZED_INITIALIZERS
+
308 # endif
+
309 
+
310 # if(__has_feature(cxx_implicit_moves))
+
311 # define GLM_CXX11_IMPLICIT_MOVES
+
312 # endif
+
313 
+
314 # if(__has_feature(cxx_inheriting_constructors))
+
315 # define GLM_CXX11_INHERITING_CONSTRUCTORS
+
316 # endif
+
317 
+
318 # if(__has_feature(cxx_inline_namespaces))
+
319 # define GLM_CXX11_INLINE_NAMESPACES
+
320 # endif
+
321 
+
322 # if(__has_feature(cxx_lambdas))
+
323 # define GLM_CXX11_LAMBDAS
+
324 # endif
+
325 
+
326 # if(__has_feature(cxx_local_type_template_args))
+
327 # define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS
+
328 # endif
+
329 
+
330 # if(__has_feature(cxx_noexcept))
+
331 # define GLM_CXX11_NOEXCEPT
+
332 # endif
+
333 
+
334 # if(__has_feature(cxx_nonstatic_member_init))
+
335 # define GLM_CXX11_NONSTATIC_MEMBER_INIT
+
336 # endif
+
337 
+
338 # if(__has_feature(cxx_nullptr))
+
339 # define GLM_CXX11_NULLPTR
+
340 # endif
+
341 
+
342 # if(__has_feature(cxx_override_control))
+
343 # define GLM_CXX11_OVERRIDE_CONTROL
+
344 # endif
+
345 
+
346 # if(__has_feature(cxx_reference_qualified_functions))
+
347 # define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS
+
348 # endif
+
349 
+
350 # if(__has_feature(cxx_range_for))
+
351 # define GLM_CXX11_RANGE_FOR
+
352 # endif
+
353 
+
354 # if(__has_feature(cxx_raw_string_literals))
+
355 # define GLM_CXX11_RAW_STRING_LITERALS
+
356 # endif
+
357 
+
358 # if(__has_feature(cxx_rvalue_references))
+
359 # define GLM_CXX11_RVALUE_REFERENCES
+
360 # endif
+
361 
+
362 # if(__has_feature(cxx_static_assert))
+
363 # define GLM_CXX11_STATIC_ASSERT
+
364 # endif
+
365 
+
366 # if(__has_feature(cxx_auto_type))
+
367 # define GLM_CXX11_AUTO_TYPE
+
368 # endif
+
369 
+
370 # if(__has_feature(cxx_strong_enums))
+
371 # define GLM_CXX11_STRONG_ENUMS
+
372 # endif
+
373 
+
374 # if(__has_feature(cxx_trailing_return))
+
375 # define GLM_CXX11_TRAILING_RETURN
+
376 # endif
+
377 
+
378 # if(__has_feature(cxx_unicode_literals))
+
379 # define GLM_CXX11_UNICODE_LITERALS
+
380 # endif
+
381 
+
382 # if(__has_feature(cxx_unrestricted_unions))
+
383 # define GLM_CXX11_UNRESTRICTED_UNIONS
+
384 # endif
+
385 
+
386 # if(__has_feature(cxx_user_literals))
+
387 # define GLM_CXX11_USER_LITERALS
+
388 # endif
+
389 
+
390 # if(__has_feature(cxx_variadic_templates))
+
391 # define GLM_CXX11_VARIADIC_TEMPLATES
+
392 # endif
+
393 
+
394 #endif//(GLM_COMPILER & GLM_COMPILER_CLANG)
+
+ + + + diff --git a/include/glm/doc/api/a00008_source.html b/include/glm/doc/api/a00008_source.html new file mode 100644 index 0000000..bae93d2 --- /dev/null +++ b/include/glm/doc/api/a00008_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: _fixes.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_fixes.hpp
+
+
+
1 #include <cmath>
+
2 
+
4 #ifdef max
+
5 #undef max
+
6 #endif
+
7 
+
9 #ifdef min
+
10 #undef min
+
11 #endif
+
12 
+
14 #ifdef isnan
+
15 #undef isnan
+
16 #endif
+
17 
+
19 #ifdef isinf
+
20 #undef isinf
+
21 #endif
+
22 
+
24 #ifdef log2
+
25 #undef log2
+
26 #endif
+
27 
+
+ + + + diff --git a/include/glm/doc/api/a00011_source.html b/include/glm/doc/api/a00011_source.html new file mode 100644 index 0000000..6ba5406 --- /dev/null +++ b/include/glm/doc/api/a00011_source.html @@ -0,0 +1,163 @@ + + + + + + + +1.0.2 API documentation: _noise.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_noise.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "../common.hpp"
+
4 
+
5 namespace glm{
+
6 namespace detail
+
7 {
+
8  template<typename T>
+
9  GLM_FUNC_QUALIFIER T mod289(T const& x)
+
10  {
+
11  return x - floor(x * (static_cast<T>(1.0) / static_cast<T>(289.0))) * static_cast<T>(289.0);
+
12  }
+
13 
+
14  template<typename T>
+
15  GLM_FUNC_QUALIFIER T permute(T const& x)
+
16  {
+
17  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
18  }
+
19 
+
20  template<typename T, qualifier Q>
+
21  GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> const& x)
+
22  {
+
23  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
24  }
+
25 
+
26  template<typename T, qualifier Q>
+
27  GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> const& x)
+
28  {
+
29  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
30  }
+
31 
+
32  template<typename T, qualifier Q>
+
33  GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> const& x)
+
34  {
+
35  return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
+
36  }
+
37 
+
38  template<typename T>
+
39  GLM_FUNC_QUALIFIER T taylorInvSqrt(T const& r)
+
40  {
+
41  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
+
42  }
+
43 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> const& r)
+
46  {
+
47  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
+
48  }
+
49 
+
50  template<typename T, qualifier Q>
+
51  GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> const& r)
+
52  {
+
53  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
+
54  }
+
55 
+
56  template<typename T, qualifier Q>
+
57  GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> const& r)
+
58  {
+
59  return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
+
60  }
+
61 
+
62  template<typename T, qualifier Q>
+
63  GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> const& t)
+
64  {
+
65  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
+
66  }
+
67 
+
68  template<typename T, qualifier Q>
+
69  GLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> const& t)
+
70  {
+
71  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
+
72  }
+
73 
+
74  template<typename T, qualifier Q>
+
75  GLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> const& t)
+
76  {
+
77  return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
+
78  }
+
79 }//namespace detail
+
80 }//namespace glm
+
81 
+
+
GLM_FUNC_DECL vec< L, T, Q > floor(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer that is less then or equal to x.
+ + + + diff --git a/include/glm/doc/api/a00014_source.html b/include/glm/doc/api/a00014_source.html new file mode 100644 index 0000000..7a7a8b2 --- /dev/null +++ b/include/glm/doc/api/a00014_source.html @@ -0,0 +1,891 @@ + + + + + + + +1.0.2 API documentation: _swizzle.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_swizzle.hpp
+
+
+
1 #pragma once
+
2 
+
3 namespace glm{
+
4 namespace detail
+
5 {
+
6  // Internal class for implementing swizzle operators
+
7  template<typename T, int N>
+
8  struct _swizzle_base0
+
9  {
+
10  protected:
+
11  GLM_FUNC_QUALIFIER T& elem(int i){ return (reinterpret_cast<T*>(_buffer))[i]; }
+
12  GLM_FUNC_QUALIFIER T const& elem(int i) const{ return (reinterpret_cast<const T*>(_buffer))[i]; }
+
13 
+
14  // Use an opaque buffer to *ensure* the compiler doesn't call a constructor.
+
15  // The size 1 buffer is assumed to aligned to the actual members so that the
+
16  // elem()
+
17  char _buffer[1];
+
18  };
+
19 
+
20  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, bool UseSimd>
+
21  struct _swizzle_base1 : public _swizzle_base0<T, N>
+
22  {
+
23  };
+
24 
+
25  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
+
26  struct _swizzle_base1<N, T, Q, E0, E1, E2, E3, false> : public _swizzle_base0<T, N>
+
27  {
+
28  };
+
29 
+
30  template<typename T, qualifier Q, int E0, int E1>
+
31  struct _swizzle_base1<2, T, Q, E0,E1,-1,-2, false> : public _swizzle_base0<T, 2>
+
32  {
+
33  GLM_FUNC_QUALIFIER vec<2, T, Q> operator ()() const { return vec<2, T, Q>(this->elem(E0), this->elem(E1)); }
+
34  };
+
35 
+
36  template<typename T, qualifier Q, int E0, int E1, int E2>
+
37  struct _swizzle_base1<3, T, Q, E0,E1,E2,3, false> : public _swizzle_base0<T, 3>
+
38  {
+
39  GLM_FUNC_QUALIFIER vec<3, T, Q> operator ()() const { return vec<3, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2)); }
+
40  };
+
41 
+
42  template<typename T, qualifier Q, int E0, int E1, int E2, int E3>
+
43  struct _swizzle_base1<4, T, Q, E0,E1,E2,E3, false> : public _swizzle_base0<T, 4>
+
44  {
+
45  GLM_FUNC_QUALIFIER vec<4, T, Q> operator ()() const { return vec<4, T, Q>(this->elem(E0), this->elem(E1), this->elem(E2), this->elem(E3)); }
+
46  };
+
47 
+
48  // Internal class for implementing swizzle operators
+
49  /*
+
50  Template parameters:
+
51 
+
52  T = type of scalar values (e.g. float, double)
+
53  N = number of components in the vector (e.g. 3)
+
54  E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec
+
55 
+
56  DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles
+
57  containing duplicate elements so that they cannot be used as r-values).
+
58  */
+
59  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int DUPLICATE_ELEMENTS>
+
60  struct _swizzle_base2 : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>
+
61  {
+
62  struct op_equal
+
63  {
+
64  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e = t; }
+
65  };
+
66 
+
67  struct op_minus
+
68  {
+
69  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e -= t; }
+
70  };
+
71 
+
72  struct op_plus
+
73  {
+
74  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e += t; }
+
75  };
+
76 
+
77  struct op_mul
+
78  {
+
79  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e *= t; }
+
80  };
+
81 
+
82  struct op_div
+
83  {
+
84  GLM_FUNC_QUALIFIER void operator() (T& e, T& t) const{ e /= t; }
+
85  };
+
86 
+
87  public:
+
88  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (const T& t)
+
89  {
+
90  for (int i = 0; i < N; ++i)
+
91  (*this)[i] = t;
+
92  return *this;
+
93  }
+
94 
+
95  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (vec<N, T, Q> const& that)
+
96  {
+
97  _apply_op(that, op_equal());
+
98  return *this;
+
99  }
+
100 
+
101  GLM_FUNC_QUALIFIER void operator -= (vec<N, T, Q> const& that)
+
102  {
+
103  _apply_op(that, op_minus());
+
104  }
+
105 
+
106  GLM_FUNC_QUALIFIER void operator += (vec<N, T, Q> const& that)
+
107  {
+
108  _apply_op(that, op_plus());
+
109  }
+
110 
+
111  GLM_FUNC_QUALIFIER void operator *= (vec<N, T, Q> const& that)
+
112  {
+
113  _apply_op(that, op_mul());
+
114  }
+
115 
+
116  GLM_FUNC_QUALIFIER void operator /= (vec<N, T, Q> const& that)
+
117  {
+
118  _apply_op(that, op_div());
+
119  }
+
120 
+
121  GLM_FUNC_QUALIFIER T& operator[](int i)
+
122  {
+
123  const int offset_dst[4] = { E0, E1, E2, E3 };
+
124  return this->elem(offset_dst[i]);
+
125  }
+
126  GLM_FUNC_QUALIFIER T operator[](int i) const
+
127  {
+
128  const int offset_dst[4] = { E0, E1, E2, E3 };
+
129  return this->elem(offset_dst[i]);
+
130  }
+
131 
+
132  protected:
+
133  template<typename U>
+
134  GLM_FUNC_QUALIFIER void _apply_op(vec<N, T, Q> const& that, const U& op)
+
135  {
+
136  // Make a copy of the data in this == &that.
+
137  // The copier should optimize out the copy in cases where the function is
+
138  // properly inlined and the copy is not necessary.
+
139  T t[N];
+
140  for (int i = 0; i < N; ++i)
+
141  t[i] = that[i];
+
142  for (int i = 0; i < N; ++i)
+
143  op( (*this)[i], t[i] );
+
144  }
+
145  };
+
146 
+
147  // Specialization for swizzles containing duplicate elements. These cannot be modified.
+
148  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
+
149  struct _swizzle_base2<N, T, Q, E0,E1,E2,E3, 1> : public _swizzle_base1<N, T, Q, E0,E1,E2,E3, detail::is_aligned<Q>::value>
+
150  {
+
151  struct Stub {};
+
152 
+
153  GLM_FUNC_QUALIFIER _swizzle_base2& operator= (Stub const&) { return *this; }
+
154 
+
155  GLM_FUNC_QUALIFIER T operator[] (int i) const
+
156  {
+
157  const int offset_dst[4] = { E0, E1, E2, E3 };
+
158  return this->elem(offset_dst[i]);
+
159  }
+
160  };
+
161 
+
162  template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
+
163  struct _swizzle : public _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)>
+
164  {
+
165  typedef _swizzle_base2<N, T, Q, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)> base_type;
+
166 
+
167  using base_type::operator=;
+
168 
+
169  GLM_FUNC_QUALIFIER operator vec<N, T, Q> () const { return (*this)(); }
+
170  };
+
171 
+
172 //
+
173 // To prevent the C++ syntax from getting entirely overwhelming, define some alias macros
+
174 //
+
175 #define GLM_SWIZZLE_TEMPLATE1 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3>
+
176 #define GLM_SWIZZLE_TEMPLATE2 template<int N, typename T, qualifier Q, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3>
+
177 #define GLM_SWIZZLE_TYPE1 _swizzle<N, T, Q, E0, E1, E2, E3>
+
178 #define GLM_SWIZZLE_TYPE2 _swizzle<N, T, Q, F0, F1, F2, F3>
+
179 
+
180 //
+
181 // Wrapper for a binary operator (e.g. u.yy + v.zy)
+
182 //
+
183 #define GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
+
184  GLM_SWIZZLE_TEMPLATE2 \
+
185  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \
+
186  { \
+
187  return a() OPERAND b(); \
+
188  } \
+
189  GLM_SWIZZLE_TEMPLATE1 \
+
190  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const vec<N, T, Q>& b) \
+
191  { \
+
192  return a() OPERAND b; \
+
193  } \
+
194  GLM_SWIZZLE_TEMPLATE1 \
+
195  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const vec<N, T, Q>& a, const GLM_SWIZZLE_TYPE1& b) \
+
196  { \
+
197  return a OPERAND b(); \
+
198  }
+
199 
+
200 //
+
201 // Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)
+
202 //
+
203 #define GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \
+
204  GLM_SWIZZLE_TEMPLATE1 \
+
205  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const GLM_SWIZZLE_TYPE1& a, const T& b) \
+
206  { \
+
207  return a() OPERAND b; \
+
208  } \
+
209  GLM_SWIZZLE_TEMPLATE1 \
+
210  GLM_FUNC_QUALIFIER vec<N, T, Q> operator OPERAND ( const T& a, const GLM_SWIZZLE_TYPE1& b) \
+
211  { \
+
212  return a OPERAND b(); \
+
213  }
+
214 
+
215 //
+
216 // Macro for wrapping a function taking one argument (e.g. abs())
+
217 //
+
218 #define GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \
+
219  GLM_SWIZZLE_TEMPLATE1 \
+
220  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a) \
+
221  { \
+
222  return FUNCTION(a()); \
+
223  }
+
224 
+
225 //
+
226 // Macro for wrapping a function taking two vector arguments (e.g. dot()).
+
227 //
+
228 #define GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \
+
229  GLM_SWIZZLE_TEMPLATE2 \
+
230  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b) \
+
231  { \
+
232  return FUNCTION(a(), b()); \
+
233  } \
+
234  GLM_SWIZZLE_TEMPLATE1 \
+
235  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b) \
+
236  { \
+
237  return FUNCTION(a(), b()); \
+
238  } \
+
239  GLM_SWIZZLE_TEMPLATE1 \
+
240  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename V& b) \
+
241  { \
+
242  return FUNCTION(a(), b); \
+
243  } \
+
244  GLM_SWIZZLE_TEMPLATE1 \
+
245  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V& a, const GLM_SWIZZLE_TYPE1& b) \
+
246  { \
+
247  return FUNCTION(a, b()); \
+
248  }
+
249 
+
250 //
+
251 // Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).
+
252 //
+
253 #define GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \
+
254  GLM_SWIZZLE_TEMPLATE2 \
+
255  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE2& b, const T& c) \
+
256  { \
+
257  return FUNCTION(a(), b(), c); \
+
258  } \
+
259  GLM_SWIZZLE_TEMPLATE1 \
+
260  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \
+
261  { \
+
262  return FUNCTION(a(), b(), c); \
+
263  } \
+
264  GLM_SWIZZLE_TEMPLATE1 \
+
265  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const GLM_SWIZZLE_TYPE1& a, const typename S0::vec_type& b, const T& c)\
+
266  { \
+
267  return FUNCTION(a(), b, c); \
+
268  } \
+
269  GLM_SWIZZLE_TEMPLATE1 \
+
270  GLM_FUNC_QUALIFIER typename GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V& a, const GLM_SWIZZLE_TYPE1& b, const T& c) \
+
271  { \
+
272  return FUNCTION(a, b(), c); \
+
273  }
+
274 
+
275 }//namespace detail
+
276 }//namespace glm
+
277 
+
278 namespace glm
+
279 {
+
280  namespace detail
+
281  {
+
282  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)
+
283  GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)
+
284  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)
+
285  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)
+
286  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)
+
287  GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)
+
288  }
+
289 
+
290  //
+
291  // Swizzles are distinct types from the unswizzled type. The below macros will
+
292  // provide template specializations for the swizzle types for the given functions
+
293  // so that the compiler does not have any ambiguity to choosing how to handle
+
294  // the function.
+
295  //
+
296  // The alternative is to use the operator()() when calling the function in order
+
297  // to explicitly convert the swizzled type to the unswizzled type.
+
298  //
+
299 
+
300  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);
+
301  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);
+
302  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);
+
303  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);
+
304  //GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);
+
305 
+
306  //GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);
+
307  //GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);
+
308  //GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step);
+
309  //GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);
+
310 }
+
311 
+
312 #define GLM_SWIZZLE2_2_MEMBERS(T, Q, E0,E1) \
+
313  struct { detail::_swizzle<2, T, Q, 0,0,-1,-2> E0 ## E0; }; \
+
314  struct { detail::_swizzle<2, T, Q, 0,1,-1,-2> E0 ## E1; }; \
+
315  struct { detail::_swizzle<2, T, Q, 1,0,-1,-2> E1 ## E0; }; \
+
316  struct { detail::_swizzle<2, T, Q, 1,1,-1,-2> E1 ## E1; };
+
317 
+
318 #define GLM_SWIZZLE2_3_MEMBERS(T, Q, E0,E1) \
+
319  struct { detail::_swizzle<3,T, Q, 0,0,0,-1> E0 ## E0 ## E0; }; \
+
320  struct { detail::_swizzle<3,T, Q, 0,0,1,-1> E0 ## E0 ## E1; }; \
+
321  struct { detail::_swizzle<3,T, Q, 0,1,0,-1> E0 ## E1 ## E0; }; \
+
322  struct { detail::_swizzle<3,T, Q, 0,1,1,-1> E0 ## E1 ## E1; }; \
+
323  struct { detail::_swizzle<3,T, Q, 1,0,0,-1> E1 ## E0 ## E0; }; \
+
324  struct { detail::_swizzle<3,T, Q, 1,0,1,-1> E1 ## E0 ## E1; }; \
+
325  struct { detail::_swizzle<3,T, Q, 1,1,0,-1> E1 ## E1 ## E0; }; \
+
326  struct { detail::_swizzle<3,T, Q, 1,1,1,-1> E1 ## E1 ## E1; };
+
327 
+
328 #define GLM_SWIZZLE2_4_MEMBERS(T, Q, E0,E1) \
+
329  struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
330  struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
331  struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
332  struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
333  struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
334  struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
335  struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
336  struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
337  struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
338  struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
339  struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
340  struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
341  struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
342  struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
343  struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
344  struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; };
+
345 
+
346 #define GLM_SWIZZLE3_2_MEMBERS(T, Q, E0,E1,E2) \
+
347  struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \
+
348  struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \
+
349  struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \
+
350  struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \
+
351  struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \
+
352  struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \
+
353  struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \
+
354  struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \
+
355  struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; };
+
356 
+
357 #define GLM_SWIZZLE3_3_MEMBERS(T, Q ,E0,E1,E2) \
+
358  struct { detail::_swizzle<3, T, Q, 0,0,0,3> E0 ## E0 ## E0; }; \
+
359  struct { detail::_swizzle<3, T, Q, 0,0,1,3> E0 ## E0 ## E1; }; \
+
360  struct { detail::_swizzle<3, T, Q, 0,0,2,3> E0 ## E0 ## E2; }; \
+
361  struct { detail::_swizzle<3, T, Q, 0,1,0,3> E0 ## E1 ## E0; }; \
+
362  struct { detail::_swizzle<3, T, Q, 0,1,1,3> E0 ## E1 ## E1; }; \
+
363  struct { detail::_swizzle<3, T, Q, 0,1,2,3> E0 ## E1 ## E2; }; \
+
364  struct { detail::_swizzle<3, T, Q, 0,2,0,3> E0 ## E2 ## E0; }; \
+
365  struct { detail::_swizzle<3, T, Q, 0,2,1,3> E0 ## E2 ## E1; }; \
+
366  struct { detail::_swizzle<3, T, Q, 0,2,2,3> E0 ## E2 ## E2; }; \
+
367  struct { detail::_swizzle<3, T, Q, 1,0,0,3> E1 ## E0 ## E0; }; \
+
368  struct { detail::_swizzle<3, T, Q, 1,0,1,3> E1 ## E0 ## E1; }; \
+
369  struct { detail::_swizzle<3, T, Q, 1,0,2,3> E1 ## E0 ## E2; }; \
+
370  struct { detail::_swizzle<3, T, Q, 1,1,0,3> E1 ## E1 ## E0; }; \
+
371  struct { detail::_swizzle<3, T, Q, 1,1,1,3> E1 ## E1 ## E1; }; \
+
372  struct { detail::_swizzle<3, T, Q, 1,1,2,3> E1 ## E1 ## E2; }; \
+
373  struct { detail::_swizzle<3, T, Q, 1,2,0,3> E1 ## E2 ## E0; }; \
+
374  struct { detail::_swizzle<3, T, Q, 1,2,1,3> E1 ## E2 ## E1; }; \
+
375  struct { detail::_swizzle<3, T, Q, 1,2,2,3> E1 ## E2 ## E2; }; \
+
376  struct { detail::_swizzle<3, T, Q, 2,0,0,3> E2 ## E0 ## E0; }; \
+
377  struct { detail::_swizzle<3, T, Q, 2,0,1,3> E2 ## E0 ## E1; }; \
+
378  struct { detail::_swizzle<3, T, Q, 2,0,2,3> E2 ## E0 ## E2; }; \
+
379  struct { detail::_swizzle<3, T, Q, 2,1,0,3> E2 ## E1 ## E0; }; \
+
380  struct { detail::_swizzle<3, T, Q, 2,1,1,3> E2 ## E1 ## E1; }; \
+
381  struct { detail::_swizzle<3, T, Q, 2,1,2,3> E2 ## E1 ## E2; }; \
+
382  struct { detail::_swizzle<3, T, Q, 2,2,0,3> E2 ## E2 ## E0; }; \
+
383  struct { detail::_swizzle<3, T, Q, 2,2,1,3> E2 ## E2 ## E1; }; \
+
384  struct { detail::_swizzle<3, T, Q, 2,2,2,3> E2 ## E2 ## E2; };
+
385 
+
386 #define GLM_SWIZZLE3_4_MEMBERS(T, Q, E0,E1,E2) \
+
387  struct { detail::_swizzle<4,T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
388  struct { detail::_swizzle<4,T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
389  struct { detail::_swizzle<4,T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+
390  struct { detail::_swizzle<4,T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
391  struct { detail::_swizzle<4,T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
392  struct { detail::_swizzle<4,T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+
393  struct { detail::_swizzle<4,T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+
394  struct { detail::_swizzle<4,T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+
395  struct { detail::_swizzle<4,T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+
396  struct { detail::_swizzle<4,T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
397  struct { detail::_swizzle<4,T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
398  struct { detail::_swizzle<4,T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+
399  struct { detail::_swizzle<4,T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
400  struct { detail::_swizzle<4,T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
401  struct { detail::_swizzle<4,T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+
402  struct { detail::_swizzle<4,T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+
403  struct { detail::_swizzle<4,T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+
404  struct { detail::_swizzle<4,T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+
405  struct { detail::_swizzle<4,T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+
406  struct { detail::_swizzle<4,T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+
407  struct { detail::_swizzle<4,T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+
408  struct { detail::_swizzle<4,T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+
409  struct { detail::_swizzle<4,T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+
410  struct { detail::_swizzle<4,T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+
411  struct { detail::_swizzle<4,T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+
412  struct { detail::_swizzle<4,T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+
413  struct { detail::_swizzle<4,T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+
414  struct { detail::_swizzle<4,T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
415  struct { detail::_swizzle<4,T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
416  struct { detail::_swizzle<4,T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+
417  struct { detail::_swizzle<4,T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
418  struct { detail::_swizzle<4,T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
419  struct { detail::_swizzle<4,T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+
420  struct { detail::_swizzle<4,T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+
421  struct { detail::_swizzle<4,T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+
422  struct { detail::_swizzle<4,T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+
423  struct { detail::_swizzle<4,T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
424  struct { detail::_swizzle<4,T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
425  struct { detail::_swizzle<4,T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+
426  struct { detail::_swizzle<4,T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
427  struct { detail::_swizzle<4,T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+
428  struct { detail::_swizzle<4,T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+
429  struct { detail::_swizzle<4,T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+
430  struct { detail::_swizzle<4,T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+
431  struct { detail::_swizzle<4,T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+
432  struct { detail::_swizzle<4,T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+
433  struct { detail::_swizzle<4,T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+
434  struct { detail::_swizzle<4,T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+
435  struct { detail::_swizzle<4,T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+
436  struct { detail::_swizzle<4,T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+
437  struct { detail::_swizzle<4,T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+
438  struct { detail::_swizzle<4,T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+
439  struct { detail::_swizzle<4,T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+
440  struct { detail::_swizzle<4,T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+
441  struct { detail::_swizzle<4,T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+
442  struct { detail::_swizzle<4,T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+
443  struct { detail::_swizzle<4,T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+
444  struct { detail::_swizzle<4,T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+
445  struct { detail::_swizzle<4,T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+
446  struct { detail::_swizzle<4,T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+
447  struct { detail::_swizzle<4,T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+
448  struct { detail::_swizzle<4,T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+
449  struct { detail::_swizzle<4,T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+
450  struct { detail::_swizzle<4,T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+
451  struct { detail::_swizzle<4,T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+
452  struct { detail::_swizzle<4,T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+
453  struct { detail::_swizzle<4,T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+
454  struct { detail::_swizzle<4,T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+
455  struct { detail::_swizzle<4,T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+
456  struct { detail::_swizzle<4,T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+
457  struct { detail::_swizzle<4,T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+
458  struct { detail::_swizzle<4,T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+
459  struct { detail::_swizzle<4,T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+
460  struct { detail::_swizzle<4,T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+
461  struct { detail::_swizzle<4,T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+
462  struct { detail::_swizzle<4,T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+
463  struct { detail::_swizzle<4,T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+
464  struct { detail::_swizzle<4,T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+
465  struct { detail::_swizzle<4,T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+
466  struct { detail::_swizzle<4,T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+
467  struct { detail::_swizzle<4,T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; };
+
468 
+
469 #define GLM_SWIZZLE4_2_MEMBERS(T, Q, E0,E1,E2,E3) \
+
470  struct { detail::_swizzle<2,T, Q, 0,0,-1,-2> E0 ## E0; }; \
+
471  struct { detail::_swizzle<2,T, Q, 0,1,-1,-2> E0 ## E1; }; \
+
472  struct { detail::_swizzle<2,T, Q, 0,2,-1,-2> E0 ## E2; }; \
+
473  struct { detail::_swizzle<2,T, Q, 0,3,-1,-2> E0 ## E3; }; \
+
474  struct { detail::_swizzle<2,T, Q, 1,0,-1,-2> E1 ## E0; }; \
+
475  struct { detail::_swizzle<2,T, Q, 1,1,-1,-2> E1 ## E1; }; \
+
476  struct { detail::_swizzle<2,T, Q, 1,2,-1,-2> E1 ## E2; }; \
+
477  struct { detail::_swizzle<2,T, Q, 1,3,-1,-2> E1 ## E3; }; \
+
478  struct { detail::_swizzle<2,T, Q, 2,0,-1,-2> E2 ## E0; }; \
+
479  struct { detail::_swizzle<2,T, Q, 2,1,-1,-2> E2 ## E1; }; \
+
480  struct { detail::_swizzle<2,T, Q, 2,2,-1,-2> E2 ## E2; }; \
+
481  struct { detail::_swizzle<2,T, Q, 2,3,-1,-2> E2 ## E3; }; \
+
482  struct { detail::_swizzle<2,T, Q, 3,0,-1,-2> E3 ## E0; }; \
+
483  struct { detail::_swizzle<2,T, Q, 3,1,-1,-2> E3 ## E1; }; \
+
484  struct { detail::_swizzle<2,T, Q, 3,2,-1,-2> E3 ## E2; }; \
+
485  struct { detail::_swizzle<2,T, Q, 3,3,-1,-2> E3 ## E3; };
+
486 
+
487 #define GLM_SWIZZLE4_3_MEMBERS(T, Q, E0,E1,E2,E3) \
+
488  struct { detail::_swizzle<3, T, Q, 0,0,0,3> E0 ## E0 ## E0; }; \
+
489  struct { detail::_swizzle<3, T, Q, 0,0,1,3> E0 ## E0 ## E1; }; \
+
490  struct { detail::_swizzle<3, T, Q, 0,0,2,3> E0 ## E0 ## E2; }; \
+
491  struct { detail::_swizzle<3, T, Q, 0,0,3,3> E0 ## E0 ## E3; }; \
+
492  struct { detail::_swizzle<3, T, Q, 0,1,0,3> E0 ## E1 ## E0; }; \
+
493  struct { detail::_swizzle<3, T, Q, 0,1,1,3> E0 ## E1 ## E1; }; \
+
494  struct { detail::_swizzle<3, T, Q, 0,1,2,3> E0 ## E1 ## E2; }; \
+
495  struct { detail::_swizzle<3, T, Q, 0,1,3,3> E0 ## E1 ## E3; }; \
+
496  struct { detail::_swizzle<3, T, Q, 0,2,0,3> E0 ## E2 ## E0; }; \
+
497  struct { detail::_swizzle<3, T, Q, 0,2,1,3> E0 ## E2 ## E1; }; \
+
498  struct { detail::_swizzle<3, T, Q, 0,2,2,3> E0 ## E2 ## E2; }; \
+
499  struct { detail::_swizzle<3, T, Q, 0,2,3,3> E0 ## E2 ## E3; }; \
+
500  struct { detail::_swizzle<3, T, Q, 0,3,0,3> E0 ## E3 ## E0; }; \
+
501  struct { detail::_swizzle<3, T, Q, 0,3,1,3> E0 ## E3 ## E1; }; \
+
502  struct { detail::_swizzle<3, T, Q, 0,3,2,3> E0 ## E3 ## E2; }; \
+
503  struct { detail::_swizzle<3, T, Q, 0,3,3,3> E0 ## E3 ## E3; }; \
+
504  struct { detail::_swizzle<3, T, Q, 1,0,0,3> E1 ## E0 ## E0; }; \
+
505  struct { detail::_swizzle<3, T, Q, 1,0,1,3> E1 ## E0 ## E1; }; \
+
506  struct { detail::_swizzle<3, T, Q, 1,0,2,3> E1 ## E0 ## E2; }; \
+
507  struct { detail::_swizzle<3, T, Q, 1,0,3,3> E1 ## E0 ## E3; }; \
+
508  struct { detail::_swizzle<3, T, Q, 1,1,0,3> E1 ## E1 ## E0; }; \
+
509  struct { detail::_swizzle<3, T, Q, 1,1,1,3> E1 ## E1 ## E1; }; \
+
510  struct { detail::_swizzle<3, T, Q, 1,1,2,3> E1 ## E1 ## E2; }; \
+
511  struct { detail::_swizzle<3, T, Q, 1,1,3,3> E1 ## E1 ## E3; }; \
+
512  struct { detail::_swizzle<3, T, Q, 1,2,0,3> E1 ## E2 ## E0; }; \
+
513  struct { detail::_swizzle<3, T, Q, 1,2,1,3> E1 ## E2 ## E1; }; \
+
514  struct { detail::_swizzle<3, T, Q, 1,2,2,3> E1 ## E2 ## E2; }; \
+
515  struct { detail::_swizzle<3, T, Q, 1,2,3,3> E1 ## E2 ## E3; }; \
+
516  struct { detail::_swizzle<3, T, Q, 1,3,0,3> E1 ## E3 ## E0; }; \
+
517  struct { detail::_swizzle<3, T, Q, 1,3,1,3> E1 ## E3 ## E1; }; \
+
518  struct { detail::_swizzle<3, T, Q, 1,3,2,3> E1 ## E3 ## E2; }; \
+
519  struct { detail::_swizzle<3, T, Q, 1,3,3,3> E1 ## E3 ## E3; }; \
+
520  struct { detail::_swizzle<3, T, Q, 2,0,0,3> E2 ## E0 ## E0; }; \
+
521  struct { detail::_swizzle<3, T, Q, 2,0,1,3> E2 ## E0 ## E1; }; \
+
522  struct { detail::_swizzle<3, T, Q, 2,0,2,3> E2 ## E0 ## E2; }; \
+
523  struct { detail::_swizzle<3, T, Q, 2,0,3,3> E2 ## E0 ## E3; }; \
+
524  struct { detail::_swizzle<3, T, Q, 2,1,0,3> E2 ## E1 ## E0; }; \
+
525  struct { detail::_swizzle<3, T, Q, 2,1,1,3> E2 ## E1 ## E1; }; \
+
526  struct { detail::_swizzle<3, T, Q, 2,1,2,3> E2 ## E1 ## E2; }; \
+
527  struct { detail::_swizzle<3, T, Q, 2,1,3,3> E2 ## E1 ## E3; }; \
+
528  struct { detail::_swizzle<3, T, Q, 2,2,0,3> E2 ## E2 ## E0; }; \
+
529  struct { detail::_swizzle<3, T, Q, 2,2,1,3> E2 ## E2 ## E1; }; \
+
530  struct { detail::_swizzle<3, T, Q, 2,2,2,3> E2 ## E2 ## E2; }; \
+
531  struct { detail::_swizzle<3, T, Q, 2,2,3,3> E2 ## E2 ## E3; }; \
+
532  struct { detail::_swizzle<3, T, Q, 2,3,0,3> E2 ## E3 ## E0; }; \
+
533  struct { detail::_swizzle<3, T, Q, 2,3,1,3> E2 ## E3 ## E1; }; \
+
534  struct { detail::_swizzle<3, T, Q, 2,3,2,3> E2 ## E3 ## E2; }; \
+
535  struct { detail::_swizzle<3, T, Q, 2,3,3,3> E2 ## E3 ## E3; }; \
+
536  struct { detail::_swizzle<3, T, Q, 3,0,0,3> E3 ## E0 ## E0; }; \
+
537  struct { detail::_swizzle<3, T, Q, 3,0,1,3> E3 ## E0 ## E1; }; \
+
538  struct { detail::_swizzle<3, T, Q, 3,0,2,3> E3 ## E0 ## E2; }; \
+
539  struct { detail::_swizzle<3, T, Q, 3,0,3,3> E3 ## E0 ## E3; }; \
+
540  struct { detail::_swizzle<3, T, Q, 3,1,0,3> E3 ## E1 ## E0; }; \
+
541  struct { detail::_swizzle<3, T, Q, 3,1,1,3> E3 ## E1 ## E1; }; \
+
542  struct { detail::_swizzle<3, T, Q, 3,1,2,3> E3 ## E1 ## E2; }; \
+
543  struct { detail::_swizzle<3, T, Q, 3,1,3,3> E3 ## E1 ## E3; }; \
+
544  struct { detail::_swizzle<3, T, Q, 3,2,0,3> E3 ## E2 ## E0; }; \
+
545  struct { detail::_swizzle<3, T, Q, 3,2,1,3> E3 ## E2 ## E1; }; \
+
546  struct { detail::_swizzle<3, T, Q, 3,2,2,3> E3 ## E2 ## E2; }; \
+
547  struct { detail::_swizzle<3, T, Q, 3,2,3,3> E3 ## E2 ## E3; }; \
+
548  struct { detail::_swizzle<3, T, Q, 3,3,0,3> E3 ## E3 ## E0; }; \
+
549  struct { detail::_swizzle<3, T, Q, 3,3,1,3> E3 ## E3 ## E1; }; \
+
550  struct { detail::_swizzle<3, T, Q, 3,3,2,3> E3 ## E3 ## E2; }; \
+
551  struct { detail::_swizzle<3, T, Q, 3,3,3,3> E3 ## E3 ## E3; };
+
552 
+
553 #define GLM_SWIZZLE4_4_MEMBERS(T, Q, E0,E1,E2,E3) \
+
554  struct { detail::_swizzle<4, T, Q, 0,0,0,0> E0 ## E0 ## E0 ## E0; }; \
+
555  struct { detail::_swizzle<4, T, Q, 0,0,0,1> E0 ## E0 ## E0 ## E1; }; \
+
556  struct { detail::_swizzle<4, T, Q, 0,0,0,2> E0 ## E0 ## E0 ## E2; }; \
+
557  struct { detail::_swizzle<4, T, Q, 0,0,0,3> E0 ## E0 ## E0 ## E3; }; \
+
558  struct { detail::_swizzle<4, T, Q, 0,0,1,0> E0 ## E0 ## E1 ## E0; }; \
+
559  struct { detail::_swizzle<4, T, Q, 0,0,1,1> E0 ## E0 ## E1 ## E1; }; \
+
560  struct { detail::_swizzle<4, T, Q, 0,0,1,2> E0 ## E0 ## E1 ## E2; }; \
+
561  struct { detail::_swizzle<4, T, Q, 0,0,1,3> E0 ## E0 ## E1 ## E3; }; \
+
562  struct { detail::_swizzle<4, T, Q, 0,0,2,0> E0 ## E0 ## E2 ## E0; }; \
+
563  struct { detail::_swizzle<4, T, Q, 0,0,2,1> E0 ## E0 ## E2 ## E1; }; \
+
564  struct { detail::_swizzle<4, T, Q, 0,0,2,2> E0 ## E0 ## E2 ## E2; }; \
+
565  struct { detail::_swizzle<4, T, Q, 0,0,2,3> E0 ## E0 ## E2 ## E3; }; \
+
566  struct { detail::_swizzle<4, T, Q, 0,0,3,0> E0 ## E0 ## E3 ## E0; }; \
+
567  struct { detail::_swizzle<4, T, Q, 0,0,3,1> E0 ## E0 ## E3 ## E1; }; \
+
568  struct { detail::_swizzle<4, T, Q, 0,0,3,2> E0 ## E0 ## E3 ## E2; }; \
+
569  struct { detail::_swizzle<4, T, Q, 0,0,3,3> E0 ## E0 ## E3 ## E3; }; \
+
570  struct { detail::_swizzle<4, T, Q, 0,1,0,0> E0 ## E1 ## E0 ## E0; }; \
+
571  struct { detail::_swizzle<4, T, Q, 0,1,0,1> E0 ## E1 ## E0 ## E1; }; \
+
572  struct { detail::_swizzle<4, T, Q, 0,1,0,2> E0 ## E1 ## E0 ## E2; }; \
+
573  struct { detail::_swizzle<4, T, Q, 0,1,0,3> E0 ## E1 ## E0 ## E3; }; \
+
574  struct { detail::_swizzle<4, T, Q, 0,1,1,0> E0 ## E1 ## E1 ## E0; }; \
+
575  struct { detail::_swizzle<4, T, Q, 0,1,1,1> E0 ## E1 ## E1 ## E1; }; \
+
576  struct { detail::_swizzle<4, T, Q, 0,1,1,2> E0 ## E1 ## E1 ## E2; }; \
+
577  struct { detail::_swizzle<4, T, Q, 0,1,1,3> E0 ## E1 ## E1 ## E3; }; \
+
578  struct { detail::_swizzle<4, T, Q, 0,1,2,0> E0 ## E1 ## E2 ## E0; }; \
+
579  struct { detail::_swizzle<4, T, Q, 0,1,2,1> E0 ## E1 ## E2 ## E1; }; \
+
580  struct { detail::_swizzle<4, T, Q, 0,1,2,2> E0 ## E1 ## E2 ## E2; }; \
+
581  struct { detail::_swizzle<4, T, Q, 0,1,2,3> E0 ## E1 ## E2 ## E3; }; \
+
582  struct { detail::_swizzle<4, T, Q, 0,1,3,0> E0 ## E1 ## E3 ## E0; }; \
+
583  struct { detail::_swizzle<4, T, Q, 0,1,3,1> E0 ## E1 ## E3 ## E1; }; \
+
584  struct { detail::_swizzle<4, T, Q, 0,1,3,2> E0 ## E1 ## E3 ## E2; }; \
+
585  struct { detail::_swizzle<4, T, Q, 0,1,3,3> E0 ## E1 ## E3 ## E3; }; \
+
586  struct { detail::_swizzle<4, T, Q, 0,2,0,0> E0 ## E2 ## E0 ## E0; }; \
+
587  struct { detail::_swizzle<4, T, Q, 0,2,0,1> E0 ## E2 ## E0 ## E1; }; \
+
588  struct { detail::_swizzle<4, T, Q, 0,2,0,2> E0 ## E2 ## E0 ## E2; }; \
+
589  struct { detail::_swizzle<4, T, Q, 0,2,0,3> E0 ## E2 ## E0 ## E3; }; \
+
590  struct { detail::_swizzle<4, T, Q, 0,2,1,0> E0 ## E2 ## E1 ## E0; }; \
+
591  struct { detail::_swizzle<4, T, Q, 0,2,1,1> E0 ## E2 ## E1 ## E1; }; \
+
592  struct { detail::_swizzle<4, T, Q, 0,2,1,2> E0 ## E2 ## E1 ## E2; }; \
+
593  struct { detail::_swizzle<4, T, Q, 0,2,1,3> E0 ## E2 ## E1 ## E3; }; \
+
594  struct { detail::_swizzle<4, T, Q, 0,2,2,0> E0 ## E2 ## E2 ## E0; }; \
+
595  struct { detail::_swizzle<4, T, Q, 0,2,2,1> E0 ## E2 ## E2 ## E1; }; \
+
596  struct { detail::_swizzle<4, T, Q, 0,2,2,2> E0 ## E2 ## E2 ## E2; }; \
+
597  struct { detail::_swizzle<4, T, Q, 0,2,2,3> E0 ## E2 ## E2 ## E3; }; \
+
598  struct { detail::_swizzle<4, T, Q, 0,2,3,0> E0 ## E2 ## E3 ## E0; }; \
+
599  struct { detail::_swizzle<4, T, Q, 0,2,3,1> E0 ## E2 ## E3 ## E1; }; \
+
600  struct { detail::_swizzle<4, T, Q, 0,2,3,2> E0 ## E2 ## E3 ## E2; }; \
+
601  struct { detail::_swizzle<4, T, Q, 0,2,3,3> E0 ## E2 ## E3 ## E3; }; \
+
602  struct { detail::_swizzle<4, T, Q, 0,3,0,0> E0 ## E3 ## E0 ## E0; }; \
+
603  struct { detail::_swizzle<4, T, Q, 0,3,0,1> E0 ## E3 ## E0 ## E1; }; \
+
604  struct { detail::_swizzle<4, T, Q, 0,3,0,2> E0 ## E3 ## E0 ## E2; }; \
+
605  struct { detail::_swizzle<4, T, Q, 0,3,0,3> E0 ## E3 ## E0 ## E3; }; \
+
606  struct { detail::_swizzle<4, T, Q, 0,3,1,0> E0 ## E3 ## E1 ## E0; }; \
+
607  struct { detail::_swizzle<4, T, Q, 0,3,1,1> E0 ## E3 ## E1 ## E1; }; \
+
608  struct { detail::_swizzle<4, T, Q, 0,3,1,2> E0 ## E3 ## E1 ## E2; }; \
+
609  struct { detail::_swizzle<4, T, Q, 0,3,1,3> E0 ## E3 ## E1 ## E3; }; \
+
610  struct { detail::_swizzle<4, T, Q, 0,3,2,0> E0 ## E3 ## E2 ## E0; }; \
+
611  struct { detail::_swizzle<4, T, Q, 0,3,2,1> E0 ## E3 ## E2 ## E1; }; \
+
612  struct { detail::_swizzle<4, T, Q, 0,3,2,2> E0 ## E3 ## E2 ## E2; }; \
+
613  struct { detail::_swizzle<4, T, Q, 0,3,2,3> E0 ## E3 ## E2 ## E3; }; \
+
614  struct { detail::_swizzle<4, T, Q, 0,3,3,0> E0 ## E3 ## E3 ## E0; }; \
+
615  struct { detail::_swizzle<4, T, Q, 0,3,3,1> E0 ## E3 ## E3 ## E1; }; \
+
616  struct { detail::_swizzle<4, T, Q, 0,3,3,2> E0 ## E3 ## E3 ## E2; }; \
+
617  struct { detail::_swizzle<4, T, Q, 0,3,3,3> E0 ## E3 ## E3 ## E3; }; \
+
618  struct { detail::_swizzle<4, T, Q, 1,0,0,0> E1 ## E0 ## E0 ## E0; }; \
+
619  struct { detail::_swizzle<4, T, Q, 1,0,0,1> E1 ## E0 ## E0 ## E1; }; \
+
620  struct { detail::_swizzle<4, T, Q, 1,0,0,2> E1 ## E0 ## E0 ## E2; }; \
+
621  struct { detail::_swizzle<4, T, Q, 1,0,0,3> E1 ## E0 ## E0 ## E3; }; \
+
622  struct { detail::_swizzle<4, T, Q, 1,0,1,0> E1 ## E0 ## E1 ## E0; }; \
+
623  struct { detail::_swizzle<4, T, Q, 1,0,1,1> E1 ## E0 ## E1 ## E1; }; \
+
624  struct { detail::_swizzle<4, T, Q, 1,0,1,2> E1 ## E0 ## E1 ## E2; }; \
+
625  struct { detail::_swizzle<4, T, Q, 1,0,1,3> E1 ## E0 ## E1 ## E3; }; \
+
626  struct { detail::_swizzle<4, T, Q, 1,0,2,0> E1 ## E0 ## E2 ## E0; }; \
+
627  struct { detail::_swizzle<4, T, Q, 1,0,2,1> E1 ## E0 ## E2 ## E1; }; \
+
628  struct { detail::_swizzle<4, T, Q, 1,0,2,2> E1 ## E0 ## E2 ## E2; }; \
+
629  struct { detail::_swizzle<4, T, Q, 1,0,2,3> E1 ## E0 ## E2 ## E3; }; \
+
630  struct { detail::_swizzle<4, T, Q, 1,0,3,0> E1 ## E0 ## E3 ## E0; }; \
+
631  struct { detail::_swizzle<4, T, Q, 1,0,3,1> E1 ## E0 ## E3 ## E1; }; \
+
632  struct { detail::_swizzle<4, T, Q, 1,0,3,2> E1 ## E0 ## E3 ## E2; }; \
+
633  struct { detail::_swizzle<4, T, Q, 1,0,3,3> E1 ## E0 ## E3 ## E3; }; \
+
634  struct { detail::_swizzle<4, T, Q, 1,1,0,0> E1 ## E1 ## E0 ## E0; }; \
+
635  struct { detail::_swizzle<4, T, Q, 1,1,0,1> E1 ## E1 ## E0 ## E1; }; \
+
636  struct { detail::_swizzle<4, T, Q, 1,1,0,2> E1 ## E1 ## E0 ## E2; }; \
+
637  struct { detail::_swizzle<4, T, Q, 1,1,0,3> E1 ## E1 ## E0 ## E3; }; \
+
638  struct { detail::_swizzle<4, T, Q, 1,1,1,0> E1 ## E1 ## E1 ## E0; }; \
+
639  struct { detail::_swizzle<4, T, Q, 1,1,1,1> E1 ## E1 ## E1 ## E1; }; \
+
640  struct { detail::_swizzle<4, T, Q, 1,1,1,2> E1 ## E1 ## E1 ## E2; }; \
+
641  struct { detail::_swizzle<4, T, Q, 1,1,1,3> E1 ## E1 ## E1 ## E3; }; \
+
642  struct { detail::_swizzle<4, T, Q, 1,1,2,0> E1 ## E1 ## E2 ## E0; }; \
+
643  struct { detail::_swizzle<4, T, Q, 1,1,2,1> E1 ## E1 ## E2 ## E1; }; \
+
644  struct { detail::_swizzle<4, T, Q, 1,1,2,2> E1 ## E1 ## E2 ## E2; }; \
+
645  struct { detail::_swizzle<4, T, Q, 1,1,2,3> E1 ## E1 ## E2 ## E3; }; \
+
646  struct { detail::_swizzle<4, T, Q, 1,1,3,0> E1 ## E1 ## E3 ## E0; }; \
+
647  struct { detail::_swizzle<4, T, Q, 1,1,3,1> E1 ## E1 ## E3 ## E1; }; \
+
648  struct { detail::_swizzle<4, T, Q, 1,1,3,2> E1 ## E1 ## E3 ## E2; }; \
+
649  struct { detail::_swizzle<4, T, Q, 1,1,3,3> E1 ## E1 ## E3 ## E3; }; \
+
650  struct { detail::_swizzle<4, T, Q, 1,2,0,0> E1 ## E2 ## E0 ## E0; }; \
+
651  struct { detail::_swizzle<4, T, Q, 1,2,0,1> E1 ## E2 ## E0 ## E1; }; \
+
652  struct { detail::_swizzle<4, T, Q, 1,2,0,2> E1 ## E2 ## E0 ## E2; }; \
+
653  struct { detail::_swizzle<4, T, Q, 1,2,0,3> E1 ## E2 ## E0 ## E3; }; \
+
654  struct { detail::_swizzle<4, T, Q, 1,2,1,0> E1 ## E2 ## E1 ## E0; }; \
+
655  struct { detail::_swizzle<4, T, Q, 1,2,1,1> E1 ## E2 ## E1 ## E1; }; \
+
656  struct { detail::_swizzle<4, T, Q, 1,2,1,2> E1 ## E2 ## E1 ## E2; }; \
+
657  struct { detail::_swizzle<4, T, Q, 1,2,1,3> E1 ## E2 ## E1 ## E3; }; \
+
658  struct { detail::_swizzle<4, T, Q, 1,2,2,0> E1 ## E2 ## E2 ## E0; }; \
+
659  struct { detail::_swizzle<4, T, Q, 1,2,2,1> E1 ## E2 ## E2 ## E1; }; \
+
660  struct { detail::_swizzle<4, T, Q, 1,2,2,2> E1 ## E2 ## E2 ## E2; }; \
+
661  struct { detail::_swizzle<4, T, Q, 1,2,2,3> E1 ## E2 ## E2 ## E3; }; \
+
662  struct { detail::_swizzle<4, T, Q, 1,2,3,0> E1 ## E2 ## E3 ## E0; }; \
+
663  struct { detail::_swizzle<4, T, Q, 1,2,3,1> E1 ## E2 ## E3 ## E1; }; \
+
664  struct { detail::_swizzle<4, T, Q, 1,2,3,2> E1 ## E2 ## E3 ## E2; }; \
+
665  struct { detail::_swizzle<4, T, Q, 1,2,3,3> E1 ## E2 ## E3 ## E3; }; \
+
666  struct { detail::_swizzle<4, T, Q, 1,3,0,0> E1 ## E3 ## E0 ## E0; }; \
+
667  struct { detail::_swizzle<4, T, Q, 1,3,0,1> E1 ## E3 ## E0 ## E1; }; \
+
668  struct { detail::_swizzle<4, T, Q, 1,3,0,2> E1 ## E3 ## E0 ## E2; }; \
+
669  struct { detail::_swizzle<4, T, Q, 1,3,0,3> E1 ## E3 ## E0 ## E3; }; \
+
670  struct { detail::_swizzle<4, T, Q, 1,3,1,0> E1 ## E3 ## E1 ## E0; }; \
+
671  struct { detail::_swizzle<4, T, Q, 1,3,1,1> E1 ## E3 ## E1 ## E1; }; \
+
672  struct { detail::_swizzle<4, T, Q, 1,3,1,2> E1 ## E3 ## E1 ## E2; }; \
+
673  struct { detail::_swizzle<4, T, Q, 1,3,1,3> E1 ## E3 ## E1 ## E3; }; \
+
674  struct { detail::_swizzle<4, T, Q, 1,3,2,0> E1 ## E3 ## E2 ## E0; }; \
+
675  struct { detail::_swizzle<4, T, Q, 1,3,2,1> E1 ## E3 ## E2 ## E1; }; \
+
676  struct { detail::_swizzle<4, T, Q, 1,3,2,2> E1 ## E3 ## E2 ## E2; }; \
+
677  struct { detail::_swizzle<4, T, Q, 1,3,2,3> E1 ## E3 ## E2 ## E3; }; \
+
678  struct { detail::_swizzle<4, T, Q, 1,3,3,0> E1 ## E3 ## E3 ## E0; }; \
+
679  struct { detail::_swizzle<4, T, Q, 1,3,3,1> E1 ## E3 ## E3 ## E1; }; \
+
680  struct { detail::_swizzle<4, T, Q, 1,3,3,2> E1 ## E3 ## E3 ## E2; }; \
+
681  struct { detail::_swizzle<4, T, Q, 1,3,3,3> E1 ## E3 ## E3 ## E3; }; \
+
682  struct { detail::_swizzle<4, T, Q, 2,0,0,0> E2 ## E0 ## E0 ## E0; }; \
+
683  struct { detail::_swizzle<4, T, Q, 2,0,0,1> E2 ## E0 ## E0 ## E1; }; \
+
684  struct { detail::_swizzle<4, T, Q, 2,0,0,2> E2 ## E0 ## E0 ## E2; }; \
+
685  struct { detail::_swizzle<4, T, Q, 2,0,0,3> E2 ## E0 ## E0 ## E3; }; \
+
686  struct { detail::_swizzle<4, T, Q, 2,0,1,0> E2 ## E0 ## E1 ## E0; }; \
+
687  struct { detail::_swizzle<4, T, Q, 2,0,1,1> E2 ## E0 ## E1 ## E1; }; \
+
688  struct { detail::_swizzle<4, T, Q, 2,0,1,2> E2 ## E0 ## E1 ## E2; }; \
+
689  struct { detail::_swizzle<4, T, Q, 2,0,1,3> E2 ## E0 ## E1 ## E3; }; \
+
690  struct { detail::_swizzle<4, T, Q, 2,0,2,0> E2 ## E0 ## E2 ## E0; }; \
+
691  struct { detail::_swizzle<4, T, Q, 2,0,2,1> E2 ## E0 ## E2 ## E1; }; \
+
692  struct { detail::_swizzle<4, T, Q, 2,0,2,2> E2 ## E0 ## E2 ## E2; }; \
+
693  struct { detail::_swizzle<4, T, Q, 2,0,2,3> E2 ## E0 ## E2 ## E3; }; \
+
694  struct { detail::_swizzle<4, T, Q, 2,0,3,0> E2 ## E0 ## E3 ## E0; }; \
+
695  struct { detail::_swizzle<4, T, Q, 2,0,3,1> E2 ## E0 ## E3 ## E1; }; \
+
696  struct { detail::_swizzle<4, T, Q, 2,0,3,2> E2 ## E0 ## E3 ## E2; }; \
+
697  struct { detail::_swizzle<4, T, Q, 2,0,3,3> E2 ## E0 ## E3 ## E3; }; \
+
698  struct { detail::_swizzle<4, T, Q, 2,1,0,0> E2 ## E1 ## E0 ## E0; }; \
+
699  struct { detail::_swizzle<4, T, Q, 2,1,0,1> E2 ## E1 ## E0 ## E1; }; \
+
700  struct { detail::_swizzle<4, T, Q, 2,1,0,2> E2 ## E1 ## E0 ## E2; }; \
+
701  struct { detail::_swizzle<4, T, Q, 2,1,0,3> E2 ## E1 ## E0 ## E3; }; \
+
702  struct { detail::_swizzle<4, T, Q, 2,1,1,0> E2 ## E1 ## E1 ## E0; }; \
+
703  struct { detail::_swizzle<4, T, Q, 2,1,1,1> E2 ## E1 ## E1 ## E1; }; \
+
704  struct { detail::_swizzle<4, T, Q, 2,1,1,2> E2 ## E1 ## E1 ## E2; }; \
+
705  struct { detail::_swizzle<4, T, Q, 2,1,1,3> E2 ## E1 ## E1 ## E3; }; \
+
706  struct { detail::_swizzle<4, T, Q, 2,1,2,0> E2 ## E1 ## E2 ## E0; }; \
+
707  struct { detail::_swizzle<4, T, Q, 2,1,2,1> E2 ## E1 ## E2 ## E1; }; \
+
708  struct { detail::_swizzle<4, T, Q, 2,1,2,2> E2 ## E1 ## E2 ## E2; }; \
+
709  struct { detail::_swizzle<4, T, Q, 2,1,2,3> E2 ## E1 ## E2 ## E3; }; \
+
710  struct { detail::_swizzle<4, T, Q, 2,1,3,0> E2 ## E1 ## E3 ## E0; }; \
+
711  struct { detail::_swizzle<4, T, Q, 2,1,3,1> E2 ## E1 ## E3 ## E1; }; \
+
712  struct { detail::_swizzle<4, T, Q, 2,1,3,2> E2 ## E1 ## E3 ## E2; }; \
+
713  struct { detail::_swizzle<4, T, Q, 2,1,3,3> E2 ## E1 ## E3 ## E3; }; \
+
714  struct { detail::_swizzle<4, T, Q, 2,2,0,0> E2 ## E2 ## E0 ## E0; }; \
+
715  struct { detail::_swizzle<4, T, Q, 2,2,0,1> E2 ## E2 ## E0 ## E1; }; \
+
716  struct { detail::_swizzle<4, T, Q, 2,2,0,2> E2 ## E2 ## E0 ## E2; }; \
+
717  struct { detail::_swizzle<4, T, Q, 2,2,0,3> E2 ## E2 ## E0 ## E3; }; \
+
718  struct { detail::_swizzle<4, T, Q, 2,2,1,0> E2 ## E2 ## E1 ## E0; }; \
+
719  struct { detail::_swizzle<4, T, Q, 2,2,1,1> E2 ## E2 ## E1 ## E1; }; \
+
720  struct { detail::_swizzle<4, T, Q, 2,2,1,2> E2 ## E2 ## E1 ## E2; }; \
+
721  struct { detail::_swizzle<4, T, Q, 2,2,1,3> E2 ## E2 ## E1 ## E3; }; \
+
722  struct { detail::_swizzle<4, T, Q, 2,2,2,0> E2 ## E2 ## E2 ## E0; }; \
+
723  struct { detail::_swizzle<4, T, Q, 2,2,2,1> E2 ## E2 ## E2 ## E1; }; \
+
724  struct { detail::_swizzle<4, T, Q, 2,2,2,2> E2 ## E2 ## E2 ## E2; }; \
+
725  struct { detail::_swizzle<4, T, Q, 2,2,2,3> E2 ## E2 ## E2 ## E3; }; \
+
726  struct { detail::_swizzle<4, T, Q, 2,2,3,0> E2 ## E2 ## E3 ## E0; }; \
+
727  struct { detail::_swizzle<4, T, Q, 2,2,3,1> E2 ## E2 ## E3 ## E1; }; \
+
728  struct { detail::_swizzle<4, T, Q, 2,2,3,2> E2 ## E2 ## E3 ## E2; }; \
+
729  struct { detail::_swizzle<4, T, Q, 2,2,3,3> E2 ## E2 ## E3 ## E3; }; \
+
730  struct { detail::_swizzle<4, T, Q, 2,3,0,0> E2 ## E3 ## E0 ## E0; }; \
+
731  struct { detail::_swizzle<4, T, Q, 2,3,0,1> E2 ## E3 ## E0 ## E1; }; \
+
732  struct { detail::_swizzle<4, T, Q, 2,3,0,2> E2 ## E3 ## E0 ## E2; }; \
+
733  struct { detail::_swizzle<4, T, Q, 2,3,0,3> E2 ## E3 ## E0 ## E3; }; \
+
734  struct { detail::_swizzle<4, T, Q, 2,3,1,0> E2 ## E3 ## E1 ## E0; }; \
+
735  struct { detail::_swizzle<4, T, Q, 2,3,1,1> E2 ## E3 ## E1 ## E1; }; \
+
736  struct { detail::_swizzle<4, T, Q, 2,3,1,2> E2 ## E3 ## E1 ## E2; }; \
+
737  struct { detail::_swizzle<4, T, Q, 2,3,1,3> E2 ## E3 ## E1 ## E3; }; \
+
738  struct { detail::_swizzle<4, T, Q, 2,3,2,0> E2 ## E3 ## E2 ## E0; }; \
+
739  struct { detail::_swizzle<4, T, Q, 2,3,2,1> E2 ## E3 ## E2 ## E1; }; \
+
740  struct { detail::_swizzle<4, T, Q, 2,3,2,2> E2 ## E3 ## E2 ## E2; }; \
+
741  struct { detail::_swizzle<4, T, Q, 2,3,2,3> E2 ## E3 ## E2 ## E3; }; \
+
742  struct { detail::_swizzle<4, T, Q, 2,3,3,0> E2 ## E3 ## E3 ## E0; }; \
+
743  struct { detail::_swizzle<4, T, Q, 2,3,3,1> E2 ## E3 ## E3 ## E1; }; \
+
744  struct { detail::_swizzle<4, T, Q, 2,3,3,2> E2 ## E3 ## E3 ## E2; }; \
+
745  struct { detail::_swizzle<4, T, Q, 2,3,3,3> E2 ## E3 ## E3 ## E3; }; \
+
746  struct { detail::_swizzle<4, T, Q, 3,0,0,0> E3 ## E0 ## E0 ## E0; }; \
+
747  struct { detail::_swizzle<4, T, Q, 3,0,0,1> E3 ## E0 ## E0 ## E1; }; \
+
748  struct { detail::_swizzle<4, T, Q, 3,0,0,2> E3 ## E0 ## E0 ## E2; }; \
+
749  struct { detail::_swizzle<4, T, Q, 3,0,0,3> E3 ## E0 ## E0 ## E3; }; \
+
750  struct { detail::_swizzle<4, T, Q, 3,0,1,0> E3 ## E0 ## E1 ## E0; }; \
+
751  struct { detail::_swizzle<4, T, Q, 3,0,1,1> E3 ## E0 ## E1 ## E1; }; \
+
752  struct { detail::_swizzle<4, T, Q, 3,0,1,2> E3 ## E0 ## E1 ## E2; }; \
+
753  struct { detail::_swizzle<4, T, Q, 3,0,1,3> E3 ## E0 ## E1 ## E3; }; \
+
754  struct { detail::_swizzle<4, T, Q, 3,0,2,0> E3 ## E0 ## E2 ## E0; }; \
+
755  struct { detail::_swizzle<4, T, Q, 3,0,2,1> E3 ## E0 ## E2 ## E1; }; \
+
756  struct { detail::_swizzle<4, T, Q, 3,0,2,2> E3 ## E0 ## E2 ## E2; }; \
+
757  struct { detail::_swizzle<4, T, Q, 3,0,2,3> E3 ## E0 ## E2 ## E3; }; \
+
758  struct { detail::_swizzle<4, T, Q, 3,0,3,0> E3 ## E0 ## E3 ## E0; }; \
+
759  struct { detail::_swizzle<4, T, Q, 3,0,3,1> E3 ## E0 ## E3 ## E1; }; \
+
760  struct { detail::_swizzle<4, T, Q, 3,0,3,2> E3 ## E0 ## E3 ## E2; }; \
+
761  struct { detail::_swizzle<4, T, Q, 3,0,3,3> E3 ## E0 ## E3 ## E3; }; \
+
762  struct { detail::_swizzle<4, T, Q, 3,1,0,0> E3 ## E1 ## E0 ## E0; }; \
+
763  struct { detail::_swizzle<4, T, Q, 3,1,0,1> E3 ## E1 ## E0 ## E1; }; \
+
764  struct { detail::_swizzle<4, T, Q, 3,1,0,2> E3 ## E1 ## E0 ## E2; }; \
+
765  struct { detail::_swizzle<4, T, Q, 3,1,0,3> E3 ## E1 ## E0 ## E3; }; \
+
766  struct { detail::_swizzle<4, T, Q, 3,1,1,0> E3 ## E1 ## E1 ## E0; }; \
+
767  struct { detail::_swizzle<4, T, Q, 3,1,1,1> E3 ## E1 ## E1 ## E1; }; \
+
768  struct { detail::_swizzle<4, T, Q, 3,1,1,2> E3 ## E1 ## E1 ## E2; }; \
+
769  struct { detail::_swizzle<4, T, Q, 3,1,1,3> E3 ## E1 ## E1 ## E3; }; \
+
770  struct { detail::_swizzle<4, T, Q, 3,1,2,0> E3 ## E1 ## E2 ## E0; }; \
+
771  struct { detail::_swizzle<4, T, Q, 3,1,2,1> E3 ## E1 ## E2 ## E1; }; \
+
772  struct { detail::_swizzle<4, T, Q, 3,1,2,2> E3 ## E1 ## E2 ## E2; }; \
+
773  struct { detail::_swizzle<4, T, Q, 3,1,2,3> E3 ## E1 ## E2 ## E3; }; \
+
774  struct { detail::_swizzle<4, T, Q, 3,1,3,0> E3 ## E1 ## E3 ## E0; }; \
+
775  struct { detail::_swizzle<4, T, Q, 3,1,3,1> E3 ## E1 ## E3 ## E1; }; \
+
776  struct { detail::_swizzle<4, T, Q, 3,1,3,2> E3 ## E1 ## E3 ## E2; }; \
+
777  struct { detail::_swizzle<4, T, Q, 3,1,3,3> E3 ## E1 ## E3 ## E3; }; \
+
778  struct { detail::_swizzle<4, T, Q, 3,2,0,0> E3 ## E2 ## E0 ## E0; }; \
+
779  struct { detail::_swizzle<4, T, Q, 3,2,0,1> E3 ## E2 ## E0 ## E1; }; \
+
780  struct { detail::_swizzle<4, T, Q, 3,2,0,2> E3 ## E2 ## E0 ## E2; }; \
+
781  struct { detail::_swizzle<4, T, Q, 3,2,0,3> E3 ## E2 ## E0 ## E3; }; \
+
782  struct { detail::_swizzle<4, T, Q, 3,2,1,0> E3 ## E2 ## E1 ## E0; }; \
+
783  struct { detail::_swizzle<4, T, Q, 3,2,1,1> E3 ## E2 ## E1 ## E1; }; \
+
784  struct { detail::_swizzle<4, T, Q, 3,2,1,2> E3 ## E2 ## E1 ## E2; }; \
+
785  struct { detail::_swizzle<4, T, Q, 3,2,1,3> E3 ## E2 ## E1 ## E3; }; \
+
786  struct { detail::_swizzle<4, T, Q, 3,2,2,0> E3 ## E2 ## E2 ## E0; }; \
+
787  struct { detail::_swizzle<4, T, Q, 3,2,2,1> E3 ## E2 ## E2 ## E1; }; \
+
788  struct { detail::_swizzle<4, T, Q, 3,2,2,2> E3 ## E2 ## E2 ## E2; }; \
+
789  struct { detail::_swizzle<4, T, Q, 3,2,2,3> E3 ## E2 ## E2 ## E3; }; \
+
790  struct { detail::_swizzle<4, T, Q, 3,2,3,0> E3 ## E2 ## E3 ## E0; }; \
+
791  struct { detail::_swizzle<4, T, Q, 3,2,3,1> E3 ## E2 ## E3 ## E1; }; \
+
792  struct { detail::_swizzle<4, T, Q, 3,2,3,2> E3 ## E2 ## E3 ## E2; }; \
+
793  struct { detail::_swizzle<4, T, Q, 3,2,3,3> E3 ## E2 ## E3 ## E3; }; \
+
794  struct { detail::_swizzle<4, T, Q, 3,3,0,0> E3 ## E3 ## E0 ## E0; }; \
+
795  struct { detail::_swizzle<4, T, Q, 3,3,0,1> E3 ## E3 ## E0 ## E1; }; \
+
796  struct { detail::_swizzle<4, T, Q, 3,3,0,2> E3 ## E3 ## E0 ## E2; }; \
+
797  struct { detail::_swizzle<4, T, Q, 3,3,0,3> E3 ## E3 ## E0 ## E3; }; \
+
798  struct { detail::_swizzle<4, T, Q, 3,3,1,0> E3 ## E3 ## E1 ## E0; }; \
+
799  struct { detail::_swizzle<4, T, Q, 3,3,1,1> E3 ## E3 ## E1 ## E1; }; \
+
800  struct { detail::_swizzle<4, T, Q, 3,3,1,2> E3 ## E3 ## E1 ## E2; }; \
+
801  struct { detail::_swizzle<4, T, Q, 3,3,1,3> E3 ## E3 ## E1 ## E3; }; \
+
802  struct { detail::_swizzle<4, T, Q, 3,3,2,0> E3 ## E3 ## E2 ## E0; }; \
+
803  struct { detail::_swizzle<4, T, Q, 3,3,2,1> E3 ## E3 ## E2 ## E1; }; \
+
804  struct { detail::_swizzle<4, T, Q, 3,3,2,2> E3 ## E3 ## E2 ## E2; }; \
+
805  struct { detail::_swizzle<4, T, Q, 3,3,2,3> E3 ## E3 ## E2 ## E3; }; \
+
806  struct { detail::_swizzle<4, T, Q, 3,3,3,0> E3 ## E3 ## E3 ## E0; }; \
+
807  struct { detail::_swizzle<4, T, Q, 3,3,3,1> E3 ## E3 ## E3 ## E1; }; \
+
808  struct { detail::_swizzle<4, T, Q, 3,3,3,2> E3 ## E3 ## E3 ## E2; }; \
+
809  struct { detail::_swizzle<4, T, Q, 3,3,3,3> E3 ## E3 ## E3 ## E3; };
+
+
GLM_FUNC_DECL GLM_CONSTEXPR genType e()
Return e constant.
+ + + + diff --git a/include/glm/doc/api/a00017_source.html b/include/glm/doc/api/a00017_source.html new file mode 100644 index 0000000..c24f7bf --- /dev/null +++ b/include/glm/doc/api/a00017_source.html @@ -0,0 +1,763 @@ + + + + + + + +1.0.2 API documentation: _swizzle_func.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_swizzle_func.hpp
+
+
+
1 #pragma once
+
2 
+
3 #define GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, CONST, A, B) \
+
4  GLM_FUNC_QUALIFIER vec<2, T, Q> A ## B() CONST \
+
5  { \
+
6  return vec<2, T, Q>(this->A, this->B); \
+
7  }
+
8 
+
9 #define GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, CONST, A, B, C) \
+
10  GLM_FUNC_QUALIFIER vec<3, T, Q> A ## B ## C() CONST \
+
11  { \
+
12  return vec<3, T, Q>(this->A, this->B, this->C); \
+
13  }
+
14 
+
15 #define GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, CONST, A, B, C, D) \
+
16  GLM_FUNC_QUALIFIER vec<4, T, Q> A ## B ## C ## D() CONST \
+
17  { \
+
18  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
+
19  }
+
20 
+
21 #define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(T, P, L, CONST, A, B) \
+
22  template<typename T> \
+
23  GLM_FUNC_QUALIFIER vec<L, T, Q> vec<L, T, Q>::A ## B() CONST \
+
24  { \
+
25  return vec<2, T, Q>(this->A, this->B); \
+
26  }
+
27 
+
28 #define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(T, P, L, CONST, A, B, C) \
+
29  template<typename T> \
+
30  GLM_FUNC_QUALIFIER vec<3, T, Q> vec<L, T, Q>::A ## B ## C() CONST \
+
31  { \
+
32  return vec<3, T, Q>(this->A, this->B, this->C); \
+
33  }
+
34 
+
35 #define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(T, P, L, CONST, A, B, C, D) \
+
36  template<typename T> \
+
37  GLM_FUNC_QUALIFIER vec<4, T, Q> vec<L, T, Q>::A ## B ## C ## D() CONST \
+
38  { \
+
39  return vec<4, T, Q>(this->A, this->B, this->C, this->D); \
+
40  }
+
41 
+
42 #define GLM_MUTABLE
+
43 
+
44 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
45  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, A, B) \
+
46  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, 2, GLM_MUTABLE, B, A)
+
47 
+
48 #define GLM_SWIZZLE_GEN_REF_FROM_VEC2(T, P) \
+
49  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, x, y) \
+
50  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, r, g) \
+
51  GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(T, P, s, t)
+
52 
+
53 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
54  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
+
55  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
+
56  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
+
57  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
+
58  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
+
59  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B)
+
60 
+
61 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
62  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, B, C) \
+
63  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, A, C, B) \
+
64  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, A, C) \
+
65  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, B, C, A) \
+
66  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, A, B) \
+
67  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, GLM_MUTABLE, C, B, A)
+
68 
+
69 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, A, B, C) \
+
70  GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
71  GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(T, P, A, B, C)
+
72 
+
73 #define GLM_SWIZZLE_GEN_REF_FROM_VEC3(T, P) \
+
74  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, x, y, z) \
+
75  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, r, g, b) \
+
76  GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(T, P, s, t, p)
+
77 
+
78 #define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
79  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, B) \
+
80  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, C) \
+
81  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, A, D) \
+
82  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, A) \
+
83  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, C) \
+
84  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, B, D) \
+
85  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, A) \
+
86  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, B) \
+
87  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, C, D) \
+
88  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, A) \
+
89  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, B) \
+
90  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, GLM_MUTABLE, D, C)
+
91 
+
92 #define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
93  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, C) \
+
94  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, B, D) \
+
95  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, B) \
+
96  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, C, D) \
+
97  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, B) \
+
98  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , A, D, C) \
+
99  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, C) \
+
100  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, A, D) \
+
101  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, A) \
+
102  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, C, D) \
+
103  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, A) \
+
104  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , B, D, C) \
+
105  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, B) \
+
106  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, A, D) \
+
107  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, A) \
+
108  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, B, D) \
+
109  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, A) \
+
110  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , C, D, B) \
+
111  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, B) \
+
112  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, A, C) \
+
113  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, A) \
+
114  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, B, C) \
+
115  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, A) \
+
116  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, , D, C, B)
+
117 
+
118 #define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
119  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, B, D) \
+
120  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, C, D, B) \
+
121  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, B, C) \
+
122  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, D, C, B) \
+
123  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, D, C) \
+
124  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , A, B, C, D) \
+
125  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, A, D) \
+
126  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, C, D, A) \
+
127  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, A, C) \
+
128  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, D, C, A) \
+
129  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, D, C) \
+
130  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , B, A, C, D) \
+
131  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, A, D) \
+
132  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, B, D, A) \
+
133  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, A, B) \
+
134  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, D, B, A) \
+
135  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, D, B) \
+
136  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , C, A, B, D) \
+
137  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, B, A) \
+
138  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, C, A, B) \
+
139  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, B, C) \
+
140  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, A, C, B) \
+
141  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, A, C) \
+
142  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, , D, B, C, A)
+
143 
+
144 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, A, B, C, D) \
+
145  GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
146  GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
147  GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
+
148 
+
149 #define GLM_SWIZZLE_GEN_REF_FROM_VEC4(T, P) \
+
150  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, x, y, z, w) \
+
151  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, r, g, b, a) \
+
152  GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(T, P, s, t, p, q)
+
153 
+
154 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
155  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
+
156  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
+
157  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
+
158  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B)
+
159 
+
160 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
161  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
+
162  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
+
163  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
+
164  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
+
165  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
+
166  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
+
167  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
+
168  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B)
+
169 
+
170 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
171  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
+
172  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
+
173  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
+
174  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
+
175  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
+
176  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
+
177  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
+
178  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
+
179  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
+
180  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
+
181  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
+
182  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
+
183  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
+
184  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
+
185  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
+
186  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B)
+
187 
+
188 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, A, B) \
+
189  GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
190  GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(T, P, A, B) \
+
191  GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(T, P, A, B)
+
192 
+
193 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, P) \
+
194  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, x, y) \
+
195  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, r, g) \
+
196  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, P, s, t)
+
197 
+
198 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
199  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
+
200  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
+
201  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
+
202  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
+
203  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
+
204  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
+
205  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
+
206  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
+
207  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C)
+
208 
+
209 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
210  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
+
211  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
+
212  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
+
213  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
+
214  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
+
215  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
+
216  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
+
217  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
+
218  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
+
219  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
+
220  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
+
221  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
+
222  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
+
223  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
+
224  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
+
225  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
+
226  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
+
227  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
+
228  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
+
229  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
+
230  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
+
231  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
+
232  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
+
233  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
+
234  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
+
235  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
+
236  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C)
+
237 
+
238 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
239  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
+
240  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
+
241  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
+
242  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
+
243  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
+
244  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
+
245  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
+
246  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
+
247  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
+
248  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
+
249  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
+
250  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
+
251  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
+
252  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
+
253  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
+
254  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
+
255  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
+
256  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
+
257  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
+
258  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
+
259  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
+
260  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
+
261  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
+
262  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
+
263  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
+
264  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
+
265  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
+
266  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
+
267  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
+
268  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
+
269  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
+
270  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
+
271  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
+
272  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
+
273  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
+
274  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
+
275  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
+
276  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
+
277  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
+
278  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
+
279  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
+
280  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
+
281  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
+
282  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
+
283  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
+
284  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
+
285  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
+
286  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
+
287  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
+
288  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
+
289  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
+
290  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
+
291  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
+
292  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
+
293  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
+
294  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
+
295  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
+
296  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
+
297  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
+
298  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
+
299  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
+
300  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
+
301  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
+
302  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
+
303  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
+
304  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
+
305  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
+
306  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
+
307  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
+
308  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
+
309  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
+
310  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
+
311  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
+
312  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
+
313  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
+
314  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
+
315  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
+
316  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
+
317  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
+
318  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
+
319  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C)
+
320 
+
321 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, A, B, C) \
+
322  GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
323  GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(T, P, A, B, C) \
+
324  GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(T, P, A, B, C)
+
325 
+
326 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, P) \
+
327  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, x, y, z) \
+
328  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, r, g, b) \
+
329  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, P, s, t, p)
+
330 
+
331 #define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
332  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, A) \
+
333  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, B) \
+
334  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, C) \
+
335  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, A, D) \
+
336  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, A) \
+
337  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, B) \
+
338  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, C) \
+
339  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, B, D) \
+
340  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, A) \
+
341  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, B) \
+
342  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, C) \
+
343  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, C, D) \
+
344  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, A) \
+
345  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, B) \
+
346  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, C) \
+
347  GLM_SWIZZLE_GEN_VEC2_ENTRY(T, P, const, D, D)
+
348 
+
349 #define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
350  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, A) \
+
351  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, B) \
+
352  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, C) \
+
353  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, A, D) \
+
354  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, A) \
+
355  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, B) \
+
356  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, C) \
+
357  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, B, D) \
+
358  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, A) \
+
359  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, B) \
+
360  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, C) \
+
361  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, C, D) \
+
362  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, A) \
+
363  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, B) \
+
364  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, C) \
+
365  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, A, D, D) \
+
366  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, A) \
+
367  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, B) \
+
368  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, C) \
+
369  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, A, D) \
+
370  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, A) \
+
371  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, B) \
+
372  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, C) \
+
373  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, B, D) \
+
374  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, A) \
+
375  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, B) \
+
376  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, C) \
+
377  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, C, D) \
+
378  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, A) \
+
379  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, B) \
+
380  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, C) \
+
381  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, B, D, D) \
+
382  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, A) \
+
383  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, B) \
+
384  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, C) \
+
385  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, A, D) \
+
386  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, A) \
+
387  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, B) \
+
388  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, C) \
+
389  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, B, D) \
+
390  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, A) \
+
391  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, B) \
+
392  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, C) \
+
393  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, C, D) \
+
394  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, A) \
+
395  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, B) \
+
396  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, C) \
+
397  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, C, D, D) \
+
398  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, A) \
+
399  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, B) \
+
400  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, C) \
+
401  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, A, D) \
+
402  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, A) \
+
403  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, B) \
+
404  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, C) \
+
405  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, B, D) \
+
406  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, A) \
+
407  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, B) \
+
408  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, C) \
+
409  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, C, D) \
+
410  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, A) \
+
411  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, B) \
+
412  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, C) \
+
413  GLM_SWIZZLE_GEN_VEC3_ENTRY(T, P, const, D, D, D)
+
414 
+
415 #define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
416  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, A) \
+
417  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, B) \
+
418  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, C) \
+
419  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, A, D) \
+
420  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, A) \
+
421  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, B) \
+
422  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, C) \
+
423  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, B, D) \
+
424  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, A) \
+
425  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, B) \
+
426  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, C) \
+
427  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, C, D) \
+
428  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, A) \
+
429  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, B) \
+
430  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, C) \
+
431  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, A, D, D) \
+
432  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, A) \
+
433  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, B) \
+
434  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, C) \
+
435  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, A, D) \
+
436  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, A) \
+
437  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, B) \
+
438  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, C) \
+
439  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, B, D) \
+
440  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, A) \
+
441  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, B) \
+
442  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, C) \
+
443  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, C, D) \
+
444  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, A) \
+
445  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, B) \
+
446  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, C) \
+
447  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, B, D, D) \
+
448  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, A) \
+
449  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, B) \
+
450  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, C) \
+
451  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, A, D) \
+
452  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, A) \
+
453  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, B) \
+
454  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, C) \
+
455  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, B, D) \
+
456  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, A) \
+
457  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, B) \
+
458  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, C) \
+
459  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, C, D) \
+
460  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, A) \
+
461  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, B) \
+
462  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, C) \
+
463  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, C, D, D) \
+
464  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, A) \
+
465  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, B) \
+
466  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, C) \
+
467  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, A, D) \
+
468  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, A) \
+
469  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, B) \
+
470  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, C) \
+
471  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, B, D) \
+
472  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, A) \
+
473  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, B) \
+
474  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, C) \
+
475  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, C, D) \
+
476  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, A) \
+
477  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, B) \
+
478  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, C) \
+
479  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, A, D, D, D) \
+
480  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, A) \
+
481  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, B) \
+
482  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, C) \
+
483  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, A, D) \
+
484  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, A) \
+
485  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, B) \
+
486  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, C) \
+
487  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, B, D) \
+
488  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, A) \
+
489  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, B) \
+
490  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, C) \
+
491  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, C, D) \
+
492  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, A) \
+
493  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, B) \
+
494  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, C) \
+
495  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, A, D, D) \
+
496  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, A) \
+
497  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, B) \
+
498  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, C) \
+
499  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, A, D) \
+
500  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, A) \
+
501  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, B) \
+
502  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, C) \
+
503  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, B, D) \
+
504  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, A) \
+
505  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, B) \
+
506  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, C) \
+
507  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, C, D) \
+
508  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, A) \
+
509  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, B) \
+
510  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, C) \
+
511  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, B, D, D) \
+
512  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, A) \
+
513  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, B) \
+
514  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, C) \
+
515  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, A, D) \
+
516  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, A) \
+
517  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, B) \
+
518  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, C) \
+
519  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, B, D) \
+
520  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, A) \
+
521  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, B) \
+
522  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, C) \
+
523  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, C, D) \
+
524  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, A) \
+
525  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, B) \
+
526  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, C) \
+
527  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, C, D, D) \
+
528  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, A) \
+
529  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, B) \
+
530  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, C) \
+
531  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, A, D) \
+
532  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, A) \
+
533  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, B) \
+
534  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, C) \
+
535  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, B, D) \
+
536  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, A) \
+
537  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, B) \
+
538  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, C) \
+
539  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, C, D) \
+
540  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, A) \
+
541  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, B) \
+
542  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, C) \
+
543  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, B, D, D, D) \
+
544  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, A) \
+
545  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, B) \
+
546  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, C) \
+
547  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, A, D) \
+
548  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, A) \
+
549  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, B) \
+
550  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, C) \
+
551  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, B, D) \
+
552  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, A) \
+
553  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, B) \
+
554  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, C) \
+
555  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, C, D) \
+
556  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, A) \
+
557  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, B) \
+
558  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, C) \
+
559  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, A, D, D) \
+
560  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, A) \
+
561  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, B) \
+
562  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, C) \
+
563  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, A, D) \
+
564  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, A) \
+
565  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, B) \
+
566  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, C) \
+
567  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, B, D) \
+
568  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, A) \
+
569  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, B) \
+
570  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, C) \
+
571  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, C, D) \
+
572  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, A) \
+
573  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, B) \
+
574  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, C) \
+
575  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, B, D, D) \
+
576  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, A) \
+
577  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, B) \
+
578  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, C) \
+
579  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, A, D) \
+
580  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, A) \
+
581  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, B) \
+
582  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, C) \
+
583  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, B, D) \
+
584  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, A) \
+
585  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, B) \
+
586  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, C) \
+
587  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, C, D) \
+
588  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, A) \
+
589  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, B) \
+
590  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, C) \
+
591  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, C, D, D) \
+
592  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, A) \
+
593  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, B) \
+
594  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, C) \
+
595  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, A, D) \
+
596  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, A) \
+
597  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, B) \
+
598  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, C) \
+
599  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, B, D) \
+
600  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, A) \
+
601  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, B) \
+
602  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, C) \
+
603  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, C, D) \
+
604  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, A) \
+
605  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, B) \
+
606  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, C) \
+
607  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, C, D, D, D) \
+
608  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, A) \
+
609  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, B) \
+
610  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, C) \
+
611  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, A, D) \
+
612  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, A) \
+
613  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, B) \
+
614  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, C) \
+
615  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, B, D) \
+
616  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, A) \
+
617  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, B) \
+
618  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, C) \
+
619  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, C, D) \
+
620  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, A) \
+
621  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, B) \
+
622  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, C) \
+
623  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, A, D, D) \
+
624  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, A) \
+
625  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, B) \
+
626  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, C) \
+
627  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, A, D) \
+
628  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, A) \
+
629  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, B) \
+
630  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, C) \
+
631  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, B, D) \
+
632  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, A) \
+
633  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, B) \
+
634  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, C) \
+
635  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, C, D) \
+
636  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, A) \
+
637  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, B) \
+
638  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, C) \
+
639  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, B, D, D) \
+
640  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, A) \
+
641  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, B) \
+
642  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, C) \
+
643  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, A, D) \
+
644  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, A) \
+
645  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, B) \
+
646  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, C) \
+
647  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, B, D) \
+
648  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, A) \
+
649  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, B) \
+
650  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, C) \
+
651  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, C, D) \
+
652  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, A) \
+
653  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, B) \
+
654  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, C) \
+
655  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, C, D, D) \
+
656  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, A) \
+
657  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, B) \
+
658  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, C) \
+
659  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, A, D) \
+
660  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, A) \
+
661  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, B) \
+
662  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, C) \
+
663  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, B, D) \
+
664  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, A) \
+
665  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, B) \
+
666  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, C) \
+
667  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, C, D) \
+
668  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, A) \
+
669  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, B) \
+
670  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, C) \
+
671  GLM_SWIZZLE_GEN_VEC4_ENTRY(T, P, const, D, D, D, D)
+
672 
+
673 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, A, B, C, D) \
+
674  GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
675  GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(T, P, A, B, C, D) \
+
676  GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(T, P, A, B, C, D)
+
677 
+
678 #define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, P) \
+
679  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, x, y, z, w) \
+
680  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, r, g, b, a) \
+
681  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, P, s, t, p, q)
+
682 
+
+ + + + diff --git a/include/glm/doc/api/a00020_source.html b/include/glm/doc/api/a00020_source.html new file mode 100644 index 0000000..1f5e728 --- /dev/null +++ b/include/glm/doc/api/a00020_source.html @@ -0,0 +1,311 @@ + + + + + + + +1.0.2 API documentation: _vectorize.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_vectorize.hpp
+
+
+
1 #pragma once
+
2 
+
3 namespace glm{
+
4 namespace detail
+
5 {
+
6  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename R, typename T, qualifier Q>
+
7  struct functor1{};
+
8 
+
9  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
+
10  struct functor1<vec, 1, R, T, Q>
+
11  {
+
12  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, R, Q> call(R (*Func) (T x), vec<1, T, Q> const& v)
+
13  {
+
14  return vec<1, R, Q>(Func(v.x));
+
15  }
+
16  };
+
17 
+
18  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
+
19  struct functor1<vec, 2, R, T, Q>
+
20  {
+
21  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, R, Q> call(R (*Func) (T x), vec<2, T, Q> const& v)
+
22  {
+
23  return vec<2, R, Q>(Func(v.x), Func(v.y));
+
24  }
+
25  };
+
26 
+
27  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
+
28  struct functor1<vec, 3, R, T, Q>
+
29  {
+
30  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, R, Q> call(R (*Func) (T x), vec<3, T, Q> const& v)
+
31  {
+
32  return vec<3, R, Q>(Func(v.x), Func(v.y), Func(v.z));
+
33  }
+
34  };
+
35 
+
36  template<template<length_t L, typename T, qualifier Q> class vec, typename R, typename T, qualifier Q>
+
37  struct functor1<vec, 4, R, T, Q>
+
38  {
+
39  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, R, Q> call(R (*Func) (T x), vec<4, T, Q> const& v)
+
40  {
+
41  return vec<4, R, Q>(Func(v.x), Func(v.y), Func(v.z), Func(v.w));
+
42  }
+
43  };
+
44 
+
45  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>
+
46  struct functor2{};
+
47 
+
48  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
49  struct functor2<vec, 1, T, Q>
+
50  {
+
51  GLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, vec<1, T, Q> const& b)
+
52  {
+
53  return vec<1, T, Q>(Func(a.x, b.x));
+
54  }
+
55 
+
56  template<typename Fct>
+
57  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, T, Q> call(Fct Func, vec<1, T, Q> const& a, vec<1, T, Q> const& b)
+
58  {
+
59  return vec<1, T, Q>(Func(a.x, b.x));
+
60  }
+
61  };
+
62 
+
63  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
64  struct functor2<vec, 2, T, Q>
+
65  {
+
66  GLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, vec<2, T, Q> const& b)
+
67  {
+
68  return vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));
+
69  }
+
70 
+
71  template<typename Fct>
+
72  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, T, Q> call(Fct Func, vec<2, T, Q> const& a, vec<2, T, Q> const& b)
+
73  {
+
74  return vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));
+
75  }
+
76  };
+
77 
+
78  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
79  struct functor2<vec, 3, T, Q>
+
80  {
+
81  GLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, vec<3, T, Q> const& b)
+
82  {
+
83  return vec<3, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
+
84  }
+
85 
+
86  template<class Fct>
+
87  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, T, Q> call(Fct Func, vec<3, T, Q> const& a, vec<3, T, Q> const& b)
+
88  {
+
89  return vec<3, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
+
90  }
+
91  };
+
92 
+
93  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
94  struct functor2<vec, 4, T, Q>
+
95  {
+
96  GLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, vec<4, T, Q> const& b)
+
97  {
+
98  return vec<4, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
+
99  }
+
100 
+
101  template<class Fct>
+
102  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(Fct Func, vec<4, T, Q> const& a, vec<4, T, Q> const& b)
+
103  {
+
104  return vec<4, T, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
+
105  }
+
106  };
+
107 
+
108  template<template<length_t L, typename T, qualifier Q> class vec, length_t L, typename T, qualifier Q>
+
109  struct functor2_vec_sca{};
+
110 
+
111  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
112  struct functor2_vec_sca<vec, 1, T, Q>
+
113  {
+
114  GLM_FUNC_QUALIFIER static vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> const& a, T b)
+
115  {
+
116  return vec<1, T, Q>(Func(a.x, b));
+
117  }
+
118  template<class Fct>
+
119  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, T, Q> call(Fct Func, vec<1, T, Q> const& a, T b)
+
120  {
+
121  return vec<1, T, Q>(Func(a.x, b));
+
122  }
+
123  };
+
124 
+
125  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
126  struct functor2_vec_sca<vec, 2, T, Q>
+
127  {
+
128  GLM_FUNC_QUALIFIER static vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> const& a, T b)
+
129  {
+
130  return vec<2, T, Q>(Func(a.x, b), Func(a.y, b));
+
131  }
+
132 
+
133  template<class Fct>
+
134  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, T, Q> call(Fct Func, vec<2, T, Q> const& a, T b)
+
135  {
+
136  return vec<2, T, Q>(Func(a.x, b), Func(a.y, b));
+
137  }
+
138  };
+
139 
+
140  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
141  struct functor2_vec_sca<vec, 3, T, Q>
+
142  {
+
143  GLM_FUNC_QUALIFIER static vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> const& a, T b)
+
144  {
+
145  return vec<3, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b));
+
146  }
+
147 
+
148  template<class Fct>
+
149  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, T, Q> call(Fct Func, vec<3, T, Q> const& a, T b)
+
150  {
+
151  return vec<3, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b));
+
152  }
+
153  };
+
154 
+
155  template<template<length_t L, typename T, qualifier Q> class vec, typename T, qualifier Q>
+
156  struct functor2_vec_sca<vec, 4, T, Q>
+
157  {
+
158  GLM_FUNC_QUALIFIER static vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> const& a, T b)
+
159  {
+
160  return vec<4, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));
+
161  }
+
162  template<class Fct>
+
163  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, T, Q> call(Fct Func, vec<4, T, Q> const& a, T b)
+
164  {
+
165  return vec<4, T, Q>(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));
+
166  }
+
167  };
+
168 
+
169  template<length_t L, typename T, qualifier Q>
+
170  struct functor2_vec_int {};
+
171 
+
172  template<typename T, qualifier Q>
+
173  struct functor2_vec_int<1, T, Q>
+
174  {
+
175  GLM_FUNC_QUALIFIER static vec<1, int, Q> call(int (*Func) (T x, int y), vec<1, T, Q> const& a, vec<1, int, Q> const& b)
+
176  {
+
177  return vec<1, int, Q>(Func(a.x, b.x));
+
178  }
+
179 
+
180  template<class Fct>
+
181  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<1, int, Q> call(Fct Func, vec<1, T, Q> const& a, vec<1, int, Q> const& b)
+
182  {
+
183  return vec<1, int, Q>(Func(a.x, b.x));
+
184  }
+
185  };
+
186 
+
187  template<typename T, qualifier Q>
+
188  struct functor2_vec_int<2, T, Q>
+
189  {
+
190  GLM_FUNC_QUALIFIER static vec<2, int, Q> call(int (*Func) (T x, int y), vec<2, T, Q> const& a, vec<2, int, Q> const& b)
+
191  {
+
192  return vec<2, int, Q>(Func(a.x, b.x), Func(a.y, b.y));
+
193  }
+
194  template<class Fct>
+
195  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<2, int, Q> call(Fct Func, vec<2, T, Q> const& a, vec<2, int, Q> const& b)
+
196  {
+
197  return vec<2, int, Q>(Func(a.x, b.x), Func(a.y, b.y));
+
198  }
+
199  };
+
200 
+
201  template<typename T, qualifier Q>
+
202  struct functor2_vec_int<3, T, Q>
+
203  {
+
204  GLM_FUNC_QUALIFIER static vec<3, int, Q> call(int (*Func) (T x, int y), vec<3, T, Q> const& a, vec<3, int, Q> const& b)
+
205  {
+
206  return vec<3, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
+
207  }
+
208  template<class Fct>
+
209  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<3, int, Q> call(Fct Func, vec<3, T, Q> const& a, vec<3, int, Q> const& b)
+
210  {
+
211  return vec<3, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));
+
212  }
+
213  };
+
214 
+
215  template<typename T, qualifier Q>
+
216  struct functor2_vec_int<4, T, Q>
+
217  {
+
218  GLM_FUNC_QUALIFIER static vec<4, int, Q> call(int (*Func) (T x, int y), vec<4, T, Q> const& a, vec<4, int, Q> const& b)
+
219  {
+
220  return vec<4, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
+
221  }
+
222 
+
223  template<class Fct>
+
224  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<4, int, Q> call(Fct Func, vec<4, T, Q> const& a, vec<4, int, Q> const& b)
+
225  {
+
226  return vec<4, int, Q>(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));
+
227  }
+
228  };
+
229 }//namespace detail
+
230 }//namespace glm
+
+ + + + diff --git a/include/glm/doc/api/a00023_source.html b/include/glm/doc/api/a00023_source.html new file mode 100644 index 0000000..c6743e1 --- /dev/null +++ b/include/glm/doc/api/a00023_source.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: compute_common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
compute_common.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "setup.hpp"
+
4 #include <limits>
+
5 
+
6 namespace glm{
+
7 namespace detail
+
8 {
+
9  template<typename genFIType, bool /*signed*/>
+
10  struct compute_abs
+
11  {};
+
12 
+
13  template<typename genFIType>
+
14  struct compute_abs<genFIType, true>
+
15  {
+
16  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)
+
17  {
+
18  GLM_STATIC_ASSERT(
+
19  std::numeric_limits<genFIType>::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT || std::numeric_limits<genFIType>::is_signed,
+
20  "'abs' only accept floating-point and integer scalar or vector inputs");
+
21 
+
22  return x >= genFIType(0) ? x : -x;
+
23  // TODO, perf comp with: *(((int *) &x) + 1) &= 0x7fffffff;
+
24  }
+
25  };
+
26 
+
27 #if (GLM_COMPILER & GLM_COMPILER_CUDA) || (GLM_COMPILER & GLM_COMPILER_HIP)
+
28  template<>
+
29  struct compute_abs<float, true>
+
30  {
+
31  GLM_FUNC_QUALIFIER static float call(float x)
+
32  {
+
33  return fabsf(x);
+
34  }
+
35  };
+
36 #endif
+
37 
+
38  template<typename genFIType>
+
39  struct compute_abs<genFIType, false>
+
40  {
+
41  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genFIType call(genFIType x)
+
42  {
+
43  GLM_STATIC_ASSERT(
+
44  (!std::numeric_limits<genFIType>::is_signed && std::numeric_limits<genFIType>::is_integer),
+
45  "'abs' only accept floating-point and integer scalar or vector inputs");
+
46  return x;
+
47  }
+
48  };
+
49 }//namespace detail
+
50 }//namespace glm
+
+ + + + diff --git a/include/glm/doc/api/a00026_source.html b/include/glm/doc/api/a00026_source.html new file mode 100644 index 0000000..7344e34 --- /dev/null +++ b/include/glm/doc/api/a00026_source.html @@ -0,0 +1,271 @@ + + + + + + + +1.0.2 API documentation: compute_vector_decl.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
compute_vector_decl.hpp
+
+
+
1 
+
2 #pragma once
+
3 #include <functional>
+
4 #include "_vectorize.hpp"
+
5 
+
6 namespace glm {
+
7  namespace detail
+
8  {
+
9  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
10  struct compute_vec_add {};
+
11 
+
12  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
13  struct compute_vec_sub {};
+
14 
+
15  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
16  struct compute_vec_mul {};
+
17 
+
18  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
19  struct compute_vec_div {};
+
20 
+
21  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
22  struct compute_vec_mod {};
+
23 
+
24  template<length_t L, typename T, qualifier Q, bool UseSimd>
+
25  struct compute_splat {};
+
26 
+
27  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
28  struct compute_vec_and {};
+
29 
+
30  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
31  struct compute_vec_or {};
+
32 
+
33  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
34  struct compute_vec_xor {};
+
35 
+
36  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
37  struct compute_vec_shift_left {};
+
38 
+
39  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
40  struct compute_vec_shift_right {};
+
41 
+
42  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
43  struct compute_vec_equal {};
+
44 
+
45  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
46  struct compute_vec_nequal {};
+
47 
+
48  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size, bool UseSimd>
+
49  struct compute_vec_bitwise_not {};
+
50 
+
51  template<length_t L, typename T, qualifier Q>
+
52  struct compute_vec_add<L, T, Q, false>
+
53  {
+
54  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
55  {
+
56  return detail::functor2<vec, L, T, Q>::call(std::plus<T>(), a, b);
+
57  }
+
58  };
+
59 
+
60  template<length_t L, typename T, qualifier Q>
+
61  struct compute_vec_sub<L, T, Q, false>
+
62  {
+
63  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
64  {
+
65  return detail::functor2<vec, L, T, Q>::call(std::minus<T>(), a, b);
+
66  }
+
67  };
+
68 
+
69  template<length_t L, typename T, qualifier Q>
+
70  struct compute_vec_mul<L, T, Q, false>
+
71  {
+
72  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
73  {
+
74  return detail::functor2<vec, L, T, Q>::call(std::multiplies<T>(), a, b);
+
75  }
+
76  };
+
77 
+
78  template<length_t L, typename T, qualifier Q>
+
79  struct compute_vec_div<L, T, Q, false>
+
80  {
+
81  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
82  {
+
83  return detail::functor2<vec, L, T, Q>::call(std::divides<T>(), a, b);
+
84  }
+
85  };
+
86 
+
87  template<length_t L, typename T, qualifier Q>
+
88  struct compute_vec_mod<L, T, Q, false>
+
89  {
+
90  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
91  {
+
92  return detail::functor2<vec, L, T, Q>::call(std::modulus<T>(), a, b);
+
93  }
+
94  };
+
95 
+
96  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
97  struct compute_vec_and<L, T, Q, IsInt, Size, false>
+
98  {
+
99  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
100  {
+
101  vec<L, T, Q> v(a);
+
102  for (length_t i = 0; i < L; ++i)
+
103  v[i] &= static_cast<T>(b[i]);
+
104  return v;
+
105  }
+
106  };
+
107 
+
108  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
109  struct compute_vec_or<L, T, Q, IsInt, Size, false>
+
110  {
+
111  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
112  {
+
113  vec<L, T, Q> v(a);
+
114  for (length_t i = 0; i < L; ++i)
+
115  v[i] |= static_cast<T>(b[i]);
+
116  return v;
+
117  }
+
118  };
+
119 
+
120  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
121  struct compute_vec_xor<L, T, Q, IsInt, Size, false>
+
122  {
+
123  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
124  {
+
125  vec<L, T, Q> v(a);
+
126  for (length_t i = 0; i < L; ++i)
+
127  v[i] ^= static_cast<T>(b[i]);
+
128  return v;
+
129  }
+
130  };
+
131 
+
132  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
133  struct compute_vec_shift_left<L, T, Q, IsInt, Size, false>
+
134  {
+
135  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
136  {
+
137  vec<L, T, Q> v(a);
+
138  for (length_t i = 0; i < L; ++i)
+
139  v[i] <<= static_cast<T>(b[i]);
+
140  return v;
+
141  }
+
142  };
+
143 
+
144  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
145  struct compute_vec_shift_right<L, T, Q, IsInt, Size, false>
+
146  {
+
147  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a, vec<L, T, Q> const& b)
+
148  {
+
149  vec<L, T, Q> v(a);
+
150  for (length_t i = 0; i < L; ++i)
+
151  v[i] >>= static_cast<T>(b[i]);
+
152  return v;
+
153  }
+
154  };
+
155 
+
156  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
157  struct compute_vec_equal<L, T, Q, IsInt, Size, false>
+
158  {
+
159  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(vec<L, T, Q> const& v1, vec<L, T, Q> const& v2)
+
160  {
+
161  bool b = true;
+
162  for (length_t i = 0; b && i < L; ++i)
+
163  b = detail::compute_equal<T, std::numeric_limits<T>::is_iec559>::call(v1[i], v2[i]);
+
164  return b;
+
165  }
+
166  };
+
167 
+
168  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
169  struct compute_vec_nequal<L, T, Q, IsInt, Size, false>
+
170  {
+
171  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2)
+
172  {
+
173  return !compute_vec_equal<L, T, Q, detail::is_int<T>::value, sizeof(T) * 8, detail::is_aligned<Q>::value>::call(v1, v2);
+
174  }
+
175  };
+
176 
+
177  template<length_t L, typename T, qualifier Q, int IsInt, std::size_t Size>
+
178  struct compute_vec_bitwise_not<L, T, Q, IsInt, Size, false>
+
179  {
+
180  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static vec<L, T, Q> call(vec<L, T, Q> const& a)
+
181  {
+
182  vec<L, T, Q> v(a);
+
183  for (length_t i = 0; i < L; ++i)
+
184  v[i] = ~v[i];
+
185  return v;
+
186  }
+
187  };
+
188 
+
189  }
+
190 }
+
+ + + + diff --git a/include/glm/doc/api/a00029_source.html b/include/glm/doc/api/a00029_source.html new file mode 100644 index 0000000..f3623d9 --- /dev/null +++ b/include/glm/doc/api/a00029_source.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: compute_vector_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
compute_vector_relational.hpp
+
+
+
1 #pragma once
+
2 
+
3 //#include "compute_common.hpp"
+
4 #include "setup.hpp"
+
5 #include <limits>
+
6 
+
7 namespace glm{
+
8 namespace detail
+
9 {
+
10  template <typename T, bool isFloat>
+
11  struct compute_equal
+
12  {
+
13  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)
+
14  {
+
15  return a == b;
+
16  }
+
17  };
+
18 /*
+
19  template <typename T>
+
20  struct compute_equal<T, true>
+
21  {
+
22  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b)
+
23  {
+
24  return detail::compute_abs<T, std::numeric_limits<T>::is_signed>::call(b - a) <= static_cast<T>(0);
+
25  //return std::memcmp(&a, &b, sizeof(T)) == 0;
+
26  }
+
27  };
+
28 */
+
29 }//namespace detail
+
30 }//namespace glm
+
+ + + + diff --git a/include/glm/doc/api/a00032_source.html b/include/glm/doc/api/a00032_source.html new file mode 100644 index 0000000..65b6588 --- /dev/null +++ b/include/glm/doc/api/a00032_source.html @@ -0,0 +1,378 @@ + + + + + + + +1.0.2 API documentation: qualifier.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
qualifier.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "setup.hpp"
+
4 
+
5 namespace glm
+
6 {
+
8  enum qualifier
+
9  {
+
10  packed_highp,
+
11  packed_mediump,
+
12  packed_lowp,
+
13 
+
14 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
+
15  aligned_highp,
+
16  aligned_mediump,
+
17  aligned_lowp, // ///< Typed data is aligned in memory allowing SIMD optimizations and operations are executed with high precision in term of ULPs to maximize performance
+
18  aligned = aligned_highp,
+
19 # endif
+
20 
+
21  highp = packed_highp,
+
22  mediump = packed_mediump,
+
23  lowp = packed_lowp,
+
24  packed = packed_highp,
+
25 
+
26 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE && defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)
+
27  defaultp = aligned_highp
+
28 # else
+
29  defaultp = highp
+
30 # endif
+
31  };
+
32 
+
33  typedef qualifier precision;
+
34 
+
35  template<length_t L, typename T, qualifier Q = defaultp> struct vec;
+
36  template<length_t C, length_t R, typename T, qualifier Q = defaultp> struct mat;
+
37  template<typename T, qualifier Q = defaultp> struct qua;
+
38 
+
39 # if GLM_HAS_TEMPLATE_ALIASES
+
40  template <typename T, qualifier Q = defaultp> using tvec1 = vec<1, T, Q>;
+
41  template <typename T, qualifier Q = defaultp> using tvec2 = vec<2, T, Q>;
+
42  template <typename T, qualifier Q = defaultp> using tvec3 = vec<3, T, Q>;
+
43  template <typename T, qualifier Q = defaultp> using tvec4 = vec<4, T, Q>;
+
44  template <typename T, qualifier Q = defaultp> using tmat2x2 = mat<2, 2, T, Q>;
+
45  template <typename T, qualifier Q = defaultp> using tmat2x3 = mat<2, 3, T, Q>;
+
46  template <typename T, qualifier Q = defaultp> using tmat2x4 = mat<2, 4, T, Q>;
+
47  template <typename T, qualifier Q = defaultp> using tmat3x2 = mat<3, 2, T, Q>;
+
48  template <typename T, qualifier Q = defaultp> using tmat3x3 = mat<3, 3, T, Q>;
+
49  template <typename T, qualifier Q = defaultp> using tmat3x4 = mat<3, 4, T, Q>;
+
50  template <typename T, qualifier Q = defaultp> using tmat4x2 = mat<4, 2, T, Q>;
+
51  template <typename T, qualifier Q = defaultp> using tmat4x3 = mat<4, 3, T, Q>;
+
52  template <typename T, qualifier Q = defaultp> using tmat4x4 = mat<4, 4, T, Q>;
+
53  template <typename T, qualifier Q = defaultp> using tquat = qua<T, Q>;
+
54 # endif
+
55 
+
56 namespace detail
+
57 {
+
58  template<glm::qualifier P>
+
59  struct is_aligned
+
60  {
+
61  static const bool value = false;
+
62  };
+
63 
+
64 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
+
65  template<>
+
66  struct is_aligned<glm::aligned_lowp>
+
67  {
+
68  static const bool value = true;
+
69  };
+
70 
+
71  template<>
+
72  struct is_aligned<glm::aligned_mediump>
+
73  {
+
74  static const bool value = true;
+
75  };
+
76 
+
77  template<>
+
78  struct is_aligned<glm::aligned_highp>
+
79  {
+
80  static const bool value = true;
+
81  };
+
82 # endif
+
83 
+
84  template<length_t L, typename T, bool is_aligned>
+
85  struct storage
+
86  {
+
87  typedef struct type {
+
88  T data[L];
+
89  } type;
+
90  };
+
91 
+
92 # if GLM_HAS_ALIGNOF
+
93  template<length_t L, typename T>
+
94  struct storage<L, T, true>
+
95  {
+
96  typedef struct alignas(L * sizeof(T)) type {
+
97  T data[L];
+
98  } type;
+
99  };
+
100 
+
101  template<typename T>
+
102  struct storage<3, T, true>
+
103  {
+
104  typedef struct alignas(4 * sizeof(T)) type {
+
105  T data[4];
+
106  } type;
+
107  };
+
108 # endif
+
109 
+
110 # if GLM_ARCH & GLM_ARCH_SSE2_BIT
+
111  template<>
+
112  struct storage<4, float, true>
+
113  {
+
114  typedef glm_f32vec4 type;
+
115  };
+
116 
+
117  template<>
+
118  struct storage<4, int, true>
+
119  {
+
120  typedef glm_i32vec4 type;
+
121  };
+
122 
+
123  template<>
+
124  struct storage<4, unsigned int, true>
+
125  {
+
126  typedef glm_u32vec4 type;
+
127  };
+
128 
+
129  template<>
+
130  struct storage<3, float, true>
+
131  {
+
132  typedef glm_f32vec4 type;
+
133  };
+
134 
+
135  template<>
+
136  struct storage<3, int, true>
+
137  {
+
138  typedef glm_i32vec4 type;
+
139  };
+
140 
+
141  template<>
+
142  struct storage<3, unsigned int, true>
+
143  {
+
144  typedef glm_u32vec4 type;
+
145  };
+
146 
+
147  template<>
+
148  struct storage<2, double, true>
+
149  {
+
150  typedef glm_f64vec2 type;
+
151  };
+
152 
+
153  template<>
+
154  struct storage<2, detail::int64, true>
+
155  {
+
156  typedef glm_i64vec2 type;
+
157  };
+
158 
+
159  template<>
+
160  struct storage<2, detail::uint64, true>
+
161  {
+
162  typedef glm_u64vec2 type;
+
163  };
+
164 
+
165 
+
166  template<>
+
167  struct storage<3, detail::uint64, true>
+
168  {
+
169  typedef glm_u64vec2 type;
+
170  };
+
171 
+
172  template<>
+
173  struct storage<4, double, true>
+
174  {
+
175 # if (GLM_ARCH & GLM_ARCH_AVX_BIT)
+
176  typedef glm_f64vec4 type;
+
177 # else
+
178  struct type
+
179  {
+
180  glm_f64vec2 data[2];
+
181  GLM_CONSTEXPR glm_f64vec2 getv(int i) const {
+
182  return data[i];
+
183  }
+
184  GLM_CONSTEXPR void setv(int i, const glm_f64vec2& v) {
+
185  data[i] = v;
+
186  }
+
187  };
+
188 # endif
+
189  };
+
190 
+
191 
+
192  template<>
+
193  struct storage<3, double, true> : public storage<4, double, true>
+
194  {};
+
195 
+
196 # endif
+
197 
+
198 # if (GLM_ARCH & GLM_ARCH_AVX2_BIT)
+
199  template<>
+
200  struct storage<4, detail::int64, true>
+
201  {
+
202  typedef glm_i64vec4 type;
+
203  };
+
204 
+
205  template<>
+
206  struct storage<4, detail::uint64, true>
+
207  {
+
208  typedef glm_u64vec4 type;
+
209  };
+
210 # endif
+
211 
+
212 # if GLM_ARCH & GLM_ARCH_NEON_BIT
+
213  template<>
+
214  struct storage<4, float, true>
+
215  {
+
216  typedef glm_f32vec4 type;
+
217  };
+
218 
+
219  template<>
+
220  struct storage<3, float, true> : public storage<4, float, true>
+
221  {};
+
222 
+
223  template<>
+
224  struct storage<4, int, true>
+
225  {
+
226  typedef glm_i32vec4 type;
+
227  };
+
228 
+
229  template<>
+
230  struct storage<3, int, true> : public storage<4, int, true>
+
231  {};
+
232 
+
233  template<>
+
234  struct storage<4, unsigned int, true>
+
235  {
+
236  typedef glm_u32vec4 type;
+
237  };
+
238 
+
239  template<>
+
240  struct storage<3, unsigned int, true> : public storage<4, unsigned int, true>
+
241  {};
+
242 
+
243 # if GLM_HAS_ALIGNOF
+
244  template<>
+
245  struct storage<3, double, true>
+
246  {
+
247  typedef struct alignas(4 * sizeof(double)) type {
+
248  double data[4];
+
249  } type;
+
250  };
+
251 # endif//GLM_HAS_ALIGNOF
+
252 
+
253 # endif
+
254 
+
255  enum genTypeEnum
+
256  {
+
257  GENTYPE_VEC,
+
258  GENTYPE_MAT,
+
259  GENTYPE_QUAT
+
260  };
+
261 
+
262  template <typename genType>
+
263  struct genTypeTrait
+
264  {};
+
265 
+
266  template <length_t C, length_t R, typename T>
+
267  struct genTypeTrait<mat<C, R, T> >
+
268  {
+
269  static const genTypeEnum GENTYPE = GENTYPE_MAT;
+
270  };
+
271 
+
272  template<typename genType, genTypeEnum type>
+
273  struct init_gentype
+
274  {
+
275  };
+
276 
+
277  template<typename genType>
+
278  struct init_gentype<genType, GENTYPE_QUAT>
+
279  {
+
280  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()
+
281  {
+
282  return genType(1, 0, 0, 0);
+
283  }
+
284  };
+
285 
+
286  template<typename genType>
+
287  struct init_gentype<genType, GENTYPE_MAT>
+
288  {
+
289  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static genType identity()
+
290  {
+
291  return genType(1);
+
292  }
+
293  };
+
294 }//namespace detail
+
295 }//namespace glm
+
+
detail::uint64 uint64
64 bit unsigned integer type.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType identity()
Builds an identity matrix.
+
detail::int64 int64
64 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00035_source.html b/include/glm/doc/api/a00035_source.html new file mode 100644 index 0000000..b1837a5 --- /dev/null +++ b/include/glm/doc/api/a00035_source.html @@ -0,0 +1,1242 @@ + + + + + + + +1.0.2 API documentation: setup.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
setup.hpp
+
+
+
1 #ifndef GLM_SETUP_INCLUDED
+
2 
+
3 #include <cassert>
+
4 #include <cstddef>
+
5 
+
6 #define GLM_VERSION_MAJOR 1
+
7 #define GLM_VERSION_MINOR 0
+
8 #define GLM_VERSION_PATCH 2
+
9 #define GLM_VERSION_REVISION 0 // Deprecated
+
10 #define GLM_VERSION 1000 // Deprecated
+
11 
+
12 #define GLM_MAKE_API_VERSION(variant, major, minor, patch) \
+
13  ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))
+
14 
+
15 #define GLM_VERSION_COMPLETE GLM_MAKE_API_VERSION(0, GLM_VERSION_MAJOR, GLM_VERSION_MINOR, GLM_VERSION_PATCH)
+
16 
+
17 #define GLM_SETUP_INCLUDED GLM_VERSION
+
18 
+
19 #define GLM_GET_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U)
+
20 #define GLM_GET_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU)
+
21 #define GLM_GET_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)
+
22 #define GLM_GET_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
+
23 
+
25 // Active states
+
26 
+
27 #define GLM_DISABLE 0
+
28 #define GLM_ENABLE 1
+
29 
+
31 // Messages
+
32 
+
33 #if defined(GLM_FORCE_MESSAGES)
+
34 # define GLM_MESSAGES GLM_ENABLE
+
35 #else
+
36 # define GLM_MESSAGES GLM_DISABLE
+
37 #endif
+
38 
+
40 // Detect the platform
+
41 
+
42 #include "../simd/platform.h"
+
43 
+
45 // Build model
+
46 
+
47 #if defined(_M_ARM64) || defined(__LP64__) || defined(_M_X64) || defined(__ppc64__) || defined(__x86_64__)
+
48 # define GLM_MODEL GLM_MODEL_64
+
49 #elif defined(__i386__) || defined(__ppc__) || defined(__ILP32__) || defined(_M_ARM)
+
50 # define GLM_MODEL GLM_MODEL_32
+
51 #else
+
52 # define GLM_MODEL GLM_MODEL_32
+
53 #endif//
+
54 
+
55 #if !defined(GLM_MODEL) && GLM_COMPILER != 0
+
56 # error "GLM_MODEL undefined, your compiler may not be supported by GLM. Add #define GLM_MODEL 0 to ignore this message."
+
57 #endif//GLM_MODEL
+
58 
+
60 // C++ Version
+
61 
+
62 // User defines: GLM_FORCE_CXX98, GLM_FORCE_CXX03, GLM_FORCE_CXX11, GLM_FORCE_CXX14, GLM_FORCE_CXX17, GLM_FORCE_CXX2A
+
63 
+
64 #define GLM_LANG_CXX98_FLAG (1 << 1)
+
65 #define GLM_LANG_CXX03_FLAG (1 << 2)
+
66 #define GLM_LANG_CXX0X_FLAG (1 << 3)
+
67 #define GLM_LANG_CXX11_FLAG (1 << 4)
+
68 #define GLM_LANG_CXX14_FLAG (1 << 5)
+
69 #define GLM_LANG_CXX17_FLAG (1 << 6)
+
70 #define GLM_LANG_CXX20_FLAG (1 << 7)
+
71 #define GLM_LANG_CXXMS_FLAG (1 << 8)
+
72 #define GLM_LANG_CXXGNU_FLAG (1 << 9)
+
73 
+
74 #define GLM_LANG_CXX98 GLM_LANG_CXX98_FLAG
+
75 #define GLM_LANG_CXX03 (GLM_LANG_CXX98 | GLM_LANG_CXX03_FLAG)
+
76 #define GLM_LANG_CXX0X (GLM_LANG_CXX03 | GLM_LANG_CXX0X_FLAG)
+
77 #define GLM_LANG_CXX11 (GLM_LANG_CXX0X | GLM_LANG_CXX11_FLAG)
+
78 #define GLM_LANG_CXX14 (GLM_LANG_CXX11 | GLM_LANG_CXX14_FLAG)
+
79 #define GLM_LANG_CXX17 (GLM_LANG_CXX14 | GLM_LANG_CXX17_FLAG)
+
80 #define GLM_LANG_CXX20 (GLM_LANG_CXX17 | GLM_LANG_CXX20_FLAG)
+
81 #define GLM_LANG_CXXMS GLM_LANG_CXXMS_FLAG
+
82 #define GLM_LANG_CXXGNU GLM_LANG_CXXGNU_FLAG
+
83 
+
84 #if (defined(_MSC_EXTENSIONS))
+
85 # define GLM_LANG_EXT GLM_LANG_CXXMS_FLAG
+
86 #elif ((GLM_COMPILER & (GLM_COMPILER_CLANG | GLM_COMPILER_GCC)) && (GLM_ARCH & GLM_ARCH_SIMD_BIT))
+
87 # define GLM_LANG_EXT GLM_LANG_CXXMS_FLAG
+
88 #else
+
89 # define GLM_LANG_EXT 0
+
90 #endif
+
91 
+
92 #if (defined(GLM_FORCE_CXX_UNKNOWN))
+
93 # define GLM_LANG 0
+
94 #elif defined(GLM_FORCE_CXX20)
+
95 # define GLM_LANG (GLM_LANG_CXX20 | GLM_LANG_EXT)
+
96 # define GLM_LANG_STL11_FORCED
+
97 #elif defined(GLM_FORCE_CXX17)
+
98 # define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
+
99 # define GLM_LANG_STL11_FORCED
+
100 #elif defined(GLM_FORCE_CXX14)
+
101 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
+
102 # define GLM_LANG_STL11_FORCED
+
103 #elif defined(GLM_FORCE_CXX11)
+
104 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
+
105 # define GLM_LANG_STL11_FORCED
+
106 #elif defined(GLM_FORCE_CXX03)
+
107 # define GLM_LANG (GLM_LANG_CXX03 | GLM_LANG_EXT)
+
108 #elif defined(GLM_FORCE_CXX98)
+
109 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)
+
110 #else
+
111 # if GLM_COMPILER & GLM_COMPILER_VC && defined(_MSVC_LANG)
+
112 # if GLM_COMPILER >= GLM_COMPILER_VC15_7
+
113 # define GLM_LANG_PLATFORM _MSVC_LANG
+
114 # elif GLM_COMPILER >= GLM_COMPILER_VC15
+
115 # if _MSVC_LANG > 201402L
+
116 # define GLM_LANG_PLATFORM 201402L
+
117 # else
+
118 # define GLM_LANG_PLATFORM _MSVC_LANG
+
119 # endif
+
120 # else
+
121 # define GLM_LANG_PLATFORM 0
+
122 # endif
+
123 # else
+
124 # define GLM_LANG_PLATFORM 0
+
125 # endif
+
126 
+
127 # if __cplusplus > 201703L || GLM_LANG_PLATFORM > 201703L
+
128 # define GLM_LANG (GLM_LANG_CXX20 | GLM_LANG_EXT)
+
129 # elif __cplusplus == 201703L || GLM_LANG_PLATFORM == 201703L
+
130 # define GLM_LANG (GLM_LANG_CXX17 | GLM_LANG_EXT)
+
131 # elif __cplusplus == 201402L || __cplusplus == 201406L || __cplusplus == 201500L || GLM_LANG_PLATFORM == 201402L
+
132 # define GLM_LANG (GLM_LANG_CXX14 | GLM_LANG_EXT)
+
133 # elif __cplusplus == 201103L || GLM_LANG_PLATFORM == 201103L
+
134 # define GLM_LANG (GLM_LANG_CXX11 | GLM_LANG_EXT)
+
135 # elif defined(__INTEL_CXX11_MODE__) || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__)
+
136 # define GLM_LANG (GLM_LANG_CXX0X | GLM_LANG_EXT)
+
137 # elif __cplusplus == 199711L
+
138 # define GLM_LANG (GLM_LANG_CXX98 | GLM_LANG_EXT)
+
139 # else
+
140 # define GLM_LANG (0 | GLM_LANG_EXT)
+
141 # endif
+
142 #endif
+
143 
+
145 // Has of C++ features
+
146 
+
147 // http://clang.llvm.org/cxx_status.html
+
148 // http://gcc.gnu.org/projects/cxx0x.html
+
149 // http://msdn.microsoft.com/en-us/library/vstudio/hh567368(v=vs.120).aspx
+
150 
+
151 #if (GLM_COMPILER & GLM_COMPILER_CUDA_RTC) == GLM_COMPILER_CUDA_RTC
+
152 # define GLM_HAS_CXX11_STL 0
+
153 #elif (GLM_COMPILER & GLM_COMPILER_HIP)
+
154 # define GLM_HAS_CXX11_STL 0
+
155 #elif GLM_COMPILER & GLM_COMPILER_CLANG
+
156 # if (defined(_LIBCPP_VERSION) || (GLM_LANG & GLM_LANG_CXX11_FLAG) || defined(GLM_LANG_STL11_FORCED))
+
157 # define GLM_HAS_CXX11_STL 1
+
158 # else
+
159 # define GLM_HAS_CXX11_STL 0
+
160 # endif
+
161 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
162 # define GLM_HAS_CXX11_STL 1
+
163 #else
+
164 # define GLM_HAS_CXX11_STL ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
165  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \
+
166  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
+
167  ((GLM_PLATFORM != GLM_PLATFORM_WINDOWS) && (GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15))))
+
168 #endif
+
169 
+
170 // N1720
+
171 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
172 # define GLM_HAS_STATIC_ASSERT __has_feature(cxx_static_assert)
+
173 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
174 # define GLM_HAS_STATIC_ASSERT 1
+
175 #else
+
176 # define GLM_HAS_STATIC_ASSERT ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
177  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
178  ((GLM_COMPILER & GLM_COMPILER_VC)) || \
+
179  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
180 #endif
+
181 
+
182 // N1988
+
183 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
184 # define GLM_HAS_EXTENDED_INTEGER_TYPE 1
+
185 #else
+
186 # define GLM_HAS_EXTENDED_INTEGER_TYPE (\
+
187  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_VC)) || \
+
188  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
189  ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG)) || \
+
190  ((GLM_COMPILER & GLM_COMPILER_HIP)))
+
191 #endif
+
192 
+
193 // N2672 Initializer lists http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm
+
194 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
195 # define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)
+
196 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
197 # define GLM_HAS_INITIALIZER_LISTS 1
+
198 #else
+
199 # define GLM_HAS_INITIALIZER_LISTS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
200  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \
+
201  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
+
202  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
203  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
204 #endif
+
205 
+
206 // N2544 Unrestricted unions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf
+
207 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
208 # define GLM_HAS_UNRESTRICTED_UNIONS __has_feature(cxx_unrestricted_unions)
+
209 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
210 # define GLM_HAS_UNRESTRICTED_UNIONS 1
+
211 #else
+
212 # define GLM_HAS_UNRESTRICTED_UNIONS (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
213  (GLM_COMPILER & GLM_COMPILER_VC) || \
+
214  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
215  ((GLM_COMPILER & GLM_COMPILER_HIP)))
+
216 #endif
+
217 
+
218 // N2346
+
219 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
220 # define GLM_HAS_DEFAULTED_FUNCTIONS __has_feature(cxx_defaulted_functions)
+
221 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
222 # define GLM_HAS_DEFAULTED_FUNCTIONS 1
+
223 #else
+
224 # define GLM_HAS_DEFAULTED_FUNCTIONS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
225  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
+
226  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
+
227  (GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
228  ((GLM_COMPILER & GLM_COMPILER_HIP)))
+
229 #endif
+
230 
+
231 // N2118
+
232 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
233 # define GLM_HAS_RVALUE_REFERENCES __has_feature(cxx_rvalue_references)
+
234 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
235 # define GLM_HAS_RVALUE_REFERENCES 1
+
236 #else
+
237 # define GLM_HAS_RVALUE_REFERENCES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
238  ((GLM_COMPILER & GLM_COMPILER_VC)) || \
+
239  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
240  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
241 #endif
+
242 
+
243 // N2437 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf
+
244 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
245 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS __has_feature(cxx_explicit_conversions)
+
246 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
247 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS 1
+
248 #else
+
249 # define GLM_HAS_EXPLICIT_CONVERSION_OPERATORS ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
250  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
+
251  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
+
252  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
253  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
254 #endif
+
255 
+
256 // N2258 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf
+
257 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
258 # define GLM_HAS_TEMPLATE_ALIASES __has_feature(cxx_alias_templates)
+
259 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
260 # define GLM_HAS_TEMPLATE_ALIASES 1
+
261 #else
+
262 # define GLM_HAS_TEMPLATE_ALIASES ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
263  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
+
264  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
+
265  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
266  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
267 #endif
+
268 
+
269 // N2930 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2930.html
+
270 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
271 # define GLM_HAS_RANGE_FOR __has_feature(cxx_range_for)
+
272 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
273 # define GLM_HAS_RANGE_FOR 1
+
274 #else
+
275 # define GLM_HAS_RANGE_FOR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
276  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
+
277  ((GLM_COMPILER & GLM_COMPILER_VC)) || \
+
278  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
279  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
280 #endif
+
281 
+
282 // N2341 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf
+
283 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
284 # define GLM_HAS_ALIGNOF __has_feature(cxx_alignas)
+
285 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
+
286 # define GLM_HAS_ALIGNOF 1
+
287 #else
+
288 # define GLM_HAS_ALIGNOF ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
289  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL15)) || \
+
290  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14)) || \
+
291  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
292  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
293 #endif
+
294 
+
295 // N2235 Generalized Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf
+
296 // N3652 Extended Constant Expressions http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3652.html
+
297 #if (GLM_ARCH & GLM_ARCH_SIMD_BIT) // Compiler SIMD intrinsics don't support constexpr...
+
298 # define GLM_HAS_CONSTEXPR 0
+
299 #elif (GLM_COMPILER & GLM_COMPILER_CLANG)
+
300 # define GLM_HAS_CONSTEXPR __has_feature(cxx_relaxed_constexpr)
+
301 #elif (GLM_LANG & GLM_LANG_CXX14_FLAG)
+
302 # define GLM_HAS_CONSTEXPR 1
+
303 #else
+
304 # define GLM_HAS_CONSTEXPR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && GLM_HAS_INITIALIZER_LISTS && (\
+
305  ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL17)) || \
+
306  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15))))
+
307 #endif
+
308 
+
309 #if GLM_HAS_CONSTEXPR
+
310 # define GLM_CONSTEXPR constexpr
+
311 #else
+
312 # define GLM_CONSTEXPR
+
313 #endif
+
314 
+
315 //
+
316 #if GLM_HAS_CONSTEXPR
+
317 # if (GLM_COMPILER & GLM_COMPILER_CLANG)
+
318 # if __has_feature(cxx_if_constexpr)
+
319 # define GLM_HAS_IF_CONSTEXPR 1
+
320 # else
+
321 # define GLM_HAS_IF_CONSTEXPR 0
+
322 # endif
+
323 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
+
324 # define GLM_HAS_IF_CONSTEXPR 1
+
325 # else
+
326 # define GLM_HAS_IF_CONSTEXPR 0
+
327 # endif
+
328 #else
+
329 # define GLM_HAS_IF_CONSTEXPR 0
+
330 #endif
+
331 
+
332 #if GLM_HAS_IF_CONSTEXPR
+
333 # define GLM_IF_CONSTEXPR if constexpr
+
334 #else
+
335 # define GLM_IF_CONSTEXPR if
+
336 #endif
+
337 
+
338 // [nodiscard]
+
339 #if GLM_LANG & GLM_LANG_CXX17_FLAG
+
340 # define GLM_NODISCARD [[nodiscard]]
+
341 #else
+
342 # define GLM_NODISCARD
+
343 #endif
+
344 
+
345 //
+
346 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
347 # define GLM_HAS_ASSIGNABLE 1
+
348 #else
+
349 # define GLM_HAS_ASSIGNABLE ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
350  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \
+
351  ((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC49))))
+
352 #endif
+
353 
+
354 //
+
355 #define GLM_HAS_TRIVIAL_QUERIES 0
+
356 
+
357 //
+
358 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
359 # define GLM_HAS_MAKE_SIGNED 1
+
360 #else
+
361 # define GLM_HAS_MAKE_SIGNED ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
+
362  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC12)) || \
+
363  ((GLM_COMPILER & GLM_COMPILER_CUDA)) || \
+
364  ((GLM_COMPILER & GLM_COMPILER_HIP))))
+
365 #endif
+
366 
+
367 //
+
368 #if defined(GLM_FORCE_INTRINSICS)
+
369 # define GLM_HAS_BITSCAN_WINDOWS ((GLM_PLATFORM & GLM_PLATFORM_WINDOWS) && (\
+
370  ((GLM_COMPILER & GLM_COMPILER_INTEL)) || \
+
371  ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH & GLM_ARCH_X86_BIT))))
+
372 #else
+
373 # define GLM_HAS_BITSCAN_WINDOWS 0
+
374 #endif
+
375 
+
376 #if GLM_LANG & GLM_LANG_CXX11_FLAG
+
377 # define GLM_HAS_NOEXCEPT 1
+
378 #else
+
379 # define GLM_HAS_NOEXCEPT 0
+
380 #endif
+
381 
+
382 #if GLM_HAS_NOEXCEPT
+
383 # define GLM_NOEXCEPT noexcept
+
384 #else
+
385 # define GLM_NOEXCEPT
+
386 #endif
+
387 
+
389 // OpenMP
+
390 #ifdef _OPENMP
+
391 # if GLM_COMPILER & GLM_COMPILER_GCC
+
392 # if GLM_COMPILER >= GLM_COMPILER_GCC61
+
393 # define GLM_HAS_OPENMP 45
+
394 # elif GLM_COMPILER >= GLM_COMPILER_GCC49
+
395 # define GLM_HAS_OPENMP 40
+
396 # elif GLM_COMPILER >= GLM_COMPILER_GCC47
+
397 # define GLM_HAS_OPENMP 31
+
398 # else
+
399 # define GLM_HAS_OPENMP 0
+
400 # endif
+
401 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
402 # if GLM_COMPILER >= GLM_COMPILER_CLANG38
+
403 # define GLM_HAS_OPENMP 31
+
404 # else
+
405 # define GLM_HAS_OPENMP 0
+
406 # endif
+
407 # elif GLM_COMPILER & GLM_COMPILER_VC
+
408 # define GLM_HAS_OPENMP 20
+
409 # elif GLM_COMPILER & GLM_COMPILER_INTEL
+
410 # if GLM_COMPILER >= GLM_COMPILER_INTEL16
+
411 # define GLM_HAS_OPENMP 40
+
412 # else
+
413 # define GLM_HAS_OPENMP 0
+
414 # endif
+
415 # else
+
416 # define GLM_HAS_OPENMP 0
+
417 # endif
+
418 #else
+
419 # define GLM_HAS_OPENMP 0
+
420 #endif
+
421 
+
423 // nullptr
+
424 
+
425 #if GLM_LANG & GLM_LANG_CXX0X_FLAG
+
426 # define GLM_CONFIG_NULLPTR GLM_ENABLE
+
427 #else
+
428 # define GLM_CONFIG_NULLPTR GLM_DISABLE
+
429 #endif
+
430 
+
431 #if GLM_CONFIG_NULLPTR == GLM_ENABLE
+
432 # define GLM_NULLPTR nullptr
+
433 #else
+
434 # define GLM_NULLPTR 0
+
435 #endif
+
436 
+
438 // Static assert
+
439 
+
440 #if GLM_HAS_STATIC_ASSERT
+
441 # define GLM_STATIC_ASSERT(x, message) static_assert(x, message)
+
442 #elif GLM_COMPILER & GLM_COMPILER_VC
+
443 # define GLM_STATIC_ASSERT(x, message) typedef char __CASSERT__##__LINE__[(x) ? 1 : -1]
+
444 #else
+
445 # define GLM_STATIC_ASSERT(x, message) assert(x)
+
446 #endif//GLM_LANG
+
447 
+
449 // Qualifiers
+
450 
+
451 // User defines: GLM_CUDA_FORCE_DEVICE_FUNC, GLM_CUDA_FORCE_HOST_FUNC
+
452 
+
453 #if (GLM_COMPILER & GLM_COMPILER_CUDA) || (GLM_COMPILER & GLM_COMPILER_HIP)
+
454 # if defined(GLM_CUDA_FORCE_DEVICE_FUNC) && defined(GLM_CUDA_FORCE_HOST_FUNC)
+
455 # error "GLM error: GLM_CUDA_FORCE_DEVICE_FUNC and GLM_CUDA_FORCE_HOST_FUNC should not be defined at the same time, GLM by default generates both device and host code for CUDA compiler."
+
456 # endif//defined(GLM_CUDA_FORCE_DEVICE_FUNC) && defined(GLM_CUDA_FORCE_HOST_FUNC)
+
457 
+
458 # if defined(GLM_CUDA_FORCE_DEVICE_FUNC)
+
459 # define GLM_CUDA_FUNC_DEF __device__
+
460 # define GLM_CUDA_FUNC_DECL __device__
+
461 # elif defined(GLM_CUDA_FORCE_HOST_FUNC)
+
462 # define GLM_CUDA_FUNC_DEF __host__
+
463 # define GLM_CUDA_FUNC_DECL __host__
+
464 # else
+
465 # define GLM_CUDA_FUNC_DEF __device__ __host__
+
466 # define GLM_CUDA_FUNC_DECL __device__ __host__
+
467 # endif//defined(GLM_CUDA_FORCE_XXXX_FUNC)
+
468 #else
+
469 # define GLM_CUDA_FUNC_DEF
+
470 # define GLM_CUDA_FUNC_DECL
+
471 #endif
+
472 
+
473 #if defined(GLM_FORCE_INLINE)
+
474 # if GLM_COMPILER & GLM_COMPILER_VC
+
475 # define GLM_INLINE __forceinline
+
476 # define GLM_NEVER_INLINE __declspec(noinline)
+
477 # elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG)
+
478 # define GLM_INLINE inline __attribute__((__always_inline__))
+
479 # define GLM_NEVER_INLINE __attribute__((__noinline__))
+
480 # elif (GLM_COMPILER & GLM_COMPILER_CUDA) || (GLM_COMPILER & GLM_COMPILER_HIP)
+
481 # define GLM_INLINE __forceinline__
+
482 # define GLM_NEVER_INLINE __noinline__
+
483 # else
+
484 # define GLM_INLINE inline
+
485 # define GLM_NEVER_INLINE
+
486 # endif//GLM_COMPILER
+
487 #else
+
488 # define GLM_INLINE inline
+
489 # define GLM_NEVER_INLINE
+
490 #endif//defined(GLM_FORCE_INLINE)
+
491 
+
492 #define GLM_CTOR_DECL GLM_CUDA_FUNC_DECL GLM_CONSTEXPR
+
493 #define GLM_FUNC_DISCARD_DECL GLM_CUDA_FUNC_DECL
+
494 #define GLM_FUNC_DECL GLM_NODISCARD GLM_CUDA_FUNC_DECL
+
495 #define GLM_FUNC_QUALIFIER GLM_CUDA_FUNC_DEF GLM_INLINE
+
496 
+
497 // Do not use CUDA function qualifiers on CUDA compiler when functions are made default
+
498 #if GLM_HAS_DEFAULTED_FUNCTIONS
+
499 # define GLM_DEFAULTED_FUNC_DECL
+
500 # define GLM_DEFAULTED_FUNC_QUALIFIER GLM_INLINE
+
501 #else
+
502 # define GLM_DEFAULTED_FUNC_DECL GLM_FUNC_DISCARD_DECL
+
503 # define GLM_DEFAULTED_FUNC_QUALIFIER GLM_FUNC_QUALIFIER
+
504 #endif//GLM_HAS_DEFAULTED_FUNCTIONS
+
505 #if !defined(GLM_FORCE_CTOR_INIT)
+
506 # define GLM_DEFAULTED_DEFAULT_CTOR_DECL
+
507 # define GLM_DEFAULTED_DEFAULT_CTOR_QUALIFIER GLM_DEFAULTED_FUNC_QUALIFIER
+
508 #else
+
509 # define GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_FUNC_DISCARD_DECL
+
510 # define GLM_DEFAULTED_DEFAULT_CTOR_QUALIFIER GLM_FUNC_QUALIFIER
+
511 #endif//GLM_FORCE_CTOR_INIT
+
512 
+
514 // Swizzle operators
+
515 
+
516 // User defines: GLM_FORCE_SWIZZLE
+
517 
+
518 #define GLM_SWIZZLE_DISABLED 0
+
519 #define GLM_SWIZZLE_OPERATOR 1
+
520 #define GLM_SWIZZLE_FUNCTION 2
+
521 
+
522 #if defined(GLM_SWIZZLE)
+
523 # pragma message("GLM: GLM_SWIZZLE is deprecated, use GLM_FORCE_SWIZZLE instead.")
+
524 # define GLM_FORCE_SWIZZLE
+
525 #endif
+
526 
+
527 #if defined(GLM_FORCE_SWIZZLE) && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && !defined(GLM_FORCE_XYZW_ONLY)
+
528 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_OPERATOR
+
529 #elif defined(GLM_FORCE_SWIZZLE)
+
530 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_FUNCTION
+
531 #else
+
532 # define GLM_CONFIG_SWIZZLE GLM_SWIZZLE_DISABLED
+
533 #endif
+
534 
+
536 // Allows using not basic types as genType
+
537 
+
538 // #define GLM_FORCE_UNRESTRICTED_GENTYPE
+
539 
+
540 #ifdef GLM_FORCE_UNRESTRICTED_GENTYPE
+
541 # define GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_ENABLE
+
542 #else
+
543 # define GLM_CONFIG_UNRESTRICTED_GENTYPE GLM_DISABLE
+
544 #endif
+
545 
+
547 // Allows using any scaler as float
+
548 
+
549 // #define GLM_FORCE_UNRESTRICTED_FLOAT
+
550 
+
551 #ifdef GLM_FORCE_UNRESTRICTED_FLOAT
+
552 # define GLM_CONFIG_UNRESTRICTED_FLOAT GLM_ENABLE
+
553 #else
+
554 # define GLM_CONFIG_UNRESTRICTED_FLOAT GLM_DISABLE
+
555 #endif
+
556 
+
558 // Clip control, define GLM_FORCE_DEPTH_ZERO_TO_ONE before including GLM
+
559 // to use a clip space between 0 to 1.
+
560 // Coordinate system, define GLM_FORCE_LEFT_HANDED before including GLM
+
561 // to use left handed coordinate system by default.
+
562 
+
563 #define GLM_CLIP_CONTROL_ZO_BIT (1 << 0) // ZERO_TO_ONE
+
564 #define GLM_CLIP_CONTROL_NO_BIT (1 << 1) // NEGATIVE_ONE_TO_ONE
+
565 #define GLM_CLIP_CONTROL_LH_BIT (1 << 2) // LEFT_HANDED, For DirectX, Metal, Vulkan
+
566 #define GLM_CLIP_CONTROL_RH_BIT (1 << 3) // RIGHT_HANDED, For OpenGL, default in GLM
+
567 
+
568 #define GLM_CLIP_CONTROL_LH_ZO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_ZO_BIT)
+
569 #define GLM_CLIP_CONTROL_LH_NO (GLM_CLIP_CONTROL_LH_BIT | GLM_CLIP_CONTROL_NO_BIT)
+
570 #define GLM_CLIP_CONTROL_RH_ZO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_ZO_BIT)
+
571 #define GLM_CLIP_CONTROL_RH_NO (GLM_CLIP_CONTROL_RH_BIT | GLM_CLIP_CONTROL_NO_BIT)
+
572 
+
573 #ifdef GLM_FORCE_DEPTH_ZERO_TO_ONE
+
574 # ifdef GLM_FORCE_LEFT_HANDED
+
575 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_ZO
+
576 # else
+
577 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_ZO
+
578 # endif
+
579 #else
+
580 # ifdef GLM_FORCE_LEFT_HANDED
+
581 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_LH_NO
+
582 # else
+
583 # define GLM_CONFIG_CLIP_CONTROL GLM_CLIP_CONTROL_RH_NO
+
584 # endif
+
585 #endif
+
586 
+
588 // Qualifiers
+
589 
+
590 #if (GLM_COMPILER & GLM_COMPILER_VC) || ((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_PLATFORM & GLM_PLATFORM_WINDOWS))
+
591 # define GLM_DEPRECATED __declspec(deprecated)
+
592 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef __declspec(align(alignment)) type name
+
593 #elif GLM_COMPILER & (GLM_COMPILER_GCC | GLM_COMPILER_CLANG | GLM_COMPILER_INTEL)
+
594 # if GLM_LANG & GLM_LANG_CXX14_FLAG
+
595 # define GLM_DEPRECATED [[deprecated]]
+
596 # else
+
597 # define GLM_DEPRECATED __attribute__((__deprecated__))
+
598 # endif
+
599 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __attribute__((aligned(alignment)))
+
600 #elif (GLM_COMPILER & GLM_COMPILER_CUDA) || (GLM_COMPILER & GLM_COMPILER_HIP)
+
601 # define GLM_DEPRECATED
+
602 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name __align__(x)
+
603 #else
+
604 # define GLM_DEPRECATED
+
605 # define GLM_ALIGNED_TYPEDEF(type, name, alignment) typedef type name
+
606 #endif
+
607 
+
609 
+
610 #ifdef GLM_FORCE_EXPLICIT_CTOR
+
611 # define GLM_EXPLICIT explicit
+
612 #else
+
613 # define GLM_EXPLICIT
+
614 #endif
+
615 
+
617 // Length type: all length functions returns a length_t type.
+
618 // When GLM_FORCE_SIZE_T_LENGTH is defined, length_t is a typedef of size_t otherwise
+
619 // length_t is a typedef of int like GLSL defines it.
+
620 
+
621 #define GLM_LENGTH_INT 1
+
622 #define GLM_LENGTH_SIZE_T 2
+
623 
+
624 #ifdef GLM_FORCE_SIZE_T_LENGTH
+
625 # define GLM_CONFIG_LENGTH_TYPE GLM_LENGTH_SIZE_T
+
626 # define GLM_ASSERT_LENGTH(l, max) (assert ((l) < (max)))
+
627 #else
+
628 # define GLM_CONFIG_LENGTH_TYPE GLM_LENGTH_INT
+
629 # define GLM_ASSERT_LENGTH(l, max) (assert ((l) >= 0 && (l) < (max)))
+
630 #endif
+
631 
+
632 namespace glm
+
633 {
+
634  using std::size_t;
+
635 # if GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T
+
636  typedef size_t length_t;
+
637 # else
+
638  typedef int length_t;
+
639 # endif
+
640 }//namespace glm
+
641 
+
643 // constexpr
+
644 
+
645 #if GLM_HAS_CONSTEXPR
+
646 # define GLM_CONFIG_CONSTEXP GLM_ENABLE
+
647 
+
648  namespace glm
+
649  {
+
650  template<typename T, std::size_t N>
+
651  constexpr std::size_t countof(T const (&)[N])
+
652  {
+
653  return N;
+
654  }
+
655  }//namespace glm
+
656 # define GLM_COUNTOF(arr) glm::countof(arr)
+
657 #elif defined(_MSC_VER)
+
658 # define GLM_CONFIG_CONSTEXP GLM_DISABLE
+
659 
+
660 # define GLM_COUNTOF(arr) _countof(arr)
+
661 #else
+
662 # define GLM_CONFIG_CONSTEXP GLM_DISABLE
+
663 
+
664 # define GLM_COUNTOF(arr) sizeof(arr) / sizeof(arr[0])
+
665 #endif
+
666 
+
668 // uint
+
669 
+
670 namespace glm{
+
671 namespace detail
+
672 {
+
673  template<typename T>
+
674  struct is_int
+
675  {
+
676  enum test {value = 0};
+
677  };
+
678 
+
679  template<>
+
680  struct is_int<unsigned int>
+
681  {
+
682  enum test {value = ~0};
+
683  };
+
684 
+
685  template<>
+
686  struct is_int<signed int>
+
687  {
+
688  enum test {value = ~0};
+
689  };
+
690 }//namespace detail
+
691 
+
692  typedef unsigned int uint;
+
693 }//namespace glm
+
694 
+
696 // 64-bit int
+
697 
+
698 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
699 # include <cstdint>
+
700 #endif
+
701 
+
702 namespace glm{
+
703 namespace detail
+
704 {
+
705 # if GLM_HAS_EXTENDED_INTEGER_TYPE
+
706  typedef std::uint64_t uint64;
+
707  typedef std::int64_t int64;
+
708 # elif (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) // C99 detected, 64 bit types available
+
709  typedef uint64_t uint64;
+
710  typedef int64_t int64;
+
711 # elif GLM_COMPILER & GLM_COMPILER_VC
+
712  typedef unsigned __int64 uint64;
+
713  typedef signed __int64 int64;
+
714 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
715 # pragma GCC diagnostic ignored "-Wlong-long"
+
716  __extension__ typedef unsigned long long uint64;
+
717  __extension__ typedef signed long long int64;
+
718 # elif (GLM_COMPILER & GLM_COMPILER_CLANG)
+
719 # pragma clang diagnostic ignored "-Wc++11-long-long"
+
720  typedef unsigned long long uint64;
+
721  typedef signed long long int64;
+
722 # else//unknown compiler
+
723  typedef unsigned long long uint64;
+
724  typedef signed long long int64;
+
725 # endif
+
726 }//namespace detail
+
727 }//namespace glm
+
728 
+
730 // make_unsigned
+
731 
+
732 #if GLM_HAS_MAKE_SIGNED
+
733 # include <type_traits>
+
734 
+
735 namespace glm{
+
736 namespace detail
+
737 {
+
738  using std::make_unsigned;
+
739 }//namespace detail
+
740 }//namespace glm
+
741 
+
742 #else
+
743 
+
744 namespace glm{
+
745 namespace detail
+
746 {
+
747  template<typename genType>
+
748  struct make_unsigned
+
749  {};
+
750 
+
751  template<>
+
752  struct make_unsigned<char>
+
753  {
+
754  typedef unsigned char type;
+
755  };
+
756 
+
757  template<>
+
758  struct make_unsigned<signed char>
+
759  {
+
760  typedef unsigned char type;
+
761  };
+
762 
+
763  template<>
+
764  struct make_unsigned<short>
+
765  {
+
766  typedef unsigned short type;
+
767  };
+
768 
+
769  template<>
+
770  struct make_unsigned<int>
+
771  {
+
772  typedef unsigned int type;
+
773  };
+
774 
+
775  template<>
+
776  struct make_unsigned<long>
+
777  {
+
778  typedef unsigned long type;
+
779  };
+
780 
+
781  template<>
+
782  struct make_unsigned<int64>
+
783  {
+
784  typedef uint64 type;
+
785  };
+
786 
+
787  template<>
+
788  struct make_unsigned<unsigned char>
+
789  {
+
790  typedef unsigned char type;
+
791  };
+
792 
+
793  template<>
+
794  struct make_unsigned<unsigned short>
+
795  {
+
796  typedef unsigned short type;
+
797  };
+
798 
+
799  template<>
+
800  struct make_unsigned<unsigned int>
+
801  {
+
802  typedef unsigned int type;
+
803  };
+
804 
+
805  template<>
+
806  struct make_unsigned<unsigned long>
+
807  {
+
808  typedef unsigned long type;
+
809  };
+
810 
+
811  template<>
+
812  struct make_unsigned<uint64>
+
813  {
+
814  typedef uint64 type;
+
815  };
+
816 }//namespace detail
+
817 }//namespace glm
+
818 #endif
+
819 
+
821 // Only use x, y, z, w as vector type components
+
822 
+
823 #ifdef GLM_FORCE_XYZW_ONLY
+
824 # define GLM_CONFIG_XYZW_ONLY GLM_ENABLE
+
825 #else
+
826 # define GLM_CONFIG_XYZW_ONLY GLM_DISABLE
+
827 #endif
+
828 
+
830 // Configure the use of defaulted initialized types
+
831 
+
832 #define GLM_CTOR_INIT_DISABLE 0
+
833 #define GLM_CTOR_INITIALIZER_LIST 1
+
834 #define GLM_CTOR_INITIALISATION 2
+
835 
+
836 #if defined(GLM_FORCE_CTOR_INIT) && GLM_HAS_INITIALIZER_LISTS
+
837 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALIZER_LIST
+
838 #elif defined(GLM_FORCE_CTOR_INIT) && !GLM_HAS_INITIALIZER_LISTS
+
839 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INITIALISATION
+
840 #else
+
841 # define GLM_CONFIG_CTOR_INIT GLM_CTOR_INIT_DISABLE
+
842 #endif
+
843 
+
845 // Use SIMD instruction sets
+
846 
+
847 #if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (GLM_ARCH & GLM_ARCH_SIMD_BIT)
+
848 # define GLM_CONFIG_SIMD GLM_ENABLE
+
849 #else
+
850 # define GLM_CONFIG_SIMD GLM_DISABLE
+
851 #endif
+
852 
+
854 // Configure the use of defaulted function
+
855 
+
856 #if GLM_HAS_DEFAULTED_FUNCTIONS
+
857 # define GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_ENABLE
+
858 # define GLM_DEFAULT = default
+
859 #else
+
860 # define GLM_CONFIG_DEFAULTED_FUNCTIONS GLM_DISABLE
+
861 # define GLM_DEFAULT
+
862 #endif
+
863 
+
864 #if GLM_CONFIG_CTOR_INIT == GLM_CTOR_INIT_DISABLE && GLM_CONFIG_DEFAULTED_FUNCTIONS == GLM_ENABLE
+
865 # define GLM_CONFIG_DEFAULTED_DEFAULT_CTOR GLM_ENABLE
+
866 # define GLM_DEFAULT_CTOR GLM_DEFAULT
+
867 #else
+
868 # define GLM_CONFIG_DEFAULTED_DEFAULT_CTOR GLM_DISABLE
+
869 # define GLM_DEFAULT_CTOR
+
870 #endif
+
871 
+
873 // Configure the use of aligned gentypes
+
874 
+
875 #ifdef GLM_FORCE_ALIGNED // Legacy define
+
876 # define GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
+
877 #endif
+
878 
+
879 #ifdef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
+
880 # define GLM_FORCE_ALIGNED_GENTYPES
+
881 #endif
+
882 
+
883 #if GLM_HAS_ALIGNOF && (GLM_LANG & GLM_LANG_CXXMS_FLAG) && (defined(GLM_FORCE_ALIGNED_GENTYPES) || (GLM_CONFIG_SIMD == GLM_ENABLE))
+
884 # define GLM_CONFIG_ALIGNED_GENTYPES GLM_ENABLE
+
885 #else
+
886 # define GLM_CONFIG_ALIGNED_GENTYPES GLM_DISABLE
+
887 #endif
+
888 
+
890 // Configure the use of anonymous structure as implementation detail
+
891 
+
892 #if ((GLM_CONFIG_SIMD == GLM_ENABLE) || (GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR) || (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE))
+
893 # define GLM_CONFIG_ANONYMOUS_STRUCT GLM_ENABLE
+
894 #else
+
895 # define GLM_CONFIG_ANONYMOUS_STRUCT GLM_DISABLE
+
896 #endif
+
897 
+
899 // Silent warnings
+
900 
+
901 #ifdef GLM_FORCE_WARNINGS
+
902 # define GLM_SILENT_WARNINGS GLM_DISABLE
+
903 #else
+
904 # define GLM_SILENT_WARNINGS GLM_ENABLE
+
905 #endif
+
906 
+
908 // Precision
+
909 
+
910 #define GLM_HIGHP 1
+
911 #define GLM_MEDIUMP 2
+
912 #define GLM_LOWP 3
+
913 
+
914 #if defined(GLM_FORCE_PRECISION_HIGHP_BOOL) || defined(GLM_PRECISION_HIGHP_BOOL)
+
915 # define GLM_CONFIG_PRECISION_BOOL GLM_HIGHP
+
916 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_BOOL) || defined(GLM_PRECISION_MEDIUMP_BOOL)
+
917 # define GLM_CONFIG_PRECISION_BOOL GLM_MEDIUMP
+
918 #elif defined(GLM_FORCE_PRECISION_LOWP_BOOL) || defined(GLM_PRECISION_LOWP_BOOL)
+
919 # define GLM_CONFIG_PRECISION_BOOL GLM_LOWP
+
920 #else
+
921 # define GLM_CONFIG_PRECISION_BOOL GLM_HIGHP
+
922 #endif
+
923 
+
924 #if defined(GLM_FORCE_PRECISION_HIGHP_INT) || defined(GLM_PRECISION_HIGHP_INT)
+
925 # define GLM_CONFIG_PRECISION_INT GLM_HIGHP
+
926 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_INT) || defined(GLM_PRECISION_MEDIUMP_INT)
+
927 # define GLM_CONFIG_PRECISION_INT GLM_MEDIUMP
+
928 #elif defined(GLM_FORCE_PRECISION_LOWP_INT) || defined(GLM_PRECISION_LOWP_INT)
+
929 # define GLM_CONFIG_PRECISION_INT GLM_LOWP
+
930 #else
+
931 # define GLM_CONFIG_PRECISION_INT GLM_HIGHP
+
932 #endif
+
933 
+
934 #if defined(GLM_FORCE_PRECISION_HIGHP_UINT) || defined(GLM_PRECISION_HIGHP_UINT)
+
935 # define GLM_CONFIG_PRECISION_UINT GLM_HIGHP
+
936 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_UINT) || defined(GLM_PRECISION_MEDIUMP_UINT)
+
937 # define GLM_CONFIG_PRECISION_UINT GLM_MEDIUMP
+
938 #elif defined(GLM_FORCE_PRECISION_LOWP_UINT) || defined(GLM_PRECISION_LOWP_UINT)
+
939 # define GLM_CONFIG_PRECISION_UINT GLM_LOWP
+
940 #else
+
941 # define GLM_CONFIG_PRECISION_UINT GLM_HIGHP
+
942 #endif
+
943 
+
944 #if defined(GLM_FORCE_PRECISION_HIGHP_FLOAT) || defined(GLM_PRECISION_HIGHP_FLOAT)
+
945 # define GLM_CONFIG_PRECISION_FLOAT GLM_HIGHP
+
946 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_FLOAT) || defined(GLM_PRECISION_MEDIUMP_FLOAT)
+
947 # define GLM_CONFIG_PRECISION_FLOAT GLM_MEDIUMP
+
948 #elif defined(GLM_FORCE_PRECISION_LOWP_FLOAT) || defined(GLM_PRECISION_LOWP_FLOAT)
+
949 # define GLM_CONFIG_PRECISION_FLOAT GLM_LOWP
+
950 #else
+
951 # define GLM_CONFIG_PRECISION_FLOAT GLM_HIGHP
+
952 #endif
+
953 
+
954 #if defined(GLM_FORCE_PRECISION_HIGHP_DOUBLE) || defined(GLM_PRECISION_HIGHP_DOUBLE)
+
955 # define GLM_CONFIG_PRECISION_DOUBLE GLM_HIGHP
+
956 #elif defined(GLM_FORCE_PRECISION_MEDIUMP_DOUBLE) || defined(GLM_PRECISION_MEDIUMP_DOUBLE)
+
957 # define GLM_CONFIG_PRECISION_DOUBLE GLM_MEDIUMP
+
958 #elif defined(GLM_FORCE_PRECISION_LOWP_DOUBLE) || defined(GLM_PRECISION_LOWP_DOUBLE)
+
959 # define GLM_CONFIG_PRECISION_DOUBLE GLM_LOWP
+
960 #else
+
961 # define GLM_CONFIG_PRECISION_DOUBLE GLM_HIGHP
+
962 #endif
+
963 
+
965 // Check inclusions of different versions of GLM
+
966 
+
967 #elif ((GLM_SETUP_INCLUDED != GLM_VERSION) && !defined(GLM_FORCE_IGNORE_VERSION))
+
968 # error "GLM error: A different version of GLM is already included. Define GLM_FORCE_IGNORE_VERSION before including GLM headers to ignore this error."
+
969 #elif GLM_SETUP_INCLUDED == GLM_VERSION
+
970 
+
972 // Messages
+
973 
+
974 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_DISPLAYED)
+
975 # define GLM_MESSAGE_DISPLAYED
+
976 # define GLM_STR_HELPER(x) #x
+
977 # define GLM_STR(x) GLM_STR_HELPER(x)
+
978 
+
979  // Report GLM version
+
980 # pragma message ("GLM: version " GLM_STR(GLM_VERSION_MAJOR) "." GLM_STR(GLM_VERSION_MINOR) "." GLM_STR(GLM_VERSION_PATCH))
+
981 
+
982  // Report C++ language
+
983 # if (GLM_LANG & GLM_LANG_CXX20_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
984 # pragma message("GLM: C++ 20 with extensions")
+
985 # elif (GLM_LANG & GLM_LANG_CXX20_FLAG)
+
986 # pragma message("GLM: C++ 2A")
+
987 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
988 # pragma message("GLM: C++ 17 with extensions")
+
989 # elif (GLM_LANG & GLM_LANG_CXX17_FLAG)
+
990 # pragma message("GLM: C++ 17")
+
991 # elif (GLM_LANG & GLM_LANG_CXX14_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
992 # pragma message("GLM: C++ 14 with extensions")
+
993 # elif (GLM_LANG & GLM_LANG_CXX14_FLAG)
+
994 # pragma message("GLM: C++ 14")
+
995 # elif (GLM_LANG & GLM_LANG_CXX11_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
996 # pragma message("GLM: C++ 11 with extensions")
+
997 # elif (GLM_LANG & GLM_LANG_CXX11_FLAG)
+
998 # pragma message("GLM: C++ 11")
+
999 # elif (GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
1000 # pragma message("GLM: C++ 0x with extensions")
+
1001 # elif (GLM_LANG & GLM_LANG_CXX0X_FLAG)
+
1002 # pragma message("GLM: C++ 0x")
+
1003 # elif (GLM_LANG & GLM_LANG_CXX03_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
1004 # pragma message("GLM: C++ 03 with extensions")
+
1005 # elif (GLM_LANG & GLM_LANG_CXX03_FLAG)
+
1006 # pragma message("GLM: C++ 03")
+
1007 # elif (GLM_LANG & GLM_LANG_CXX98_FLAG) && (GLM_LANG & GLM_LANG_EXT)
+
1008 # pragma message("GLM: C++ 98 with extensions")
+
1009 # elif (GLM_LANG & GLM_LANG_CXX98_FLAG)
+
1010 # pragma message("GLM: C++ 98")
+
1011 # else
+
1012 # pragma message("GLM: C++ language undetected")
+
1013 # endif//GLM_LANG
+
1014 
+
1015  // Report compiler detection
+
1016 # if GLM_COMPILER & GLM_COMPILER_CUDA
+
1017 # pragma message("GLM: CUDA compiler detected")
+
1018 # elif GLM_COMPILER & GLM_COMPILER_HIP
+
1019 # pragma message("GLM: HIP compiler detected")
+
1020 # elif GLM_COMPILER & GLM_COMPILER_VC
+
1021 # pragma message("GLM: Visual C++ compiler detected")
+
1022 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
1023 # pragma message("GLM: Clang compiler detected")
+
1024 # elif GLM_COMPILER & GLM_COMPILER_INTEL
+
1025 # pragma message("GLM: Intel Compiler detected")
+
1026 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
1027 # pragma message("GLM: GCC compiler detected")
+
1028 # else
+
1029 # pragma message("GLM: Compiler not detected")
+
1030 # endif
+
1031 
+
1032  // Report build target
+
1033 # if (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1034 # pragma message("GLM: x86 64 bits with AVX2 instruction set build target")
+
1035 # elif (GLM_ARCH & GLM_ARCH_AVX2_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1036 # pragma message("GLM: x86 32 bits with AVX2 instruction set build target")
+
1037 
+
1038 # elif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1039 # pragma message("GLM: x86 64 bits with AVX instruction set build target")
+
1040 # elif (GLM_ARCH & GLM_ARCH_AVX_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1041 # pragma message("GLM: x86 32 bits with AVX instruction set build target")
+
1042 
+
1043 # elif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1044 # pragma message("GLM: x86 64 bits with SSE4.2 instruction set build target")
+
1045 # elif (GLM_ARCH & GLM_ARCH_SSE42_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1046 # pragma message("GLM: x86 32 bits with SSE4.2 instruction set build target")
+
1047 
+
1048 # elif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1049 # pragma message("GLM: x86 64 bits with SSE4.1 instruction set build target")
+
1050 # elif (GLM_ARCH & GLM_ARCH_SSE41_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1051 # pragma message("GLM: x86 32 bits with SSE4.1 instruction set build target")
+
1052 
+
1053 # elif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1054 # pragma message("GLM: x86 64 bits with SSSE3 instruction set build target")
+
1055 # elif (GLM_ARCH & GLM_ARCH_SSSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1056 # pragma message("GLM: x86 32 bits with SSSE3 instruction set build target")
+
1057 
+
1058 # elif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1059 # pragma message("GLM: x86 64 bits with SSE3 instruction set build target")
+
1060 # elif (GLM_ARCH & GLM_ARCH_SSE3_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1061 # pragma message("GLM: x86 32 bits with SSE3 instruction set build target")
+
1062 
+
1063 # elif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1064 # pragma message("GLM: x86 64 bits with SSE2 instruction set build target")
+
1065 # elif (GLM_ARCH & GLM_ARCH_SSE2_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1066 # pragma message("GLM: x86 32 bits with SSE2 instruction set build target")
+
1067 
+
1068 # elif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1069 # pragma message("GLM: x86 64 bits build target")
+
1070 # elif (GLM_ARCH & GLM_ARCH_X86_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1071 # pragma message("GLM: x86 32 bits build target")
+
1072 
+
1073 # elif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1074 # pragma message("GLM: ARM 64 bits with Neon instruction set build target")
+
1075 # elif (GLM_ARCH & GLM_ARCH_NEON_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1076 # pragma message("GLM: ARM 32 bits with Neon instruction set build target")
+
1077 
+
1078 # elif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1079 # pragma message("GLM: ARM 64 bits build target")
+
1080 # elif (GLM_ARCH & GLM_ARCH_ARM_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1081 # pragma message("GLM: ARM 32 bits build target")
+
1082 
+
1083 # elif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1084 # pragma message("GLM: MIPS 64 bits build target")
+
1085 # elif (GLM_ARCH & GLM_ARCH_MIPS_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1086 # pragma message("GLM: MIPS 32 bits build target")
+
1087 
+
1088 # elif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_64)
+
1089 # pragma message("GLM: PowerPC 64 bits build target")
+
1090 # elif (GLM_ARCH & GLM_ARCH_PPC_BIT) && (GLM_MODEL == GLM_MODEL_32)
+
1091 # pragma message("GLM: PowerPC 32 bits build target")
+
1092 # else
+
1093 # pragma message("GLM: Unknown build target")
+
1094 # endif//GLM_ARCH
+
1095 
+
1096  // Report platform name
+
1097 # if(GLM_PLATFORM & GLM_PLATFORM_QNXNTO)
+
1098 # pragma message("GLM: QNX platform detected")
+
1099 //# elif(GLM_PLATFORM & GLM_PLATFORM_IOS)
+
1100 //# pragma message("GLM: iOS platform detected")
+
1101 # elif(GLM_PLATFORM & GLM_PLATFORM_APPLE)
+
1102 # pragma message("GLM: Apple platform detected")
+
1103 # elif(GLM_PLATFORM & GLM_PLATFORM_WINCE)
+
1104 # pragma message("GLM: WinCE platform detected")
+
1105 # elif(GLM_PLATFORM & GLM_PLATFORM_WINDOWS)
+
1106 # pragma message("GLM: Windows platform detected")
+
1107 # elif(GLM_PLATFORM & GLM_PLATFORM_CHROME_NACL)
+
1108 # pragma message("GLM: Native Client detected")
+
1109 # elif(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
+
1110 # pragma message("GLM: Android platform detected")
+
1111 # elif(GLM_PLATFORM & GLM_PLATFORM_LINUX)
+
1112 # pragma message("GLM: Linux platform detected")
+
1113 # elif(GLM_PLATFORM & GLM_PLATFORM_UNIX)
+
1114 # pragma message("GLM: UNIX platform detected")
+
1115 # elif(GLM_PLATFORM & GLM_PLATFORM_UNKNOWN)
+
1116 # pragma message("GLM: platform unknown")
+
1117 # else
+
1118 # pragma message("GLM: platform not detected")
+
1119 # endif
+
1120 
+
1121  // Report whether only xyzw component are used
+
1122 # if defined GLM_FORCE_XYZW_ONLY
+
1123 # pragma message("GLM: GLM_FORCE_XYZW_ONLY is defined. Only x, y, z and w component are available in vector type. This define disables swizzle operators and SIMD instruction sets.")
+
1124 # endif
+
1125 
+
1126  // Report swizzle operator support
+
1127 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
1128 # pragma message("GLM: GLM_FORCE_SWIZZLE is defined, swizzling operators enabled.")
+
1129 # elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
1130 # pragma message("GLM: GLM_FORCE_SWIZZLE is defined, swizzling functions enabled. Enable compiler C++ language extensions to enable swizzle operators.")
+
1131 # else
+
1132 # pragma message("GLM: GLM_FORCE_SWIZZLE is undefined. swizzling functions or operators are disabled.")
+
1133 # endif
+
1134 
+
1135  // Report .length() type
+
1136 # if GLM_CONFIG_LENGTH_TYPE == GLM_LENGTH_SIZE_T
+
1137 # pragma message("GLM: GLM_FORCE_SIZE_T_LENGTH is defined. .length() returns a glm::length_t, a typedef of std::size_t.")
+
1138 # else
+
1139 # pragma message("GLM: GLM_FORCE_SIZE_T_LENGTH is undefined. .length() returns a glm::length_t, a typedef of int following GLSL.")
+
1140 # endif
+
1141 
+
1142 # if GLM_CONFIG_UNRESTRICTED_GENTYPE == GLM_ENABLE
+
1143 # pragma message("GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is defined. Removes GLSL restrictions on valid function genTypes.")
+
1144 # else
+
1145 # pragma message("GLM: GLM_FORCE_UNRESTRICTED_GENTYPE is undefined. Follows strictly GLSL on valid function genTypes.")
+
1146 # endif
+
1147 
+
1148 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
1149 # pragma message("GLM: GLM_FORCE_SILENT_WARNINGS is defined. Ignores C++ warnings from using C++ language extensions.")
+
1150 # else
+
1151 # pragma message("GLM: GLM_FORCE_SILENT_WARNINGS is undefined. Shows C++ warnings from using C++ language extensions.")
+
1152 # endif
+
1153 
+
1154 # ifdef GLM_FORCE_SINGLE_ONLY
+
1155 # pragma message("GLM: GLM_FORCE_SINGLE_ONLY is defined. Using only single precision floating-point types.")
+
1156 # endif
+
1157 
+
1158 # if defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE)
+
1159 # undef GLM_FORCE_ALIGNED_GENTYPES
+
1160 # pragma message("GLM: GLM_FORCE_ALIGNED_GENTYPES is defined, allowing aligned types. This prevents the use of C++ constexpr.")
+
1161 # elif defined(GLM_FORCE_ALIGNED_GENTYPES) && (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)
+
1162 # undef GLM_FORCE_ALIGNED_GENTYPES
+
1163 # pragma message("GLM: GLM_FORCE_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.")
+
1164 # endif
+
1165 
+
1166 # if defined(GLM_FORCE_DEFAULT_ALIGNED_GENTYPES)
+
1167 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE
+
1168 # undef GLM_FORCE_DEFAULT_ALIGNED_GENTYPES
+
1169 # pragma message("GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined but is disabled. It requires C++11 and language extensions.")
+
1170 # elif GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
+
1171 # pragma message("GLM: GLM_FORCE_DEFAULT_ALIGNED_GENTYPES is defined. All gentypes (e.g. vec3) will be aligned and padded by default.")
+
1172 # endif
+
1173 # endif
+
1174 
+
1175 # if GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_ZO_BIT
+
1176 # pragma message("GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is defined. Using zero to one depth clip space.")
+
1177 # else
+
1178 # pragma message("GLM: GLM_FORCE_DEPTH_ZERO_TO_ONE is undefined. Using negative one to one depth clip space.")
+
1179 # endif
+
1180 
+
1181 # if GLM_CONFIG_CLIP_CONTROL & GLM_CLIP_CONTROL_LH_BIT
+
1182 # pragma message("GLM: GLM_FORCE_LEFT_HANDED is defined. Using left handed coordinate system.")
+
1183 # else
+
1184 # pragma message("GLM: GLM_FORCE_LEFT_HANDED is undefined. Using right handed coordinate system.")
+
1185 # endif
+
1186 #endif//GLM_MESSAGES
+
1187 
+
1188 #endif//GLM_SETUP_INCLUDED
+
+
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:145
+
detail::uint64 uint64
64 bit unsigned integer type.
+
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
+
detail::int64 int64
64 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00038_source.html b/include/glm/doc/api/a00038_source.html new file mode 100644 index 0000000..03fd4e7 --- /dev/null +++ b/include/glm/doc/api/a00038_source.html @@ -0,0 +1,150 @@ + + + + + + + +1.0.2 API documentation: type_float.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_float.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "setup.hpp"
+
4 
+
5 #if GLM_COMPILER == GLM_COMPILER_VC12
+
6 # pragma warning(push)
+
7 # pragma warning(disable: 4512) // assignment operator could not be generated
+
8 #endif
+
9 
+
10 namespace glm{
+
11 namespace detail
+
12 {
+
13  template <typename T>
+
14  union float_t
+
15  {};
+
16 
+
17  // https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
+
18  template <>
+
19  union float_t<float>
+
20  {
+
21  typedef int int_type;
+
22  typedef float float_type;
+
23 
+
24  GLM_CONSTEXPR float_t(float_type Num = 0.0f) : f(Num) {}
+
25 
+
26  GLM_CONSTEXPR float_t& operator=(float_t const& x)
+
27  {
+
28  f = x.f;
+
29  return *this;
+
30  }
+
31 
+
32  // Portable extraction of components.
+
33  GLM_CONSTEXPR bool negative() const { return i < 0; }
+
34  GLM_CONSTEXPR int_type mantissa() const { return i & ((1 << 23) - 1); }
+
35  GLM_CONSTEXPR int_type exponent() const { return (i >> 23) & ((1 << 8) - 1); }
+
36 
+
37  int_type i;
+
38  float_type f;
+
39  };
+
40 
+
41  template <>
+
42  union float_t<double>
+
43  {
+
44  typedef detail::int64 int_type;
+
45  typedef double float_type;
+
46 
+
47  GLM_CONSTEXPR float_t(float_type Num = static_cast<float_type>(0)) : f(Num) {}
+
48 
+
49  GLM_CONSTEXPR float_t& operator=(float_t const& x)
+
50  {
+
51  f = x.f;
+
52  return *this;
+
53  }
+
54 
+
55  // Portable extraction of components.
+
56  GLM_CONSTEXPR bool negative() const { return i < 0; }
+
57  GLM_CONSTEXPR int_type mantissa() const { return i & ((int_type(1) << 52) - 1); }
+
58  GLM_CONSTEXPR int_type exponent() const { return (i >> 52) & ((int_type(1) << 11) - 1); }
+
59 
+
60  int_type i;
+
61  float_type f;
+
62  };
+
63 }//namespace detail
+
64 }//namespace glm
+
65 
+
66 #if GLM_COMPILER == GLM_COMPILER_VC12
+
67 # pragma warning(pop)
+
68 #endif
+
+
detail::int64 int64
64 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00041_source.html b/include/glm/doc/api/a00041_source.html new file mode 100644 index 0000000..1ed394b --- /dev/null +++ b/include/glm/doc/api/a00041_source.html @@ -0,0 +1,97 @@ + + + + + + + +1.0.2 API documentation: type_half.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_half.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "setup.hpp"
+
4 
+
5 namespace glm{
+
6 namespace detail
+
7 {
+
8  typedef short hdata;
+
9 
+
10  GLM_FUNC_DECL float toFloat32(hdata value);
+
11  GLM_FUNC_DECL hdata toFloat16(float const& value);
+
12 
+
13 }//namespace detail
+
14 }//namespace glm
+
15 
+
16 #include "type_half.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00044.html b/include/glm/doc/api/a00044.html new file mode 100644 index 0000000..24da58f --- /dev/null +++ b/include/glm/doc/api/a00044.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00044_source.html b/include/glm/doc/api/a00044_source.html new file mode 100644 index 0000000..26b4c16 --- /dev/null +++ b/include/glm/doc/api/a00044_source.html @@ -0,0 +1,258 @@ + + + + + + + +1.0.2 API documentation: type_mat2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec2.hpp"
+
7 #include <limits>
+
8 #include <cstddef>
+
9 
+
10 namespace glm
+
11 {
+
12  template<typename T, qualifier Q>
+
13  struct mat<2, 2, T, Q>
+
14  {
+
15  typedef vec<2, T, Q> col_type;
+
16  typedef vec<2, T, Q> row_type;
+
17  typedef mat<2, 2, T, Q> type;
+
18  typedef mat<2, 2, T, Q> transpose_type;
+
19  typedef T value_type;
+
20 
+
21  private:
+
22  col_type value[2];
+
23 
+
24  public:
+
25  // -- Accesses --
+
26 
+
27  typedef length_t length_type;
+
28  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }
+
29 
+
30  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
32 
+
33  // -- Constructors --
+
34 
+
35  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
36  template<qualifier P>
+
37  GLM_CTOR_DECL mat(mat<2, 2, T, P> const& m);
+
38 
+
39  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
40  GLM_CTOR_DECL mat(
+
41  T const& x1, T const& y1,
+
42  T const& x2, T const& y2);
+
43  GLM_CTOR_DECL mat(
+
44  col_type const& v1,
+
45  col_type const& v2);
+
46 
+
47  // -- Conversions --
+
48 
+
49  template<typename U, typename V, typename M, typename N>
+
50  GLM_CTOR_DECL mat(
+
51  U const& x1, V const& y1,
+
52  M const& x2, N const& y2);
+
53 
+
54  template<typename U, typename V>
+
55  GLM_CTOR_DECL mat(
+
56  vec<2, U, Q> const& v1,
+
57  vec<2, V, Q> const& v2);
+
58 
+
59  // -- Matrix conversions --
+
60 
+
61  template<typename U, qualifier P>
+
62  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, U, P> const& m);
+
63 
+
64  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
65  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
66  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
67  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
68  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
69  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
70  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
71  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
72 
+
73  // -- Unary arithmetic operators --
+
74 
+
75  template<typename U>
+
76  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator=(mat<2, 2, U, Q> const& m);
+
77  template<typename U>
+
78  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator+=(U s);
+
79  template<typename U>
+
80  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator+=(mat<2, 2, U, Q> const& m);
+
81  template<typename U>
+
82  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator-=(U s);
+
83  template<typename U>
+
84  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator-=(mat<2, 2, U, Q> const& m);
+
85  template<typename U>
+
86  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator*=(U s);
+
87  template<typename U>
+
88  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator*=(mat<2, 2, U, Q> const& m);
+
89  template<typename U>
+
90  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator/=(U s);
+
91  template<typename U>
+
92  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator/=(mat<2, 2, U, Q> const& m);
+
93 
+
94  // -- Increment and decrement operators --
+
95 
+
96  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator++ ();
+
97  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 2, T, Q> & operator-- ();
+
98  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator++(int);
+
99  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator--(int);
+
100  };
+
101 
+
102  // -- Unary operators --
+
103 
+
104  template<typename T, qualifier Q>
+
105  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m);
+
106 
+
107  template<typename T, qualifier Q>
+
108  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m);
+
109 
+
110  // -- Binary operators --
+
111 
+
112  template<typename T, qualifier Q>
+
113  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m, T scalar);
+
114 
+
115  template<typename T, qualifier Q>
+
116  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator+(T scalar, mat<2, 2, T, Q> const& m);
+
117 
+
118  template<typename T, qualifier Q>
+
119  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator+(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
120 
+
121  template<typename T, qualifier Q>
+
122  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m, T scalar);
+
123 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator-(T scalar, mat<2, 2, T, Q> const& m);
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator-(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m, T scalar);
+
132 
+
133  template<typename T, qualifier Q>
+
134  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator*(T scalar, mat<2, 2, T, Q> const& m);
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 2, T, Q>::col_type operator*(mat<2, 2, T, Q> const& m, typename mat<2, 2, T, Q>::row_type const& v);
+
138 
+
139  template<typename T, qualifier Q>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 2, T, Q>::row_type operator*(typename mat<2, 2, T, Q>::col_type const& v, mat<2, 2, T, Q> const& m);
+
141 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
144 
+
145  template<typename T, qualifier Q>
+
146  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
147 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator*(mat<2, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
150 
+
151  template<typename T, qualifier Q>
+
152  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m, T scalar);
+
153 
+
154  template<typename T, qualifier Q>
+
155  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator/(T scalar, mat<2, 2, T, Q> const& m);
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 2, T, Q>::col_type operator/(mat<2, 2, T, Q> const& m, typename mat<2, 2, T, Q>::row_type const& v);
+
159 
+
160  template<typename T, qualifier Q>
+
161  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 2, T, Q>::row_type operator/(typename mat<2, 2, T, Q>::col_type const& v, mat<2, 2, T, Q> const& m);
+
162 
+
163  template<typename T, qualifier Q>
+
164  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator/(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
165 
+
166  // -- Boolean operators --
+
167 
+
168  template<typename T, qualifier Q>
+
169  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
170 
+
171  template<typename T, qualifier Q>
+
172  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<2, 2, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
173 } //namespace glm
+
174 
+
175 #ifndef GLM_EXTERNAL_TEMPLATE
+
176 #include "type_mat2x2.inl"
+
177 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00047.html b/include/glm/doc/api/a00047.html new file mode 100644 index 0000000..4253500 --- /dev/null +++ b/include/glm/doc/api/a00047.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00047_source.html b/include/glm/doc/api/a00047_source.html new file mode 100644 index 0000000..3a30ec3 --- /dev/null +++ b/include/glm/doc/api/a00047_source.html @@ -0,0 +1,241 @@ + + + + + + + +1.0.2 API documentation: type_mat2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec2.hpp"
+
7 #include "type_vec3.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<2, 3, T, Q>
+
15  {
+
16  typedef vec<3, T, Q> col_type;
+
17  typedef vec<2, T, Q> row_type;
+
18  typedef mat<2, 3, T, Q> type;
+
19  typedef mat<3, 2, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[2];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<2, 3, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
41  GLM_CTOR_DECL mat(
+
42  T x0, T y0, T z0,
+
43  T x1, T y1, T z1);
+
44  GLM_CTOR_DECL mat(
+
45  col_type const& v0,
+
46  col_type const& v1);
+
47 
+
48  // -- Conversions --
+
49 
+
50  template<typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2>
+
51  GLM_CTOR_DECL mat(
+
52  X1 x1, Y1 y1, Z1 z1,
+
53  X2 x2, Y2 y2, Z2 z2);
+
54 
+
55  template<typename U, typename V>
+
56  GLM_CTOR_DECL mat(
+
57  vec<3, U, Q> const& v1,
+
58  vec<3, V, Q> const& v2);
+
59 
+
60  // -- Matrix conversions --
+
61 
+
62  template<typename U, qualifier P>
+
63  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, U, P> const& m);
+
64 
+
65  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
66  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
67  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
68  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
69  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
70  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
71  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
72  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
73 
+
74  // -- Unary arithmetic operators --
+
75 
+
76  template<typename U>
+
77  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator=(mat<2, 3, U, Q> const& m);
+
78  template<typename U>
+
79  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator+=(U s);
+
80  template<typename U>
+
81  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator+=(mat<2, 3, U, Q> const& m);
+
82  template<typename U>
+
83  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator-=(U s);
+
84  template<typename U>
+
85  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator-=(mat<2, 3, U, Q> const& m);
+
86  template<typename U>
+
87  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator*=(U s);
+
88  template<typename U>
+
89  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator/=(U s);
+
90 
+
91  // -- Increment and decrement operators --
+
92 
+
93  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator++ ();
+
94  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 3, T, Q> & operator-- ();
+
95  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator++(int);
+
96  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator--(int);
+
97  };
+
98 
+
99  // -- Unary operators --
+
100 
+
101  template<typename T, qualifier Q>
+
102  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m);
+
103 
+
104  template<typename T, qualifier Q>
+
105  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m);
+
106 
+
107  // -- Binary operators --
+
108 
+
109  template<typename T, qualifier Q>
+
110  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m, T scalar);
+
111 
+
112  template<typename T, qualifier Q>
+
113  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator+(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
114 
+
115  template<typename T, qualifier Q>
+
116  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m, T scalar);
+
117 
+
118  template<typename T, qualifier Q>
+
119  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator-(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
120 
+
121  template<typename T, qualifier Q>
+
122  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m, T scalar);
+
123 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator*(T scalar, mat<2, 3, T, Q> const& m);
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 3, T, Q>::col_type operator*(mat<2, 3, T, Q> const& m, typename mat<2, 3, T, Q>::row_type const& v);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 3, T, Q>::row_type operator*(typename mat<2, 3, T, Q>::col_type const& v, mat<2, 3, T, Q> const& m);
+
132 
+
133  template<typename T, qualifier Q>
+
134  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
138 
+
139  template<typename T, qualifier Q>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator*(mat<2, 3, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
141 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator/(mat<2, 3, T, Q> const& m, T scalar);
+
144 
+
145  template<typename T, qualifier Q>
+
146  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator/(T scalar, mat<2, 3, T, Q> const& m);
+
147 
+
148  // -- Boolean operators --
+
149 
+
150  template<typename T, qualifier Q>
+
151  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
152 
+
153  template<typename T, qualifier Q>
+
154  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<2, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
155 }//namespace glm
+
156 
+
157 #ifndef GLM_EXTERNAL_TEMPLATE
+
158 #include "type_mat2x3.inl"
+
159 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00050.html b/include/glm/doc/api/a00050.html new file mode 100644 index 0000000..651afe0 --- /dev/null +++ b/include/glm/doc/api/a00050.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00050_source.html b/include/glm/doc/api/a00050_source.html new file mode 100644 index 0000000..de72ac1 --- /dev/null +++ b/include/glm/doc/api/a00050_source.html @@ -0,0 +1,243 @@ + + + + + + + +1.0.2 API documentation: type_mat2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec2.hpp"
+
7 #include "type_vec4.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<2, 4, T, Q>
+
15  {
+
16  typedef vec<4, T, Q> col_type;
+
17  typedef vec<2, T, Q> row_type;
+
18  typedef mat<2, 4, T, Q> type;
+
19  typedef mat<4, 2, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[2];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 2; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<2, 4, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
41  GLM_CTOR_DECL mat(
+
42  T x0, T y0, T z0, T w0,
+
43  T x1, T y1, T z1, T w1);
+
44  GLM_CTOR_DECL mat(
+
45  col_type const& v0,
+
46  col_type const& v1);
+
47 
+
48  // -- Conversions --
+
49 
+
50  template<
+
51  typename X1, typename Y1, typename Z1, typename W1,
+
52  typename X2, typename Y2, typename Z2, typename W2>
+
53  GLM_CTOR_DECL mat(
+
54  X1 x1, Y1 y1, Z1 z1, W1 w1,
+
55  X2 x2, Y2 y2, Z2 z2, W2 w2);
+
56 
+
57  template<typename U, typename V>
+
58  GLM_CTOR_DECL mat(
+
59  vec<4, U, Q> const& v1,
+
60  vec<4, V, Q> const& v2);
+
61 
+
62  // -- Matrix conversions --
+
63 
+
64  template<typename U, qualifier P>
+
65  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, U, P> const& m);
+
66 
+
67  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
68  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
69  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
70  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
71  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
72  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
73  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
74  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
75 
+
76  // -- Unary arithmetic operators --
+
77 
+
78  template<typename U>
+
79  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator=(mat<2, 4, U, Q> const& m);
+
80  template<typename U>
+
81  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator+=(U s);
+
82  template<typename U>
+
83  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator+=(mat<2, 4, U, Q> const& m);
+
84  template<typename U>
+
85  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator-=(U s);
+
86  template<typename U>
+
87  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator-=(mat<2, 4, U, Q> const& m);
+
88  template<typename U>
+
89  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator*=(U s);
+
90  template<typename U>
+
91  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator/=(U s);
+
92 
+
93  // -- Increment and decrement operators --
+
94 
+
95  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator++ ();
+
96  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, 4, T, Q> & operator-- ();
+
97  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator++(int);
+
98  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator--(int);
+
99  };
+
100 
+
101  // -- Unary operators --
+
102 
+
103  template<typename T, qualifier Q>
+
104  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m);
+
105 
+
106  template<typename T, qualifier Q>
+
107  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m);
+
108 
+
109  // -- Binary operators --
+
110 
+
111  template<typename T, qualifier Q>
+
112  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m, T scalar);
+
113 
+
114  template<typename T, qualifier Q>
+
115  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator+(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
116 
+
117  template<typename T, qualifier Q>
+
118  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m, T scalar);
+
119 
+
120  template<typename T, qualifier Q>
+
121  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator-(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
122 
+
123  template<typename T, qualifier Q>
+
124  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m, T scalar);
+
125 
+
126  template<typename T, qualifier Q>
+
127  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator*(T scalar, mat<2, 4, T, Q> const& m);
+
128 
+
129  template<typename T, qualifier Q>
+
130  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 4, T, Q>::col_type operator*(mat<2, 4, T, Q> const& m, typename mat<2, 4, T, Q>::row_type const& v);
+
131 
+
132  template<typename T, qualifier Q>
+
133  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<2, 4, T, Q>::row_type operator*(typename mat<2, 4, T, Q>::col_type const& v, mat<2, 4, T, Q> const& m);
+
134 
+
135  template<typename T, qualifier Q>
+
136  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
137 
+
138  template<typename T, qualifier Q>
+
139  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<2, 2, T, Q> const& m2);
+
140 
+
141  template<typename T, qualifier Q>
+
142  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator*(mat<2, 4, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
143 
+
144  template<typename T, qualifier Q>
+
145  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator/(mat<2, 4, T, Q> const& m, T scalar);
+
146 
+
147  template<typename T, qualifier Q>
+
148  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator/(T scalar, mat<2, 4, T, Q> const& m);
+
149 
+
150  // -- Boolean operators --
+
151 
+
152  template<typename T, qualifier Q>
+
153  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
154 
+
155  template<typename T, qualifier Q>
+
156  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<2, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
157 }//namespace glm
+
158 
+
159 #ifndef GLM_EXTERNAL_TEMPLATE
+
160 #include "type_mat2x4.inl"
+
161 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00053.html b/include/glm/doc/api/a00053.html new file mode 100644 index 0000000..e335a1d --- /dev/null +++ b/include/glm/doc/api/a00053.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00053_source.html b/include/glm/doc/api/a00053_source.html new file mode 100644 index 0000000..62231fb --- /dev/null +++ b/include/glm/doc/api/a00053_source.html @@ -0,0 +1,249 @@ + + + + + + + +1.0.2 API documentation: type_mat3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec2.hpp"
+
7 #include "type_vec3.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<3, 2, T, Q>
+
15  {
+
16  typedef vec<2, T, Q> col_type;
+
17  typedef vec<3, T, Q> row_type;
+
18  typedef mat<3, 2, T, Q> type;
+
19  typedef mat<2, 3, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[3];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<3, 2, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
41  GLM_CTOR_DECL mat(
+
42  T x0, T y0,
+
43  T x1, T y1,
+
44  T x2, T y2);
+
45  GLM_CTOR_DECL mat(
+
46  col_type const& v0,
+
47  col_type const& v1,
+
48  col_type const& v2);
+
49 
+
50  // -- Conversions --
+
51 
+
52  template<
+
53  typename X1, typename Y1,
+
54  typename X2, typename Y2,
+
55  typename X3, typename Y3>
+
56  GLM_CTOR_DECL mat(
+
57  X1 x1, Y1 y1,
+
58  X2 x2, Y2 y2,
+
59  X3 x3, Y3 y3);
+
60 
+
61  template<typename V1, typename V2, typename V3>
+
62  GLM_CTOR_DECL mat(
+
63  vec<2, V1, Q> const& v1,
+
64  vec<2, V2, Q> const& v2,
+
65  vec<2, V3, Q> const& v3);
+
66 
+
67  // -- Matrix conversions --
+
68 
+
69  template<typename U, qualifier P>
+
70  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, U, P> const& m);
+
71 
+
72  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
73  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
74  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
75  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
76  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
77  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
78  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
79  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
80 
+
81  // -- Unary arithmetic operators --
+
82 
+
83  template<typename U>
+
84  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator=(mat<3, 2, U, Q> const& m);
+
85  template<typename U>
+
86  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator+=(U s);
+
87  template<typename U>
+
88  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator+=(mat<3, 2, U, Q> const& m);
+
89  template<typename U>
+
90  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator-=(U s);
+
91  template<typename U>
+
92  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator-=(mat<3, 2, U, Q> const& m);
+
93  template<typename U>
+
94  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator*=(U s);
+
95  template<typename U>
+
96  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator/=(U s);
+
97 
+
98  // -- Increment and decrement operators --
+
99 
+
100  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator++ ();
+
101  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 2, T, Q> & operator-- ();
+
102  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator++(int);
+
103  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator--(int);
+
104  };
+
105 
+
106  // -- Unary operators --
+
107 
+
108  template<typename T, qualifier Q>
+
109  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m);
+
110 
+
111  template<typename T, qualifier Q>
+
112  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m);
+
113 
+
114  // -- Binary operators --
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m, T scalar);
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator+(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
121 
+
122  template<typename T, qualifier Q>
+
123  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m, T scalar);
+
124 
+
125  template<typename T, qualifier Q>
+
126  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator-(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
127 
+
128  template<typename T, qualifier Q>
+
129  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m, T scalar);
+
130 
+
131  template<typename T, qualifier Q>
+
132  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator*(T scalar, mat<3, 2, T, Q> const& m);
+
133 
+
134  template<typename T, qualifier Q>
+
135  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 2, T, Q>::col_type operator*(mat<3, 2, T, Q> const& m, typename mat<3, 2, T, Q>::row_type const& v);
+
136 
+
137  template<typename T, qualifier Q>
+
138  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 2, T, Q>::row_type operator*(typename mat<3, 2, T, Q>::col_type const& v, mat<3, 2, T, Q> const& m);
+
139 
+
140  template<typename T, qualifier Q>
+
141  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
142 
+
143  template<typename T, qualifier Q>
+
144  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
145 
+
146  template<typename T, qualifier Q>
+
147  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator*(mat<3, 2, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
148 
+
149  template<typename T, qualifier Q>
+
150  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator/(mat<3, 2, T, Q> const& m, T scalar);
+
151 
+
152  template<typename T, qualifier Q>
+
153  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator/(T scalar, mat<3, 2, T, Q> const& m);
+
154 
+
155  // -- Boolean operators --
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
159 
+
160  template<typename T, qualifier Q>
+
161  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<3, 2, T, Q> const& m1, mat<3, 2, T, Q> const& m2);
+
162 
+
163 }//namespace glm
+
164 
+
165 #ifndef GLM_EXTERNAL_TEMPLATE
+
166 #include "type_mat3x2.inl"
+
167 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00056.html b/include/glm/doc/api/a00056.html new file mode 100644 index 0000000..ebdaca5 --- /dev/null +++ b/include/glm/doc/api/a00056.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00056_source.html b/include/glm/doc/api/a00056_source.html new file mode 100644 index 0000000..fd3efbc --- /dev/null +++ b/include/glm/doc/api/a00056_source.html @@ -0,0 +1,265 @@ + + + + + + + +1.0.2 API documentation: type_mat3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec3.hpp"
+
7 #include <limits>
+
8 #include <cstddef>
+
9 
+
10 namespace glm
+
11 {
+
12  template<typename T, qualifier Q>
+
13  struct mat<3, 3, T, Q>
+
14  {
+
15  typedef vec<3, T, Q> col_type;
+
16  typedef vec<3, T, Q> row_type;
+
17  typedef mat<3, 3, T, Q> type;
+
18  typedef mat<3, 3, T, Q> transpose_type;
+
19  typedef T value_type;
+
20 
+
21  private:
+
22  col_type value[3];
+
23 
+
24  public:
+
25  // -- Accesses --
+
26 
+
27  typedef length_t length_type;
+
28  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }
+
29 
+
30  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
32 
+
33  // -- Constructors --
+
34 
+
35  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
36  template<qualifier P>
+
37  GLM_CTOR_DECL mat(mat<3, 3, T, P> const& m);
+
38 
+
39  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
40  GLM_CTOR_DECL mat(
+
41  T x0, T y0, T z0,
+
42  T x1, T y1, T z1,
+
43  T x2, T y2, T z2);
+
44  GLM_CTOR_DECL mat(
+
45  col_type const& v0,
+
46  col_type const& v1,
+
47  col_type const& v2);
+
48 
+
49  // -- Conversions --
+
50 
+
51  template<
+
52  typename X1, typename Y1, typename Z1,
+
53  typename X2, typename Y2, typename Z2,
+
54  typename X3, typename Y3, typename Z3>
+
55  GLM_CTOR_DECL mat(
+
56  X1 x1, Y1 y1, Z1 z1,
+
57  X2 x2, Y2 y2, Z2 z2,
+
58  X3 x3, Y3 y3, Z3 z3);
+
59 
+
60  template<typename V1, typename V2, typename V3>
+
61  GLM_CTOR_DECL mat(
+
62  vec<3, V1, Q> const& v1,
+
63  vec<3, V2, Q> const& v2,
+
64  vec<3, V3, Q> const& v3);
+
65 
+
66  // -- Matrix conversions --
+
67 
+
68  template<typename U, qualifier P>
+
69  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, U, P> const& m);
+
70 
+
71  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
72  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
73  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
74  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
75  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
76  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
77  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
78  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
79 
+
80  // -- Unary arithmetic operators --
+
81 
+
82  template<typename U>
+
83  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);
+
84  template<typename U>
+
85  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator+=(U s);
+
86  template<typename U>
+
87  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator+=(mat<3, 3, U, Q> const& m);
+
88  template<typename U>
+
89  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator-=(U s);
+
90  template<typename U>
+
91  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator-=(mat<3, 3, U, Q> const& m);
+
92  template<typename U>
+
93  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator*=(U s);
+
94  template<typename U>
+
95  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator*=(mat<3, 3, U, Q> const& m);
+
96  template<typename U>
+
97  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator/=(U s);
+
98  template<typename U>
+
99  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator/=(mat<3, 3, U, Q> const& m);
+
100 
+
101  // -- Increment and decrement operators --
+
102 
+
103  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator++();
+
104  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 3, T, Q> & operator--();
+
105  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator++(int);
+
106  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator--(int);
+
107  };
+
108 
+
109  // -- Unary operators --
+
110 
+
111  template<typename T, qualifier Q>
+
112  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m);
+
113 
+
114  template<typename T, qualifier Q>
+
115  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m);
+
116 
+
117  // -- Binary operators --
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m, T scalar);
+
121 
+
122  template<typename T, qualifier Q>
+
123  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator+(T scalar, mat<3, 3, T, Q> const& m);
+
124 
+
125  template<typename T, qualifier Q>
+
126  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
127 
+
128  template<typename T, qualifier Q>
+
129  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m, T scalar);
+
130 
+
131  template<typename T, qualifier Q>
+
132  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator-(T scalar, mat<3, 3, T, Q> const& m);
+
133 
+
134  template<typename T, qualifier Q>
+
135  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
136 
+
137  template<typename T, qualifier Q>
+
138  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar);
+
139 
+
140  template<typename T, qualifier Q>
+
141  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m);
+
142 
+
143  template<typename T, qualifier Q>
+
144  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
+
145 
+
146  template<typename T, qualifier Q>
+
147  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
+
148 
+
149  template<typename T, qualifier Q>
+
150  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
151 
+
152  template<typename T, qualifier Q>
+
153  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
154 
+
155  template<typename T, qualifier Q>
+
156  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
157 
+
158  template<typename T, qualifier Q>
+
159  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m, T scalar);
+
160 
+
161  template<typename T, qualifier Q>
+
162  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator/(T scalar, mat<3, 3, T, Q> const& m);
+
163 
+
164  template<typename T, qualifier Q>
+
165  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 3, T, Q>::col_type operator/(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
+
166 
+
167  template<typename T, qualifier Q>
+
168  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 3, T, Q>::row_type operator/(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
+
169 
+
170  template<typename T, qualifier Q>
+
171  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
172 
+
173  // -- Boolean operators --
+
174 
+
175  template<typename T, qualifier Q>
+
176  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
177 
+
178  template<typename T, qualifier Q>
+
179  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
180 }//namespace glm
+
181 
+
182 #ifndef GLM_EXTERNAL_TEMPLATE
+
183 #include "type_mat3x3.inl"
+
184 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00059.html b/include/glm/doc/api/a00059.html new file mode 100644 index 0000000..2772f90 --- /dev/null +++ b/include/glm/doc/api/a00059.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00059_source.html b/include/glm/doc/api/a00059_source.html new file mode 100644 index 0000000..eb3abe0 --- /dev/null +++ b/include/glm/doc/api/a00059_source.html @@ -0,0 +1,248 @@ + + + + + + + +1.0.2 API documentation: type_mat3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec3.hpp"
+
7 #include "type_vec4.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<3, 4, T, Q>
+
15  {
+
16  typedef vec<4, T, Q> col_type;
+
17  typedef vec<3, T, Q> row_type;
+
18  typedef mat<3, 4, T, Q> type;
+
19  typedef mat<4, 3, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[3];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 3; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<3, 4, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL GLM_EXPLICIT mat(T scalar);
+
41  GLM_CTOR_DECL mat(
+
42  T x0, T y0, T z0, T w0,
+
43  T x1, T y1, T z1, T w1,
+
44  T x2, T y2, T z2, T w2);
+
45  GLM_CTOR_DECL mat(
+
46  col_type const& v0,
+
47  col_type const& v1,
+
48  col_type const& v2);
+
49 
+
50  // -- Conversions --
+
51 
+
52  template<
+
53  typename X1, typename Y1, typename Z1, typename W1,
+
54  typename X2, typename Y2, typename Z2, typename W2,
+
55  typename X3, typename Y3, typename Z3, typename W3>
+
56  GLM_CTOR_DECL mat(
+
57  X1 x1, Y1 y1, Z1 z1, W1 w1,
+
58  X2 x2, Y2 y2, Z2 z2, W2 w2,
+
59  X3 x3, Y3 y3, Z3 z3, W3 w3);
+
60 
+
61  template<typename V1, typename V2, typename V3>
+
62  GLM_CTOR_DECL mat(
+
63  vec<4, V1, Q> const& v1,
+
64  vec<4, V2, Q> const& v2,
+
65  vec<4, V3, Q> const& v3);
+
66 
+
67  // -- Matrix conversions --
+
68 
+
69  template<typename U, qualifier P>
+
70  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, U, P> const& m);
+
71 
+
72  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
73  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
74  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, T, Q> const& x);
+
75  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
76  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
77  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
78  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
79  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
80 
+
81  // -- Unary arithmetic operators --
+
82 
+
83  template<typename U>
+
84  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator=(mat<3, 4, U, Q> const& m);
+
85  template<typename U>
+
86  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator+=(U s);
+
87  template<typename U>
+
88  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator+=(mat<3, 4, U, Q> const& m);
+
89  template<typename U>
+
90  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator-=(U s);
+
91  template<typename U>
+
92  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator-=(mat<3, 4, U, Q> const& m);
+
93  template<typename U>
+
94  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator*=(U s);
+
95  template<typename U>
+
96  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator/=(U s);
+
97 
+
98  // -- Increment and decrement operators --
+
99 
+
100  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator++();
+
101  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, 4, T, Q> & operator--();
+
102  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator++(int);
+
103  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator--(int);
+
104  };
+
105 
+
106  // -- Unary operators --
+
107 
+
108  template<typename T, qualifier Q>
+
109  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m);
+
110 
+
111  template<typename T, qualifier Q>
+
112  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m);
+
113 
+
114  // -- Binary operators --
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m, T scalar);
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator+(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
121 
+
122  template<typename T, qualifier Q>
+
123  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m, T scalar);
+
124 
+
125  template<typename T, qualifier Q>
+
126  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator-(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
127 
+
128  template<typename T, qualifier Q>
+
129  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m, T scalar);
+
130 
+
131  template<typename T, qualifier Q>
+
132  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator*(T scalar, mat<3, 4, T, Q> const& m);
+
133 
+
134  template<typename T, qualifier Q>
+
135  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 4, T, Q>::col_type operator*(mat<3, 4, T, Q> const& m, typename mat<3, 4, T, Q>::row_type const& v);
+
136 
+
137  template<typename T, qualifier Q>
+
138  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<3, 4, T, Q>::row_type operator*(typename mat<3, 4, T, Q>::col_type const& v, mat<3, 4, T, Q> const& m);
+
139 
+
140  template<typename T, qualifier Q>
+
141  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
142 
+
143  template<typename T, qualifier Q>
+
144  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
+
145 
+
146  template<typename T, qualifier Q>
+
147  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator*(mat<3, 4, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
+
148 
+
149  template<typename T, qualifier Q>
+
150  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator/(mat<3, 4, T, Q> const& m, T scalar);
+
151 
+
152  template<typename T, qualifier Q>
+
153  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator/(T scalar, mat<3, 4, T, Q> const& m);
+
154 
+
155  // -- Boolean operators --
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
159 
+
160  template<typename T, qualifier Q>
+
161  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<3, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
162 }//namespace glm
+
163 
+
164 #ifndef GLM_EXTERNAL_TEMPLATE
+
165 #include "type_mat3x4.inl"
+
166 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00062.html b/include/glm/doc/api/a00062.html new file mode 100644 index 0000000..52b8c4a --- /dev/null +++ b/include/glm/doc/api/a00062.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00062_source.html b/include/glm/doc/api/a00062_source.html new file mode 100644 index 0000000..177fbe2 --- /dev/null +++ b/include/glm/doc/api/a00062_source.html @@ -0,0 +1,253 @@ + + + + + + + +1.0.2 API documentation: type_mat4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec2.hpp"
+
7 #include "type_vec4.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<4, 2, T, Q>
+
15  {
+
16  typedef vec<2, T, Q> col_type;
+
17  typedef vec<4, T, Q> row_type;
+
18  typedef mat<4, 2, T, Q> type;
+
19  typedef mat<2, 4, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[4];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 4; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<4, 2, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL mat(T scalar);
+
41  GLM_CTOR_DECL mat(
+
42  T x0, T y0,
+
43  T x1, T y1,
+
44  T x2, T y2,
+
45  T x3, T y3);
+
46  GLM_CTOR_DECL mat(
+
47  col_type const& v0,
+
48  col_type const& v1,
+
49  col_type const& v2,
+
50  col_type const& v3);
+
51 
+
52  // -- Conversions --
+
53 
+
54  template<
+
55  typename X0, typename Y0,
+
56  typename X1, typename Y1,
+
57  typename X2, typename Y2,
+
58  typename X3, typename Y3>
+
59  GLM_CTOR_DECL mat(
+
60  X0 x0, Y0 y0,
+
61  X1 x1, Y1 y1,
+
62  X2 x2, Y2 y2,
+
63  X3 x3, Y3 y3);
+
64 
+
65  template<typename V1, typename V2, typename V3, typename V4>
+
66  GLM_CTOR_DECL mat(
+
67  vec<2, V1, Q> const& v1,
+
68  vec<2, V2, Q> const& v2,
+
69  vec<2, V3, Q> const& v3,
+
70  vec<2, V4, Q> const& v4);
+
71 
+
72  // -- Matrix conversions --
+
73 
+
74  template<typename U, qualifier P>
+
75  GLM_CTOR_DECL mat(mat<4, 2, U, P> const& m);
+
76 
+
77  GLM_CTOR_DECL mat(mat<2, 2, T, Q> const& x);
+
78  GLM_CTOR_DECL mat(mat<3, 3, T, Q> const& x);
+
79  GLM_CTOR_DECL mat(mat<4, 4, T, Q> const& x);
+
80  GLM_CTOR_DECL mat(mat<2, 3, T, Q> const& x);
+
81  GLM_CTOR_DECL mat(mat<3, 2, T, Q> const& x);
+
82  GLM_CTOR_DECL mat(mat<2, 4, T, Q> const& x);
+
83  GLM_CTOR_DECL mat(mat<4, 3, T, Q> const& x);
+
84  GLM_CTOR_DECL mat(mat<3, 4, T, Q> const& x);
+
85 
+
86  // -- Unary arithmetic operators --
+
87 
+
88  template<typename U>
+
89  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator=(mat<4, 2, U, Q> const& m);
+
90  template<typename U>
+
91  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator+=(U s);
+
92  template<typename U>
+
93  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator+=(mat<4, 2, U, Q> const& m);
+
94  template<typename U>
+
95  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator-=(U s);
+
96  template<typename U>
+
97  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator-=(mat<4, 2, U, Q> const& m);
+
98  template<typename U>
+
99  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator*=(U s);
+
100  template<typename U>
+
101  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator/=(U s);
+
102 
+
103  // -- Increment and decrement operators --
+
104 
+
105  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator++ ();
+
106  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 2, T, Q> & operator-- ();
+
107  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator++(int);
+
108  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator--(int);
+
109  };
+
110 
+
111  // -- Unary operators --
+
112 
+
113  template<typename T, qualifier Q>
+
114  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m);
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m);
+
118 
+
119  // -- Binary operators --
+
120 
+
121  template<typename T, qualifier Q>
+
122  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m, T scalar);
+
123 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator+(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m, T scalar);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator-(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
132 
+
133  template<typename T, qualifier Q>
+
134  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m, T scalar);
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator*(T scalar, mat<4, 2, T, Q> const& m);
+
138 
+
139  template<typename T, qualifier Q>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 2, T, Q>::col_type operator*(mat<4, 2, T, Q> const& m, typename mat<4, 2, T, Q>::row_type const& v);
+
141 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 2, T, Q>::row_type operator*(typename mat<4, 2, T, Q>::col_type const& v, mat<4, 2, T, Q> const& m);
+
144 
+
145  template<typename T, qualifier Q>
+
146  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
147 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
150 
+
151  template<typename T, qualifier Q>
+
152  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator*(mat<4, 2, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
153 
+
154  template<typename T, qualifier Q>
+
155  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator/(mat<4, 2, T, Q> const& m, T scalar);
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 2, T, Q> operator/(T scalar, mat<4, 2, T, Q> const& m);
+
159 
+
160  // -- Boolean operators --
+
161 
+
162  template<typename T, qualifier Q>
+
163  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
164 
+
165  template<typename T, qualifier Q>
+
166  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<4, 2, T, Q> const& m1, mat<4, 2, T, Q> const& m2);
+
167 }//namespace glm
+
168 
+
169 #ifndef GLM_EXTERNAL_TEMPLATE
+
170 #include "type_mat4x2.inl"
+
171 #endif
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00065.html b/include/glm/doc/api/a00065.html new file mode 100644 index 0000000..ba89680 --- /dev/null +++ b/include/glm/doc/api/a00065.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00065_source.html b/include/glm/doc/api/a00065_source.html new file mode 100644 index 0000000..7b4f98e --- /dev/null +++ b/include/glm/doc/api/a00065_source.html @@ -0,0 +1,253 @@ + + + + + + + +1.0.2 API documentation: type_mat4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec3.hpp"
+
7 #include "type_vec4.hpp"
+
8 #include <limits>
+
9 #include <cstddef>
+
10 
+
11 namespace glm
+
12 {
+
13  template<typename T, qualifier Q>
+
14  struct mat<4, 3, T, Q>
+
15  {
+
16  typedef vec<3, T, Q> col_type;
+
17  typedef vec<4, T, Q> row_type;
+
18  typedef mat<4, 3, T, Q> type;
+
19  typedef mat<3, 4, T, Q> transpose_type;
+
20  typedef T value_type;
+
21 
+
22  private:
+
23  col_type value[4];
+
24 
+
25  public:
+
26  // -- Accesses --
+
27 
+
28  typedef length_t length_type;
+
29  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length() { return 4; }
+
30 
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
32  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
33 
+
34  // -- Constructors --
+
35 
+
36  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
37  template<qualifier P>
+
38  GLM_CTOR_DECL mat(mat<4, 3, T, P> const& m);
+
39 
+
40  GLM_CTOR_DECL GLM_EXPLICIT mat(T s);
+
41  GLM_CTOR_DECL mat(
+
42  T const& x0, T const& y0, T const& z0,
+
43  T const& x1, T const& y1, T const& z1,
+
44  T const& x2, T const& y2, T const& z2,
+
45  T const& x3, T const& y3, T const& z3);
+
46  GLM_CTOR_DECL mat(
+
47  col_type const& v0,
+
48  col_type const& v1,
+
49  col_type const& v2,
+
50  col_type const& v3);
+
51 
+
52  // -- Conversions --
+
53 
+
54  template<
+
55  typename X1, typename Y1, typename Z1,
+
56  typename X2, typename Y2, typename Z2,
+
57  typename X3, typename Y3, typename Z3,
+
58  typename X4, typename Y4, typename Z4>
+
59  GLM_CTOR_DECL mat(
+
60  X1 const& x1, Y1 const& y1, Z1 const& z1,
+
61  X2 const& x2, Y2 const& y2, Z2 const& z2,
+
62  X3 const& x3, Y3 const& y3, Z3 const& z3,
+
63  X4 const& x4, Y4 const& y4, Z4 const& z4);
+
64 
+
65  template<typename V1, typename V2, typename V3, typename V4>
+
66  GLM_CTOR_DECL mat(
+
67  vec<3, V1, Q> const& v1,
+
68  vec<3, V2, Q> const& v2,
+
69  vec<3, V3, Q> const& v3,
+
70  vec<3, V4, Q> const& v4);
+
71 
+
72  // -- Matrix conversions --
+
73 
+
74  template<typename U, qualifier P>
+
75  GLM_CTOR_DECL mat(mat<4, 3, U, P> const& m);
+
76 
+
77  GLM_CTOR_DECL mat(mat<2, 2, T, Q> const& x);
+
78  GLM_CTOR_DECL mat(mat<3, 3, T, Q> const& x);
+
79  GLM_CTOR_DECL mat(mat<4, 4, T, Q> const& x);
+
80  GLM_CTOR_DECL mat(mat<2, 3, T, Q> const& x);
+
81  GLM_CTOR_DECL mat(mat<3, 2, T, Q> const& x);
+
82  GLM_CTOR_DECL mat(mat<2, 4, T, Q> const& x);
+
83  GLM_CTOR_DECL mat(mat<4, 2, T, Q> const& x);
+
84  GLM_CTOR_DECL mat(mat<3, 4, T, Q> const& x);
+
85 
+
86  // -- Unary arithmetic operators --
+
87 
+
88  template<typename U>
+
89  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator=(mat<4, 3, U, Q> const& m);
+
90  template<typename U>
+
91  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator+=(U s);
+
92  template<typename U>
+
93  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator+=(mat<4, 3, U, Q> const& m);
+
94  template<typename U>
+
95  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator-=(U s);
+
96  template<typename U>
+
97  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator-=(mat<4, 3, U, Q> const& m);
+
98  template<typename U>
+
99  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator*=(U s);
+
100  template<typename U>
+
101  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q> & operator/=(U s);
+
102 
+
103  // -- Increment and decrement operators --
+
104 
+
105  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q>& operator++();
+
106  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 3, T, Q>& operator--();
+
107  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator++(int);
+
108  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator--(int);
+
109  };
+
110 
+
111  // -- Unary operators --
+
112 
+
113  template<typename T, qualifier Q>
+
114  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m);
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m);
+
118 
+
119  // -- Binary operators --
+
120 
+
121  template<typename T, qualifier Q>
+
122  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m, T scalar);
+
123 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator+(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m, T scalar);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator-(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
132 
+
133  template<typename T, qualifier Q>
+
134  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m, T scalar);
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator*(T scalar, mat<4, 3, T, Q> const& m);
+
138 
+
139  template<typename T, qualifier Q>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 3, T, Q>::col_type operator*(mat<4, 3, T, Q> const& m, typename mat<4, 3, T, Q>::row_type const& v);
+
141 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 3, T, Q>::row_type operator*(typename mat<4, 3, T, Q>::col_type const& v, mat<4, 3, T, Q> const& m);
+
144 
+
145  template<typename T, qualifier Q>
+
146  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
147 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
150 
+
151  template<typename T, qualifier Q>
+
152  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator*(mat<4, 3, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
153 
+
154  template<typename T, qualifier Q>
+
155  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator/(mat<4, 3, T, Q> const& m, T scalar);
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 3, T, Q> operator/(T scalar, mat<4, 3, T, Q> const& m);
+
159 
+
160  // -- Boolean operators --
+
161 
+
162  template<typename T, qualifier Q>
+
163  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
164 
+
165  template<typename T, qualifier Q>
+
166  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<4, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
+
167 }//namespace glm
+
168 
+
169 #ifndef GLM_EXTERNAL_TEMPLATE
+
170 #include "type_mat4x3.inl"
+
171 #endif //GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00068.html b/include/glm/doc/api/a00068.html new file mode 100644 index 0000000..09a2489 --- /dev/null +++ b/include/glm/doc/api/a00068.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_mat4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_mat4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00068_source.html b/include/glm/doc/api/a00068_source.html new file mode 100644 index 0000000..caff76c --- /dev/null +++ b/include/glm/doc/api/a00068_source.html @@ -0,0 +1,270 @@ + + + + + + + +1.0.2 API documentation: type_mat4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_mat4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "type_vec4.hpp"
+
7 #include <limits>
+
8 #include <cstddef>
+
9 
+
10 namespace glm
+
11 {
+
12  template<typename T, qualifier Q>
+
13  struct mat<4, 4, T, Q>
+
14  {
+
15  typedef vec<4, T, Q> col_type;
+
16  typedef vec<4, T, Q> row_type;
+
17  typedef mat<4, 4, T, Q> type;
+
18  typedef mat<4, 4, T, Q> transpose_type;
+
19  typedef T value_type;
+
20 
+
21  private:
+
22  col_type value[4];
+
23 
+
24  public:
+
25  // -- Accesses --
+
26 
+
27  typedef length_t length_type;
+
28  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}
+
29 
+
30  GLM_FUNC_DECL GLM_CONSTEXPR col_type & operator[](length_type i) GLM_NOEXCEPT;
+
31  GLM_FUNC_DECL GLM_CONSTEXPR col_type const& operator[](length_type i) const GLM_NOEXCEPT;
+
32 
+
33  // -- Constructors --
+
34 
+
35  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR mat() GLM_DEFAULT_CTOR;
+
36  template<qualifier P>
+
37  GLM_CTOR_DECL mat(mat<4, 4, T, P> const& m);
+
38 
+
39  GLM_CTOR_DECL GLM_EXPLICIT mat(T s);
+
40  GLM_CTOR_DECL mat(
+
41  T const& x0, T const& y0, T const& z0, T const& w0,
+
42  T const& x1, T const& y1, T const& z1, T const& w1,
+
43  T const& x2, T const& y2, T const& z2, T const& w2,
+
44  T const& x3, T const& y3, T const& z3, T const& w3);
+
45  GLM_CTOR_DECL mat(
+
46  col_type const& v0,
+
47  col_type const& v1,
+
48  col_type const& v2,
+
49  col_type const& v3);
+
50 
+
51  // -- Conversions --
+
52 
+
53  template<
+
54  typename X1, typename Y1, typename Z1, typename W1,
+
55  typename X2, typename Y2, typename Z2, typename W2,
+
56  typename X3, typename Y3, typename Z3, typename W3,
+
57  typename X4, typename Y4, typename Z4, typename W4>
+
58  GLM_CTOR_DECL mat(
+
59  X1 const& x1, Y1 const& y1, Z1 const& z1, W1 const& w1,
+
60  X2 const& x2, Y2 const& y2, Z2 const& z2, W2 const& w2,
+
61  X3 const& x3, Y3 const& y3, Z3 const& z3, W3 const& w3,
+
62  X4 const& x4, Y4 const& y4, Z4 const& z4, W4 const& w4);
+
63 
+
64  template<typename V1, typename V2, typename V3, typename V4>
+
65  GLM_CTOR_DECL mat(
+
66  vec<4, V1, Q> const& v1,
+
67  vec<4, V2, Q> const& v2,
+
68  vec<4, V3, Q> const& v3,
+
69  vec<4, V4, Q> const& v4);
+
70 
+
71  // -- Matrix conversions --
+
72 
+
73  template<typename U, qualifier P>
+
74  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 4, U, P> const& m);
+
75 
+
76  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 2, T, Q> const& x);
+
77  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 3, T, Q> const& x);
+
78  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 3, T, Q> const& x);
+
79  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 2, T, Q> const& x);
+
80  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<2, 4, T, Q> const& x);
+
81  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 2, T, Q> const& x);
+
82  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<3, 4, T, Q> const& x);
+
83  GLM_CTOR_DECL GLM_EXPLICIT mat(mat<4, 3, T, Q> const& x);
+
84 
+
85  // -- Unary arithmetic operators --
+
86 
+
87  template<typename U>
+
88  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);
+
89  template<typename U>
+
90  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator+=(U s);
+
91  template<typename U>
+
92  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator+=(mat<4, 4, U, Q> const& m);
+
93  template<typename U>
+
94  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator-=(U s);
+
95  template<typename U>
+
96  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator-=(mat<4, 4, U, Q> const& m);
+
97  template<typename U>
+
98  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator*=(U s);
+
99  template<typename U>
+
100  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator*=(mat<4, 4, U, Q> const& m);
+
101  template<typename U>
+
102  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator/=(U s);
+
103  template<typename U>
+
104  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator/=(mat<4, 4, U, Q> const& m);
+
105 
+
106  // -- Increment and decrement operators --
+
107 
+
108  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator++();
+
109  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<4, 4, T, Q> & operator--();
+
110  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator++(int);
+
111  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator--(int);
+
112  };
+
113 
+
114  // -- Unary operators --
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m);
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m);
+
121 
+
122  // -- Binary operators --
+
123 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m, T scalar);
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator+(T scalar, mat<4, 4, T, Q> const& m);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
132 
+
133  template<typename T, qualifier Q>
+
134  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m, T scalar);
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator-(T scalar, mat<4, 4, T, Q> const& m);
+
138 
+
139  template<typename T, qualifier Q>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
141 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T scalar);
+
144 
+
145  template<typename T, qualifier Q>
+
146  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator*(T scalar, mat<4, 4, T, Q> const& m);
+
147 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 4, T, Q>::col_type operator*(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
+
150 
+
151  template<typename T, qualifier Q>
+
152  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 4, T, Q>::row_type operator*(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
+
153 
+
154  template<typename T, qualifier Q>
+
155  GLM_FUNC_DECL GLM_CONSTEXPR mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
+
156 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL GLM_CONSTEXPR mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
+
159 
+
160  template<typename T, qualifier Q>
+
161  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
162 
+
163  template<typename T, qualifier Q>
+
164  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m, T scalar);
+
165 
+
166  template<typename T, qualifier Q>
+
167  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator/(T scalar, mat<4, 4, T, Q> const& m);
+
168 
+
169  template<typename T, qualifier Q>
+
170  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 4, T, Q>::col_type operator/(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
+
171 
+
172  template<typename T, qualifier Q>
+
173  GLM_FUNC_DECL GLM_CONSTEXPR typename mat<4, 4, T, Q>::row_type operator/(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
+
174 
+
175  template<typename T, qualifier Q>
+
176  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
177 
+
178  // -- Boolean operators --
+
179 
+
180  template<typename T, qualifier Q>
+
181  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
182 
+
183  template<typename T, qualifier Q>
+
184  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
+
185 }//namespace glm
+
186 
+
187 #ifndef GLM_EXTERNAL_TEMPLATE
+
188 #include "type_mat4x4.inl"
+
189 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00071.html b/include/glm/doc/api/a00071.html new file mode 100644 index 0000000..40256d1 --- /dev/null +++ b/include/glm/doc/api/a00071.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_quat.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_quat.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_quat.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00071_source.html b/include/glm/doc/api/a00071_source.html new file mode 100644 index 0000000..b144b88 --- /dev/null +++ b/include/glm/doc/api/a00071_source.html @@ -0,0 +1,265 @@ + + + + + + + +1.0.2 API documentation: type_quat.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_quat.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 // Dependency:
+
7 #include "../detail/type_mat3x3.hpp"
+
8 #include "../detail/type_mat4x4.hpp"
+
9 #include "../detail/type_vec3.hpp"
+
10 #include "../detail/type_vec4.hpp"
+
11 #include "../ext/vector_relational.hpp"
+
12 #include "../ext/quaternion_relational.hpp"
+
13 #include "../gtc/constants.hpp"
+
14 #include "../gtc/matrix_transform.hpp"
+
15 
+
16 namespace glm
+
17 {
+
18 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
19 # if GLM_COMPILER & GLM_COMPILER_GCC
+
20 # pragma GCC diagnostic push
+
21 # pragma GCC diagnostic ignored "-Wpedantic"
+
22 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
23 # pragma clang diagnostic push
+
24 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+
25 # pragma clang diagnostic ignored "-Wnested-anon-types"
+
26 # elif GLM_COMPILER & GLM_COMPILER_VC
+
27 # pragma warning(push)
+
28 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
+
29 # endif
+
30 # endif
+
31 
+
32  template<typename T, qualifier Q>
+
33  struct qua
+
34  {
+
35  // -- Implementation detail --
+
36 
+
37  typedef qua<T, Q> type;
+
38  typedef T value_type;
+
39 
+
40  // -- Data --
+
41 
+
42 # if GLM_LANG & GLM_LANG_CXXMS_FLAG
+
43  union
+
44  {
+
45 # ifdef GLM_FORCE_QUAT_DATA_WXYZ
+
46  struct { T w, x, y, z; };
+
47 # else
+
48  struct { T x, y, z, w; };
+
49 # endif
+
50 
+
51  typename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;
+
52  };
+
53 # else
+
54 # ifdef GLM_FORCE_QUAT_DATA_WXYZ
+
55  T w, x, y, z;
+
56 # else
+
57  T x, y, z, w;
+
58 # endif
+
59 # endif
+
60 
+
61  // -- Component accesses --
+
62 
+
63  typedef length_t length_type;
+
64 
+
66  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}
+
67 
+
68  GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
+
69  GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
+
70 
+
71  // -- Implicit basic constructors --
+
72 
+
73  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR qua() GLM_DEFAULT_CTOR;
+
74  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR qua(qua<T, Q> const& q) GLM_DEFAULT;
+
75  template<qualifier P>
+
76  GLM_CTOR_DECL qua(qua<T, P> const& q);
+
77 
+
78  // -- Explicit basic constructors --
+
79 
+
80  GLM_CTOR_DECL qua(T s, vec<3, T, Q> const& v);
+
81 
+
82 # ifdef GLM_FORCE_QUAT_DATA_XYZW
+
83  GLM_CTOR_DECL qua(T x, T y, T z, T w);
+
84 # else
+
85  GLM_CTOR_DECL qua(T w, T x, T y, T z);
+
86 # endif
+
87 
+
88  GLM_FUNC_DECL static GLM_CONSTEXPR qua<T, Q> wxyz(T w, T x, T y, T z);
+
89 
+
90  // -- Conversion constructors --
+
91 
+
92  template<typename U, qualifier P>
+
93  GLM_CTOR_DECL GLM_EXPLICIT qua(qua<U, P> const& q);
+
94 
+
96 # if GLM_HAS_EXPLICIT_CONVERSION_OPERATORS
+
97  GLM_FUNC_DECL explicit operator mat<3, 3, T, Q>() const;
+
98  GLM_FUNC_DECL explicit operator mat<4, 4, T, Q>() const;
+
99 # endif
+
100 
+
107  GLM_FUNC_DISCARD_DECL qua(vec<3, T, Q> const& u, vec<3, T, Q> const& v);
+
108 
+
110  GLM_CTOR_DECL GLM_EXPLICIT qua(vec<3, T, Q> const& eulerAngles);
+
111  GLM_CTOR_DECL GLM_EXPLICIT qua(mat<3, 3, T, Q> const& q);
+
112  GLM_CTOR_DECL GLM_EXPLICIT qua(mat<4, 4, T, Q> const& q);
+
113 
+
114  // -- Unary arithmetic operators --
+
115 
+
116  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR qua<T, Q>& operator=(qua<T, Q> const& q) GLM_DEFAULT;
+
117 
+
118  template<typename U>
+
119  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator=(qua<U, Q> const& q);
+
120  template<typename U>
+
121  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator+=(qua<U, Q> const& q);
+
122  template<typename U>
+
123  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator-=(qua<U, Q> const& q);
+
124  template<typename U>
+
125  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator*=(qua<U, Q> const& q);
+
126  template<typename U>
+
127  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator*=(U s);
+
128  template<typename U>
+
129  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR qua<T, Q>& operator/=(U s);
+
130  };
+
131 
+
132 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
133 # if GLM_COMPILER & GLM_COMPILER_CLANG
+
134 # pragma clang diagnostic pop
+
135 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
136 # pragma GCC diagnostic pop
+
137 # elif GLM_COMPILER & GLM_COMPILER_VC
+
138 # pragma warning(pop)
+
139 # endif
+
140 # endif
+
141 
+
142  // -- Unary bit operators --
+
143 
+
144  template<typename T, qualifier Q>
+
145  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q);
+
146 
+
147  template<typename T, qualifier Q>
+
148  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q);
+
149 
+
150  // -- Binary operators --
+
151 
+
152  template<typename T, qualifier Q>
+
153  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator+(qua<T, Q> const& q, qua<T, Q> const& p);
+
154 
+
155  template<typename T, qualifier Q>
+
156  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator-(qua<T, Q> const& q, qua<T, Q> const& p);
+
157 
+
158  template<typename T, qualifier Q>
+
159  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, qua<T, Q> const& p);
+
160 
+
161  template<typename T, qualifier Q>
+
162  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(qua<T, Q> const& q, vec<3, T, Q> const& v);
+
163 
+
164  template<typename T, qualifier Q>
+
165  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, qua<T, Q> const& q);
+
166 
+
167  template<typename T, qualifier Q>
+
168  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(qua<T, Q> const& q, vec<4, T, Q> const& v);
+
169 
+
170  template<typename T, qualifier Q>
+
171  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, qua<T, Q> const& q);
+
172 
+
173  template<typename T, qualifier Q>
+
174  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(qua<T, Q> const& q, T const& s);
+
175 
+
176  template<typename T, qualifier Q>
+
177  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator*(T const& s, qua<T, Q> const& q);
+
178 
+
179  template<typename T, qualifier Q>
+
180  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> operator/(qua<T, Q> const& q, T const& s);
+
181 
+
182  // -- Boolean operators --
+
183 
+
184  template<typename T, qualifier Q>
+
185  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(qua<T, Q> const& q1, qua<T, Q> const& q2);
+
186 
+
187  template<typename T, qualifier Q>
+
188  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(qua<T, Q> const& q1, qua<T, Q> const& q2);
+
189 } //namespace glm
+
190 
+
191 #ifndef GLM_EXTERNAL_TEMPLATE
+
192 #include "type_quat.inl"
+
193 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles(qua< T, Q > const &x)
Returns euler angles, pitch as x, yaw as y, roll as z.
+ + + + diff --git a/include/glm/doc/api/a00074.html b/include/glm/doc/api/a00074.html new file mode 100644 index 0000000..19944f2 --- /dev/null +++ b/include/glm/doc/api/a00074.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_vec1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec1.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_vec1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00074_source.html b/include/glm/doc/api/a00074_source.html new file mode 100644 index 0000000..1072fd9 --- /dev/null +++ b/include/glm/doc/api/a00074_source.html @@ -0,0 +1,383 @@ + + + + + + + +1.0.2 API documentation: type_vec1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec1.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "qualifier.hpp"
+
7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
8 # include "_swizzle.hpp"
+
9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
10 # include "_swizzle_func.hpp"
+
11 #endif
+
12 #include <cstddef>
+
13 
+
14 namespace glm
+
15 {
+
16  template<typename T, qualifier Q>
+
17  struct vec<1, T, Q>
+
18  {
+
19  // -- Implementation detail --
+
20 
+
21  typedef T value_type;
+
22  typedef vec<1, T, Q> type;
+
23  typedef vec<1, bool, Q> bool_type;
+
24 
+
25  // -- Data --
+
26 
+
27 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
28 # if GLM_COMPILER & GLM_COMPILER_GCC
+
29 # pragma GCC diagnostic push
+
30 # pragma GCC diagnostic ignored "-Wpedantic"
+
31 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
32 # pragma clang diagnostic push
+
33 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+
34 # pragma clang diagnostic ignored "-Wnested-anon-types"
+
35 # elif GLM_COMPILER & GLM_COMPILER_VC
+
36 # pragma warning(push)
+
37 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
+
38 # endif
+
39 # endif
+
40 
+
41 # if GLM_CONFIG_XYZW_ONLY
+
42  T x;
+
43 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
+
44  union
+
45  {
+
46  T x;
+
47  T r;
+
48  T s;
+
49 
+
50  typename detail::storage<1, T, detail::is_aligned<Q>::value>::type data;
+
51 /*
+
52 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
53  _GLM_SWIZZLE1_2_MEMBERS(T, Q, x)
+
54  _GLM_SWIZZLE1_2_MEMBERS(T, Q, r)
+
55  _GLM_SWIZZLE1_2_MEMBERS(T, Q, s)
+
56  _GLM_SWIZZLE1_3_MEMBERS(T, Q, x)
+
57  _GLM_SWIZZLE1_3_MEMBERS(T, Q, r)
+
58  _GLM_SWIZZLE1_3_MEMBERS(T, Q, s)
+
59  _GLM_SWIZZLE1_4_MEMBERS(T, Q, x)
+
60  _GLM_SWIZZLE1_4_MEMBERS(T, Q, r)
+
61  _GLM_SWIZZLE1_4_MEMBERS(T, Q, s)
+
62 # endif
+
63 */
+
64  };
+
65 # else
+
66  union {T x, r, s;};
+
67 /*
+
68 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
69  GLM_SWIZZLE_GEN_VEC_FROM_VEC1(T, Q)
+
70 # endif
+
71 */
+
72 # endif
+
73 
+
74 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
75 # if GLM_COMPILER & GLM_COMPILER_CLANG
+
76 # pragma clang diagnostic pop
+
77 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
78 # pragma GCC diagnostic pop
+
79 # elif GLM_COMPILER & GLM_COMPILER_VC
+
80 # pragma warning(pop)
+
81 # endif
+
82 # endif
+
83 
+
84  // -- Component accesses --
+
85 
+
87  typedef length_t length_type;
+
88  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 1;}
+
89 
+
90  GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
+
91  GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
+
92 
+
93  // -- Implicit basic constructors --
+
94 
+
95  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR vec() GLM_DEFAULT_CTOR;
+
96  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;
+
97  template<qualifier P>
+
98  GLM_CTOR_DECL vec(vec<1, T, P> const& v);
+
99 
+
100  // -- Explicit basic constructors --
+
101 
+
102  GLM_CTOR_DECL explicit vec(T scalar);
+
103 
+
104  // -- Conversion vector constructors --
+
105 
+
107  template<typename U, qualifier P>
+
108  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<2, U, P> const& v);
+
110  template<typename U, qualifier P>
+
111  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<3, U, P> const& v);
+
113  template<typename U, qualifier P>
+
114  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<4, U, P> const& v);
+
115 
+
117  template<typename U, qualifier P>
+
118  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<1, U, P> const& v);
+
119 
+
120  // -- Swizzle constructors --
+
121 /*
+
122 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
123  template<int E0>
+
124  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec(detail::_swizzle<1, T, Q, E0, -1,-2,-3> const& that)
+
125  {
+
126  *this = that();
+
127  }
+
128 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
129 */
+
130  // -- Unary arithmetic operators --
+
131 
+
132  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec const& v) GLM_DEFAULT;
+
133 
+
134  template<typename U>
+
135  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator=(vec<1, U, Q> const& v);
+
136  template<typename U>
+
137  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(U scalar);
+
138  template<typename U>
+
139  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator+=(vec<1, U, Q> const& v);
+
140  template<typename U>
+
141  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(U scalar);
+
142  template<typename U>
+
143  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator-=(vec<1, U, Q> const& v);
+
144  template<typename U>
+
145  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(U scalar);
+
146  template<typename U>
+
147  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator*=(vec<1, U, Q> const& v);
+
148  template<typename U>
+
149  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(U scalar);
+
150  template<typename U>
+
151  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator/=(vec<1, U, Q> const& v);
+
152 
+
153  // -- Increment and decrement operators --
+
154 
+
155  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator++();
+
156  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator--();
+
157  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator++(int);
+
158  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator--(int);
+
159 
+
160  // -- Unary bit operators --
+
161 
+
162  template<typename U>
+
163  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(U scalar);
+
164  template<typename U>
+
165  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator%=(vec<1, U, Q> const& v);
+
166  template<typename U>
+
167  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(U scalar);
+
168  template<typename U>
+
169  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator&=(vec<1, U, Q> const& v);
+
170  template<typename U>
+
171  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(U scalar);
+
172  template<typename U>
+
173  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator|=(vec<1, U, Q> const& v);
+
174  template<typename U>
+
175  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(U scalar);
+
176  template<typename U>
+
177  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator^=(vec<1, U, Q> const& v);
+
178  template<typename U>
+
179  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(U scalar);
+
180  template<typename U>
+
181  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator<<=(vec<1, U, Q> const& v);
+
182  template<typename U>
+
183  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(U scalar);
+
184  template<typename U>
+
185  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<1, T, Q> & operator>>=(vec<1, U, Q> const& v);
+
186  };
+
187 
+
188  // -- Unary operators --
+
189 
+
190  template<typename T, qualifier Q>
+
191  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v);
+
192 
+
193  template<typename T, qualifier Q>
+
194  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v);
+
195 
+
196  // -- Binary operators --
+
197 
+
198  template<typename T, qualifier Q>
+
199  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v, T scalar);
+
200 
+
201  template<typename T, qualifier Q>
+
202  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(T scalar, vec<1, T, Q> const& v);
+
203 
+
204  template<typename T, qualifier Q>
+
205  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator+(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
206 
+
207  template<typename T, qualifier Q>
+
208  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v, T scalar);
+
209 
+
210  template<typename T, qualifier Q>
+
211  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(T scalar, vec<1, T, Q> const& v);
+
212 
+
213  template<typename T, qualifier Q>
+
214  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator-(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
215 
+
216  template<typename T, qualifier Q>
+
217  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v, T scalar);
+
218 
+
219  template<typename T, qualifier Q>
+
220  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(T scalar, vec<1, T, Q> const& v);
+
221 
+
222  template<typename T, qualifier Q>
+
223  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator*(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
224 
+
225  template<typename T, qualifier Q>
+
226  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v, T scalar);
+
227 
+
228  template<typename T, qualifier Q>
+
229  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(T scalar, vec<1, T, Q> const& v);
+
230 
+
231  template<typename T, qualifier Q>
+
232  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator/(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
233 
+
234  template<typename T, qualifier Q>
+
235  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v, T scalar);
+
236 
+
237  template<typename T, qualifier Q>
+
238  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(T scalar, vec<1, T, Q> const& v);
+
239 
+
240  template<typename T, qualifier Q>
+
241  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator%(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
242 
+
243  template<typename T, qualifier Q>
+
244  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v, T scalar);
+
245 
+
246  template<typename T, qualifier Q>
+
247  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(T scalar, vec<1, T, Q> const& v);
+
248 
+
249  template<typename T, qualifier Q>
+
250  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator&(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
251 
+
252  template<typename T, qualifier Q>
+
253  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v, T scalar);
+
254 
+
255  template<typename T, qualifier Q>
+
256  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(T scalar, vec<1, T, Q> const& v);
+
257 
+
258  template<typename T, qualifier Q>
+
259  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator|(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
260 
+
261  template<typename T, qualifier Q>
+
262  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v, T scalar);
+
263 
+
264  template<typename T, qualifier Q>
+
265  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(T scalar, vec<1, T, Q> const& v);
+
266 
+
267  template<typename T, qualifier Q>
+
268  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator^(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
269 
+
270  template<typename T, qualifier Q>
+
271  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v, T scalar);
+
272 
+
273  template<typename T, qualifier Q>
+
274  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(T scalar, vec<1, T, Q> const& v);
+
275 
+
276  template<typename T, qualifier Q>
+
277  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator<<(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
278 
+
279  template<typename T, qualifier Q>
+
280  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v, T scalar);
+
281 
+
282  template<typename T, qualifier Q>
+
283  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(T scalar, vec<1, T, Q> const& v);
+
284 
+
285  template<typename T, qualifier Q>
+
286  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator>>(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
287 
+
288  template<typename T, qualifier Q>
+
289  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, T, Q> operator~(vec<1, T, Q> const& v);
+
290 
+
291  // -- Boolean operators --
+
292 
+
293  template<typename T, qualifier Q>
+
294  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
295 
+
296  template<typename T, qualifier Q>
+
297  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<1, T, Q> const& v1, vec<1, T, Q> const& v2);
+
298 
+
299  template<qualifier Q>
+
300  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator&&(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);
+
301 
+
302  template<qualifier Q>
+
303  GLM_FUNC_DECL GLM_CONSTEXPR vec<1, bool, Q> operator||(vec<1, bool, Q> const& v1, vec<1, bool, Q> const& v2);
+
304 }//namespace glm
+
305 
+
306 #ifndef GLM_EXTERNAL_TEMPLATE
+
307 #include "type_vec1.inl"
+
308 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+ + + + diff --git a/include/glm/doc/api/a00077.html b/include/glm/doc/api/a00077.html new file mode 100644 index 0000000..51a2ea5 --- /dev/null +++ b/include/glm/doc/api/a00077.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_vec2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_vec2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00077_source.html b/include/glm/doc/api/a00077_source.html new file mode 100644 index 0000000..c4b0421 --- /dev/null +++ b/include/glm/doc/api/a00077_source.html @@ -0,0 +1,481 @@ + + + + + + + +1.0.2 API documentation: type_vec2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "qualifier.hpp"
+
7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
8 # include "_swizzle.hpp"
+
9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
10 # include "_swizzle_func.hpp"
+
11 #endif
+
12 #include <cstddef>
+
13 
+
14 namespace glm
+
15 {
+
16  template<typename T, qualifier Q>
+
17  struct vec<2, T, Q>
+
18  {
+
19  // -- Implementation detail --
+
20 
+
21  typedef T value_type;
+
22  typedef vec<2, T, Q> type;
+
23  typedef vec<2, bool, Q> bool_type;
+
24  enum is_aligned
+
25  {
+
26  value = false
+
27  };
+
28 
+
29  // -- Data --
+
30 
+
31 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
32 # if GLM_COMPILER & GLM_COMPILER_GCC
+
33 # pragma GCC diagnostic push
+
34 # pragma GCC diagnostic ignored "-Wpedantic"
+
35 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
36 # pragma clang diagnostic push
+
37 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+
38 # pragma clang diagnostic ignored "-Wnested-anon-types"
+
39 # elif GLM_COMPILER & GLM_COMPILER_VC
+
40 # pragma warning(push)
+
41 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
+
42 # endif
+
43 # endif
+
44 
+
45 # if GLM_CONFIG_XYZW_ONLY
+
46  T x, y;
+
47 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
48  GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(T, Q, x, y)
+
49 # endif//GLM_CONFIG_SWIZZLE
+
50 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
+
51  union
+
52  {
+
53  struct{ T x, y; };
+
54  struct{ T r, g; };
+
55  struct{ T s, t; };
+
56 
+
57  typename detail::storage<2, T, detail::is_aligned<Q>::value>::type data;
+
58 
+
59 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
60  GLM_SWIZZLE2_2_MEMBERS(T, Q, x, y)
+
61  GLM_SWIZZLE2_2_MEMBERS(T, Q, r, g)
+
62  GLM_SWIZZLE2_2_MEMBERS(T, Q, s, t)
+
63  GLM_SWIZZLE2_3_MEMBERS(T, Q, x, y)
+
64  GLM_SWIZZLE2_3_MEMBERS(T, Q, r, g)
+
65  GLM_SWIZZLE2_3_MEMBERS(T, Q, s, t)
+
66  GLM_SWIZZLE2_4_MEMBERS(T, Q, x, y)
+
67  GLM_SWIZZLE2_4_MEMBERS(T, Q, r, g)
+
68  GLM_SWIZZLE2_4_MEMBERS(T, Q, s, t)
+
69 # endif
+
70  };
+
71 # else
+
72  union {T x, r, s;};
+
73  union {T y, g, t;};
+
74 
+
75 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
76  GLM_SWIZZLE_GEN_VEC_FROM_VEC2(T, Q)
+
77 # endif//GLM_CONFIG_SWIZZLE
+
78 # endif
+
79 
+
80 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
81 # if GLM_COMPILER & GLM_COMPILER_CLANG
+
82 # pragma clang diagnostic pop
+
83 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
84 # pragma GCC diagnostic pop
+
85 # elif GLM_COMPILER & GLM_COMPILER_VC
+
86 # pragma warning(pop)
+
87 # endif
+
88 # endif
+
89 
+
90  // -- Component accesses --
+
91 
+
93  typedef length_t length_type;
+
94  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 2;}
+
95 
+
96  GLM_FUNC_DECL GLM_CONSTEXPR T& operator[](length_type i);
+
97  GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
+
98 
+
99  // -- Implicit basic constructors --
+
100 
+
101  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR vec() GLM_DEFAULT_CTOR;
+
102  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;
+
103  template<qualifier P>
+
104  GLM_CTOR_DECL vec(vec<2, T, P> const& v);
+
105 
+
106  // -- Explicit basic constructors --
+
107 
+
108  GLM_CTOR_DECL explicit vec(T scalar);
+
109  GLM_CTOR_DECL vec(T x, T y);
+
110 
+
111  // -- Conversion constructors --
+
112 
+
113  template<typename U, qualifier P>
+
114  GLM_CTOR_DECL explicit vec(vec<1, U, P> const& v);
+
115 
+
117  template<typename A, typename B>
+
118  GLM_CTOR_DECL vec(A x, B y);
+
119  template<typename A, typename B>
+
120  GLM_CTOR_DECL vec(vec<1, A, Q> const& x, B y);
+
121  template<typename A, typename B>
+
122  GLM_CTOR_DECL vec(A x, vec<1, B, Q> const& y);
+
123  template<typename A, typename B>
+
124  GLM_CTOR_DECL vec(vec<1, A, Q> const& x, vec<1, B, Q> const& y);
+
125 
+
126  // -- Conversion vector constructors --
+
127 
+
129  template<typename U, qualifier P>
+
130  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<3, U, P> const& v);
+
132  template<typename U, qualifier P>
+
133  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<4, U, P> const& v);
+
134 
+
136  template<typename U, qualifier P>
+
137  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<2, U, P> const& v);
+
138 
+
139  // -- Swizzle constructors --
+
140 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
141  template<int E0, int E1>
+
142  GLM_FUNC_DISCARD_DECL vec(detail::_swizzle<2, T, Q, E0, E1,-1,-2> const& that)
+
143  {
+
144  *this = that();
+
145  }
+
146 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
147 
+
148  // -- Unary arithmetic operators --
+
149 
+
150  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> & operator=(vec const& v) GLM_DEFAULT;
+
151 
+
152  template<typename U>
+
153  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator=(vec<2, U, Q> const& v);
+
154  template<typename U>
+
155  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(U scalar);
+
156  template<typename U>
+
157  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(vec<1, U, Q> const& v);
+
158  template<typename U>
+
159  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator+=(vec<2, U, Q> const& v);
+
160  template<typename U>
+
161  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(U scalar);
+
162  template<typename U>
+
163  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(vec<1, U, Q> const& v);
+
164  template<typename U>
+
165  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator-=(vec<2, U, Q> const& v);
+
166  template<typename U>
+
167  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(U scalar);
+
168  template<typename U>
+
169  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(vec<1, U, Q> const& v);
+
170  template<typename U>
+
171  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator*=(vec<2, U, Q> const& v);
+
172  template<typename U>
+
173  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(U scalar);
+
174  template<typename U>
+
175  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(vec<1, U, Q> const& v);
+
176  template<typename U>
+
177  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator/=(vec<2, U, Q> const& v);
+
178 
+
179  // -- Increment and decrement operators --
+
180 
+
181  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator++();
+
182  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator--();
+
183  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator++(int);
+
184  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator--(int);
+
185 
+
186  // -- Unary bit operators --
+
187 
+
188  template<typename U>
+
189  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(U scalar);
+
190  template<typename U>
+
191  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(vec<1, U, Q> const& v);
+
192  template<typename U>
+
193  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator%=(vec<2, U, Q> const& v);
+
194  template<typename U>
+
195  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(U scalar);
+
196  template<typename U>
+
197  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(vec<1, U, Q> const& v);
+
198  template<typename U>
+
199  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator&=(vec<2, U, Q> const& v);
+
200  template<typename U>
+
201  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(U scalar);
+
202  template<typename U>
+
203  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(vec<1, U, Q> const& v);
+
204  template<typename U>
+
205  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator|=(vec<2, U, Q> const& v);
+
206  template<typename U>
+
207  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(U scalar);
+
208  template<typename U>
+
209  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(vec<1, U, Q> const& v);
+
210  template<typename U>
+
211  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator^=(vec<2, U, Q> const& v);
+
212  template<typename U>
+
213  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(U scalar);
+
214  template<typename U>
+
215  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(vec<1, U, Q> const& v);
+
216  template<typename U>
+
217  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator<<=(vec<2, U, Q> const& v);
+
218  template<typename U>
+
219  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(U scalar);
+
220  template<typename U>
+
221  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(vec<1, U, Q> const& v);
+
222  template<typename U>
+
223  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<2, T, Q> & operator>>=(vec<2, U, Q> const& v);
+
224  };
+
225 
+
226  // -- Unary operators --
+
227 
+
228  template<typename T, qualifier Q>
+
229  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v);
+
230 
+
231  template<typename T, qualifier Q>
+
232  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v);
+
233 
+
234  // -- Binary operators --
+
235 
+
236  template<typename T, qualifier Q>
+
237  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v, T scalar);
+
238 
+
239  template<typename T, qualifier Q>
+
240  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
241 
+
242  template<typename T, qualifier Q>
+
243  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(T scalar, vec<2, T, Q> const& v);
+
244 
+
245  template<typename T, qualifier Q>
+
246  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
247 
+
248  template<typename T, qualifier Q>
+
249  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator+(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
250 
+
251  template<typename T, qualifier Q>
+
252  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v, T scalar);
+
253 
+
254  template<typename T, qualifier Q>
+
255  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
256 
+
257  template<typename T, qualifier Q>
+
258  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(T scalar, vec<2, T, Q> const& v);
+
259 
+
260  template<typename T, qualifier Q>
+
261  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
262 
+
263  template<typename T, qualifier Q>
+
264  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator-(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
265 
+
266  template<typename T, qualifier Q>
+
267  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v, T scalar);
+
268 
+
269  template<typename T, qualifier Q>
+
270  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
271 
+
272  template<typename T, qualifier Q>
+
273  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(T scalar, vec<2, T, Q> const& v);
+
274 
+
275  template<typename T, qualifier Q>
+
276  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
277 
+
278  template<typename T, qualifier Q>
+
279  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator*(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
280 
+
281  template<typename T, qualifier Q>
+
282  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v, T scalar);
+
283 
+
284  template<typename T, qualifier Q>
+
285  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
286 
+
287  template<typename T, qualifier Q>
+
288  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(T scalar, vec<2, T, Q> const& v);
+
289 
+
290  template<typename T, qualifier Q>
+
291  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
292 
+
293  template<typename T, qualifier Q>
+
294  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator/(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
295 
+
296  template<typename T, qualifier Q>
+
297  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v, T scalar);
+
298 
+
299  template<typename T, qualifier Q>
+
300  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
301 
+
302  template<typename T, qualifier Q>
+
303  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(T scalar, vec<2, T, Q> const& v);
+
304 
+
305  template<typename T, qualifier Q>
+
306  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
307 
+
308  template<typename T, qualifier Q>
+
309  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator%(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
310 
+
311  template<typename T, qualifier Q>
+
312  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v, T scalar);
+
313 
+
314  template<typename T, qualifier Q>
+
315  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
316 
+
317  template<typename T, qualifier Q>
+
318  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(T scalar, vec<2, T, Q> const& v);
+
319 
+
320  template<typename T, qualifier Q>
+
321  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
322 
+
323  template<typename T, qualifier Q>
+
324  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator&(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
325 
+
326  template<typename T, qualifier Q>
+
327  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v, T scalar);
+
328 
+
329  template<typename T, qualifier Q>
+
330  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
331 
+
332  template<typename T, qualifier Q>
+
333  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(T scalar, vec<2, T, Q> const& v);
+
334 
+
335  template<typename T, qualifier Q>
+
336  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
337 
+
338  template<typename T, qualifier Q>
+
339  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator|(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
340 
+
341  template<typename T, qualifier Q>
+
342  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v, T scalar);
+
343 
+
344  template<typename T, qualifier Q>
+
345  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
346 
+
347  template<typename T, qualifier Q>
+
348  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(T scalar, vec<2, T, Q> const& v);
+
349 
+
350  template<typename T, qualifier Q>
+
351  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
352 
+
353  template<typename T, qualifier Q>
+
354  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator^(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
355 
+
356  template<typename T, qualifier Q>
+
357  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v, T scalar);
+
358 
+
359  template<typename T, qualifier Q>
+
360  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
361 
+
362  template<typename T, qualifier Q>
+
363  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(T scalar, vec<2, T, Q> const& v);
+
364 
+
365  template<typename T, qualifier Q>
+
366  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
367 
+
368  template<typename T, qualifier Q>
+
369  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator<<(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
370 
+
371  template<typename T, qualifier Q>
+
372  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v, T scalar);
+
373 
+
374  template<typename T, qualifier Q>
+
375  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<1, T, Q> const& v2);
+
376 
+
377  template<typename T, qualifier Q>
+
378  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(T scalar, vec<2, T, Q> const& v);
+
379 
+
380  template<typename T, qualifier Q>
+
381  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<1, T, Q> const& v1, vec<2, T, Q> const& v2);
+
382 
+
383  template<typename T, qualifier Q>
+
384  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator>>(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
385 
+
386  template<typename T, qualifier Q>
+
387  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, T, Q> operator~(vec<2, T, Q> const& v);
+
388 
+
389  // -- Boolean operators --
+
390 
+
391  template<typename T, qualifier Q>
+
392  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
393 
+
394  template<typename T, qualifier Q>
+
395  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<2, T, Q> const& v1, vec<2, T, Q> const& v2);
+
396 
+
397  template<qualifier Q>
+
398  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, bool, Q> operator&&(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2);
+
399 
+
400  template<qualifier Q>
+
401  GLM_FUNC_DECL GLM_CONSTEXPR vec<2, bool, Q> operator||(vec<2, bool, Q> const& v1, vec<2, bool, Q> const& v2);
+
402 }//namespace glm
+
403 
+
404 #ifndef GLM_EXTERNAL_TEMPLATE
+
405 #include "type_vec2.inl"
+
406 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+ + + + diff --git a/include/glm/doc/api/a00080.html b/include/glm/doc/api/a00080.html new file mode 100644 index 0000000..97d8dad --- /dev/null +++ b/include/glm/doc/api/a00080.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_vec3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_vec3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00080_source.html b/include/glm/doc/api/a00080_source.html new file mode 100644 index 0000000..3bafe76 --- /dev/null +++ b/include/glm/doc/api/a00080_source.html @@ -0,0 +1,519 @@ + + + + + + + +1.0.2 API documentation: type_vec3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "qualifier.hpp"
+
7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
8 # include "_swizzle.hpp"
+
9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
10 # include "_swizzle_func.hpp"
+
11 #endif
+
12 #include <cstddef>
+
13 
+
14 namespace glm
+
15 {
+
16  template<typename T, qualifier Q>
+
17  struct vec<3, T, Q>
+
18  {
+
19  // -- Implementation detail --
+
20 
+
21  typedef T value_type;
+
22  typedef vec<3, T, Q> type;
+
23  typedef vec<3, bool, Q> bool_type;
+
24 
+
25  enum is_aligned
+
26  {
+
27  value = detail::is_aligned<Q>::value
+
28  };
+
29 
+
30  // -- Data --
+
31 
+
32 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
33 # if GLM_COMPILER & GLM_COMPILER_GCC
+
34 # pragma GCC diagnostic push
+
35 # pragma GCC diagnostic ignored "-Wpedantic"
+
36 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
37 # pragma clang diagnostic push
+
38 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+
39 # pragma clang diagnostic ignored "-Wnested-anon-types"
+
40 # pragma clang diagnostic ignored "-Wpadded"
+
41 # elif GLM_COMPILER & GLM_COMPILER_VC
+
42 # pragma warning(push)
+
43 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
+
44 # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
+
45 # pragma warning(disable: 4324) // structure was padded due to alignment specifier
+
46 # endif
+
47 # endif
+
48 # endif
+
49 
+
50 # if GLM_CONFIG_XYZW_ONLY
+
51  T x, y, z;
+
52 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
53  GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(T, Q, x, y, z)
+
54 # endif//GLM_CONFIG_SWIZZLE
+
55 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
+
56  union
+
57  {
+
58  struct{ T x, y, z; };
+
59  struct{ T r, g, b; };
+
60  struct{ T s, t, p; };
+
61 
+
62  typename detail::storage<3, T, detail::is_aligned<Q>::value>::type data;
+
63 
+
64 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
65  GLM_SWIZZLE3_2_MEMBERS(T, Q, x, y, z)
+
66  GLM_SWIZZLE3_2_MEMBERS(T, Q, r, g, b)
+
67  GLM_SWIZZLE3_2_MEMBERS(T, Q, s, t, p)
+
68  GLM_SWIZZLE3_3_MEMBERS(T, Q, x, y, z)
+
69  GLM_SWIZZLE3_3_MEMBERS(T, Q, r, g, b)
+
70  GLM_SWIZZLE3_3_MEMBERS(T, Q, s, t, p)
+
71  GLM_SWIZZLE3_4_MEMBERS(T, Q, x, y, z)
+
72  GLM_SWIZZLE3_4_MEMBERS(T, Q, r, g, b)
+
73  GLM_SWIZZLE3_4_MEMBERS(T, Q, s, t, p)
+
74 # endif
+
75  };
+
76 # else
+
77  union { T x, r, s; };
+
78  union { T y, g, t; };
+
79  union { T z, b, p; };
+
80 
+
81 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
82  GLM_SWIZZLE_GEN_VEC_FROM_VEC3(T, Q)
+
83 # endif//GLM_CONFIG_SWIZZLE
+
84 # endif//GLM_LANG
+
85 
+
86 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
87 # if GLM_COMPILER & GLM_COMPILER_CLANG
+
88 # pragma clang diagnostic pop
+
89 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
90 # pragma GCC diagnostic pop
+
91 # elif GLM_COMPILER & GLM_COMPILER_VC
+
92 # pragma warning(pop)
+
93 # endif
+
94 # endif
+
95 
+
96  // -- Component accesses --
+
97 
+
99  typedef length_t length_type;
+
100  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 3;}
+
101 
+
102  GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
+
103  GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
+
104 
+
105  // -- Implicit basic constructors --
+
106 
+
107  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR vec() GLM_DEFAULT_CTOR;
+
108  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec(vec const& v) GLM_DEFAULT;
+
109  template<qualifier P>
+
110  GLM_CTOR_DECL vec(vec<3, T, P> const& v);
+
111 
+
112  // -- Explicit basic constructors --
+
113 
+
114  GLM_CTOR_DECL explicit vec(T scalar);
+
115  GLM_CTOR_DECL vec(T a, T b, T c);
+
116 
+
117  // -- Conversion scalar constructors --
+
118 
+
119  template<typename U, qualifier P>
+
120  GLM_CTOR_DECL explicit vec(vec<1, U, P> const& v);
+
121 
+
123  template<typename X, typename Y, typename Z>
+
124  GLM_CTOR_DECL vec(X x, Y y, Z z);
+
125  template<typename X, typename Y, typename Z>
+
126  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, Z _z);
+
127  template<typename X, typename Y, typename Z>
+
128  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, Z _z);
+
129  template<typename X, typename Y, typename Z>
+
130  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z);
+
131  template<typename X, typename Y, typename Z>
+
132  GLM_CTOR_DECL vec(X _x, Y _y, vec<1, Z, Q> const& _z);
+
133  template<typename X, typename Y, typename Z>
+
134  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z);
+
135  template<typename X, typename Y, typename Z>
+
136  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z);
+
137  template<typename X, typename Y, typename Z>
+
138  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z);
+
139 
+
140  // -- Conversion vector constructors --
+
141 
+
143  template<typename A, typename B, qualifier P>
+
144  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, B _z);
+
146  template<typename A, typename B, qualifier P>
+
147  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z);
+
149  template<typename A, typename B, qualifier P>
+
150  GLM_CTOR_DECL vec(A _x, vec<2, B, P> const& _yz);
+
152  template<typename A, typename B, qualifier P>
+
153  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz);
+
155  template<typename U, qualifier P>
+
156  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<4, U, P> const& v);
+
157 
+
159  template<typename U, qualifier P>
+
160  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<3, U, P> const& v);
+
161 
+
162  // -- Swizzle constructors --
+
163 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
164  template<int E0, int E1, int E2>
+
165  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec(detail::_swizzle<3, T, Q, E0, E1, E2, -1> const& that)
+
166  {
+
167  *this = that();
+
168  }
+
169 
+
170  template<int E0, int E1>
+
171  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& scalar)
+
172  {
+
173  *this = vec(v(), scalar);
+
174  }
+
175 
+
176  template<int E0, int E1>
+
177  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec(T const& scalar, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v)
+
178  {
+
179  *this = vec(scalar, v());
+
180  }
+
181 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
182 
+
183  // -- Unary arithmetic operators --
+
184 
+
185  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q>& operator=(vec<3, T, Q> const& v) GLM_DEFAULT;
+
186 
+
187  template<typename U>
+
188  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator=(vec<3, U, Q> const& v);
+
189  template<typename U>
+
190  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(U scalar);
+
191  template<typename U>
+
192  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<1, U, Q> const& v);
+
193  template<typename U>
+
194  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator+=(vec<3, U, Q> const& v);
+
195  template<typename U>
+
196  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(U scalar);
+
197  template<typename U>
+
198  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<1, U, Q> const& v);
+
199  template<typename U>
+
200  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator-=(vec<3, U, Q> const& v);
+
201  template<typename U>
+
202  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(U scalar);
+
203  template<typename U>
+
204  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<1, U, Q> const& v);
+
205  template<typename U>
+
206  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator*=(vec<3, U, Q> const& v);
+
207  template<typename U>
+
208  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(U scalar);
+
209  template<typename U>
+
210  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<1, U, Q> const& v);
+
211  template<typename U>
+
212  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator/=(vec<3, U, Q> const& v);
+
213 
+
214  // -- Increment and decrement operators --
+
215 
+
216  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator++();
+
217  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator--();
+
218  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator++(int);
+
219  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator--(int);
+
220 
+
221  // -- Unary bit operators --
+
222 
+
223  template<typename U>
+
224  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(U scalar);
+
225  template<typename U>
+
226  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<1, U, Q> const& v);
+
227  template<typename U>
+
228  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator%=(vec<3, U, Q> const& v);
+
229  template<typename U>
+
230  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(U scalar);
+
231  template<typename U>
+
232  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<1, U, Q> const& v);
+
233  template<typename U>
+
234  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator&=(vec<3, U, Q> const& v);
+
235  template<typename U>
+
236  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(U scalar);
+
237  template<typename U>
+
238  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<1, U, Q> const& v);
+
239  template<typename U>
+
240  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator|=(vec<3, U, Q> const& v);
+
241  template<typename U>
+
242  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(U scalar);
+
243  template<typename U>
+
244  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<1, U, Q> const& v);
+
245  template<typename U>
+
246  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator^=(vec<3, U, Q> const& v);
+
247  template<typename U>
+
248  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(U scalar);
+
249  template<typename U>
+
250  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<1, U, Q> const& v);
+
251  template<typename U>
+
252  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator<<=(vec<3, U, Q> const& v);
+
253  template<typename U>
+
254  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(U scalar);
+
255  template<typename U>
+
256  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<1, U, Q> const& v);
+
257  template<typename U>
+
258  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<3, T, Q> & operator>>=(vec<3, U, Q> const& v);
+
259  };
+
260 
+
261 
+
262 
+
263  // -- Unary operators --
+
264 
+
265  template<typename T, qualifier Q>
+
266  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v);
+
267 
+
268  template<typename T, qualifier Q>
+
269  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v);
+
270 
+
271  // -- Binary operators --
+
272 
+
273  template<typename T, qualifier Q>
+
274  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, T scalar);
+
275 
+
276  template<typename T, qualifier Q>
+
277  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v, vec<1, T, Q> const& scalar);
+
278 
+
279  template<typename T, qualifier Q>
+
280  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(T scalar, vec<3, T, Q> const& v);
+
281 
+
282  template<typename T, qualifier Q>
+
283  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
284 
+
285  template<typename T, qualifier Q>
+
286  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator+(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
287 
+
288  template<typename T, qualifier Q>
+
289  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v, T scalar);
+
290 
+
291  template<typename T, qualifier Q>
+
292  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
293 
+
294  template<typename T, qualifier Q>
+
295  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(T scalar, vec<3, T, Q> const& v);
+
296 
+
297  template<typename T, qualifier Q>
+
298  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
299 
+
300  template<typename T, qualifier Q>
+
301  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator-(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
302 
+
303  template<typename T, qualifier Q>
+
304  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v, T scalar);
+
305 
+
306  template<typename T, qualifier Q>
+
307  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
308 
+
309  template<typename T, qualifier Q>
+
310  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(T scalar, vec<3, T, Q> const& v);
+
311 
+
312  template<typename T, qualifier Q>
+
313  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
314 
+
315  template<typename T, qualifier Q>
+
316  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator*(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
317 
+
318  template<typename T, qualifier Q>
+
319  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v, T scalar);
+
320 
+
321  template<typename T, qualifier Q>
+
322  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
323 
+
324  template<typename T, qualifier Q>
+
325  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(T scalar, vec<3, T, Q> const& v);
+
326 
+
327  template<typename T, qualifier Q>
+
328  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
329 
+
330  template<typename T, qualifier Q>
+
331  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator/(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
332 
+
333  template<typename T, qualifier Q>
+
334  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v, T scalar);
+
335 
+
336  template<typename T, qualifier Q>
+
337  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
338 
+
339  template<typename T, qualifier Q>
+
340  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(T scalar, vec<3, T, Q> const& v);
+
341 
+
342  template<typename T, qualifier Q>
+
343  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
344 
+
345  template<typename T, qualifier Q>
+
346  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator%(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
347 
+
348  template<typename T, qualifier Q>
+
349  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, T scalar);
+
350 
+
351  template<typename T, qualifier Q>
+
352  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
353 
+
354  template<typename T, qualifier Q>
+
355  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(T scalar, vec<3, T, Q> const& v);
+
356 
+
357  template<typename T, qualifier Q>
+
358  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
359 
+
360  template<typename T, qualifier Q>
+
361  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator&(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
362 
+
363  template<typename T, qualifier Q>
+
364  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v, T scalar);
+
365 
+
366  template<typename T, qualifier Q>
+
367  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
368 
+
369  template<typename T, qualifier Q>
+
370  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(T scalar, vec<3, T, Q> const& v);
+
371 
+
372  template<typename T, qualifier Q>
+
373  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
374 
+
375  template<typename T, qualifier Q>
+
376  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator|(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
377 
+
378  template<typename T, qualifier Q>
+
379  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v, T scalar);
+
380 
+
381  template<typename T, qualifier Q>
+
382  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
383 
+
384  template<typename T, qualifier Q>
+
385  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(T scalar, vec<3, T, Q> const& v);
+
386 
+
387  template<typename T, qualifier Q>
+
388  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
389 
+
390  template<typename T, qualifier Q>
+
391  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator^(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
392 
+
393  template<typename T, qualifier Q>
+
394  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v, T scalar);
+
395 
+
396  template<typename T, qualifier Q>
+
397  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
398 
+
399  template<typename T, qualifier Q>
+
400  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(T scalar, vec<3, T, Q> const& v);
+
401 
+
402  template<typename T, qualifier Q>
+
403  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
404 
+
405  template<typename T, qualifier Q>
+
406  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator<<(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
407 
+
408  template<typename T, qualifier Q>
+
409  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v, T scalar);
+
410 
+
411  template<typename T, qualifier Q>
+
412  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v1, vec<1, T, Q> const& v2);
+
413 
+
414  template<typename T, qualifier Q>
+
415  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(T scalar, vec<3, T, Q> const& v);
+
416 
+
417  template<typename T, qualifier Q>
+
418  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<1, T, Q> const& v1, vec<3, T, Q> const& v2);
+
419 
+
420  template<typename T, qualifier Q>
+
421  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator>>(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
422 
+
423  template<typename T, qualifier Q>
+
424  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> operator~(vec<3, T, Q> const& v);
+
425 
+
426  // -- Boolean operators --
+
427 
+
428  template<typename T, qualifier Q>
+
429  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
430 
+
431  template<typename T, qualifier Q>
+
432  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<3, T, Q> const& v1, vec<3, T, Q> const& v2);
+
433 
+
434  template<qualifier Q>
+
435  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, bool, Q> operator&&(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2);
+
436 
+
437  template<qualifier Q>
+
438  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, bool, Q> operator||(vec<3, bool, Q> const& v1, vec<3, bool, Q> const& v2);
+
439 
+
440 
+
441 
+
442 
+
443 }//namespace glm
+
444 
+
445 #ifndef GLM_EXTERNAL_TEMPLATE
+
446 #include "type_vec3.inl"
+
447 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+ + + + diff --git a/include/glm/doc/api/a00083.html b/include/glm/doc/api/a00083.html new file mode 100644 index 0000000..be0699b --- /dev/null +++ b/include/glm/doc/api/a00083.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: type_vec4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file type_vec4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00083_source.html b/include/glm/doc/api/a00083_source.html new file mode 100644 index 0000000..5c68a3a --- /dev/null +++ b/include/glm/doc/api/a00083_source.html @@ -0,0 +1,574 @@ + + + + + + + +1.0.2 API documentation: type_vec4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_vec4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 
+
6 #include "qualifier.hpp"
+
7 #if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
8 # include "_swizzle.hpp"
+
9 #elif GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
10 # include "_swizzle_func.hpp"
+
11 #endif
+
12 #include <cstddef>
+
13 
+
14 namespace glm
+
15 {
+
16  template<typename T, qualifier Q>
+
17  struct vec<4, T, Q>
+
18  {
+
19  // -- Implementation detail --
+
20 
+
21  typedef T value_type;
+
22  typedef vec<4, T, Q> type;
+
23  typedef vec<4, bool, Q> bool_type;
+
24 
+
25  enum is_aligned
+
26  {
+
27  value = detail::is_aligned<Q>::value
+
28  };
+
29 
+
30  // -- Data --
+
31 
+
32 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
33 # if GLM_COMPILER & GLM_COMPILER_GCC
+
34 # pragma GCC diagnostic push
+
35 # pragma GCC diagnostic ignored "-Wpedantic"
+
36 # elif GLM_COMPILER & GLM_COMPILER_CLANG
+
37 # pragma clang diagnostic push
+
38 # pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+
39 # pragma clang diagnostic ignored "-Wnested-anon-types"
+
40 # elif GLM_COMPILER & GLM_COMPILER_VC
+
41 # pragma warning(push)
+
42 # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union
+
43 # endif
+
44 # endif
+
45 
+
46 # if GLM_CONFIG_XYZW_ONLY
+
47  T x, y, z, w;
+
48 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
49  GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(T, Q, x, y, z, w)
+
50 # endif//GLM_CONFIG_SWIZZLE
+
51 # elif GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE
+
52  union
+
53  {
+
54  struct { T x, y, z, w; };
+
55  struct { T r, g, b, a; };
+
56  struct { T s, t, p, q; };
+
57 
+
58  typename detail::storage<4, T, detail::is_aligned<Q>::value>::type data;
+
59 
+
60 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
61  GLM_SWIZZLE4_2_MEMBERS(T, Q, x, y, z, w)
+
62  GLM_SWIZZLE4_2_MEMBERS(T, Q, r, g, b, a)
+
63  GLM_SWIZZLE4_2_MEMBERS(T, Q, s, t, p, q)
+
64  GLM_SWIZZLE4_3_MEMBERS(T, Q, x, y, z, w)
+
65  GLM_SWIZZLE4_3_MEMBERS(T, Q, r, g, b, a)
+
66  GLM_SWIZZLE4_3_MEMBERS(T, Q, s, t, p, q)
+
67  GLM_SWIZZLE4_4_MEMBERS(T, Q, x, y, z, w)
+
68  GLM_SWIZZLE4_4_MEMBERS(T, Q, r, g, b, a)
+
69  GLM_SWIZZLE4_4_MEMBERS(T, Q, s, t, p, q)
+
70 # endif
+
71  };
+
72 # else
+
73  union { T x, r, s; };
+
74  union { T y, g, t; };
+
75  union { T z, b, p; };
+
76  union { T w, a, q; };
+
77 
+
78 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_FUNCTION
+
79  GLM_SWIZZLE_GEN_VEC_FROM_VEC4(T, Q)
+
80 # endif
+
81 # endif
+
82 
+
83 # if GLM_SILENT_WARNINGS == GLM_ENABLE
+
84 # if GLM_COMPILER & GLM_COMPILER_CLANG
+
85 # pragma clang diagnostic pop
+
86 # elif GLM_COMPILER & GLM_COMPILER_GCC
+
87 # pragma GCC diagnostic pop
+
88 # elif GLM_COMPILER & GLM_COMPILER_VC
+
89 # pragma warning(pop)
+
90 # endif
+
91 # endif
+
92 
+
93  // -- Component accesses --
+
94 
+
95  typedef length_t length_type;
+
96 
+
98  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 4;}
+
99 
+
100  GLM_FUNC_DECL GLM_CONSTEXPR T & operator[](length_type i);
+
101  GLM_FUNC_DECL GLM_CONSTEXPR T const& operator[](length_type i) const;
+
102 
+
103  // -- Implicit basic constructors --
+
104 
+
105  GLM_DEFAULTED_DEFAULT_CTOR_DECL GLM_CONSTEXPR vec() GLM_DEFAULT_CTOR;
+
106  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec(vec<4, T, Q> const& v) GLM_DEFAULT;
+
107  template<qualifier P>
+
108  GLM_CTOR_DECL vec(vec<4, T, P> const& v);
+
109 
+
110  // -- Explicit basic constructors --
+
111 
+
112  GLM_CTOR_DECL explicit vec(T scalar);
+
113  GLM_CTOR_DECL vec(T x, T y, T z, T w);
+
114 
+
115  // -- Conversion scalar constructors --
+
116 
+
117  template<typename U, qualifier P>
+
118  GLM_CTOR_DECL explicit vec(vec<1, U, P> const& v);
+
119 
+
121  template<typename X, typename Y, typename Z, typename W>
+
122  GLM_CTOR_DECL vec(X _x, Y _y, Z _z, W _w);
+
123  template<typename X, typename Y, typename Z, typename W>
+
124  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, Z _z, W _w);
+
125  template<typename X, typename Y, typename Z, typename W>
+
126  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, Z _z, W _w);
+
127  template<typename X, typename Y, typename Z, typename W>
+
128  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, W _w);
+
129  template<typename X, typename Y, typename Z, typename W>
+
130  GLM_CTOR_DECL vec(X _x, Y _y, vec<1, Z, Q> const& _z, W _w);
+
131  template<typename X, typename Y, typename Z, typename W>
+
132  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, W _w);
+
133  template<typename X, typename Y, typename Z, typename W>
+
134  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);
+
135  template<typename X, typename Y, typename Z, typename W>
+
136  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, W _w);
+
137  template<typename X, typename Y, typename Z, typename W>
+
138  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, Z _z, vec<1, W, Q> const& _w);
+
139  template<typename X, typename Y, typename Z, typename W>
+
140  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);
+
141  template<typename X, typename Y, typename Z, typename W>
+
142  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, Z _z, vec<1, W, Q> const& _w);
+
143  template<typename X, typename Y, typename Z, typename W>
+
144  GLM_CTOR_DECL vec(X _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
+
145  template<typename X, typename Y, typename Z, typename W>
+
146  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, Y _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
+
147  template<typename X, typename Y, typename Z, typename W>
+
148  GLM_CTOR_DECL vec(X _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
+
149  template<typename X, typename Y, typename Z, typename W>
+
150  GLM_CTOR_DECL vec(vec<1, X, Q> const& _x, vec<1, Y, Q> const& _y, vec<1, Z, Q> const& _z, vec<1, W, Q> const& _w);
+
151 
+
152  // -- Conversion vector constructors --
+
153 
+
155  template<typename A, typename B, typename C, qualifier P>
+
156  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, B _z, C _w);
+
158  template<typename A, typename B, typename C, qualifier P>
+
159  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, C _w);
+
161  template<typename A, typename B, typename C, qualifier P>
+
162  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, B _z, vec<1, C, P> const& _w);
+
164  template<typename A, typename B, typename C, qualifier P>
+
165  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, vec<1, B, P> const& _z, vec<1, C, P> const& _w);
+
167  template<typename A, typename B, typename C, qualifier P>
+
168  GLM_CTOR_DECL vec(A _x, vec<2, B, P> const& _yz, C _w);
+
170  template<typename A, typename B, typename C, qualifier P>
+
171  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, C _w);
+
173  template<typename A, typename B, typename C, qualifier P>
+
174  GLM_CTOR_DECL vec(A _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);
+
176  template<typename A, typename B, typename C, qualifier P>
+
177  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, vec<2, B, P> const& _yz, vec<1, C, P> const& _w);
+
179  template<typename A, typename B, typename C, qualifier P>
+
180  GLM_CTOR_DECL vec(A _x, B _y, vec<2, C, P> const& _zw);
+
182  template<typename A, typename B, typename C, qualifier P>
+
183  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, B _y, vec<2, C, P> const& _zw);
+
185  template<typename A, typename B, typename C, qualifier P>
+
186  GLM_CTOR_DECL vec(A _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);
+
188  template<typename A, typename B, typename C, qualifier P>
+
189  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, vec<1, B, P> const& _y, vec<2, C, P> const& _zw);
+
191  template<typename A, typename B, qualifier P>
+
192  GLM_CTOR_DECL vec(vec<3, A, P> const& _xyz, B _w);
+
194  template<typename A, typename B, qualifier P>
+
195  GLM_CTOR_DECL vec(vec<3, A, P> const& _xyz, vec<1, B, P> const& _w);
+
197  template<typename A, typename B, qualifier P>
+
198  GLM_CTOR_DECL vec(A _x, vec<3, B, P> const& _yzw);
+
200  template<typename A, typename B, qualifier P>
+
201  GLM_CTOR_DECL vec(vec<1, A, P> const& _x, vec<3, B, P> const& _yzw);
+
203  template<typename A, typename B, qualifier P>
+
204  GLM_CTOR_DECL vec(vec<2, A, P> const& _xy, vec<2, B, P> const& _zw);
+
205 
+
207  template<typename U, qualifier P>
+
208  GLM_CTOR_DECL GLM_EXPLICIT vec(vec<4, U, P> const& v);
+
209 
+
210  // -- Swizzle constructors --
+
211 # if GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
212  template<int E0, int E1, int E2, int E3>
+
213  GLM_FUNC_DISCARD_DECL vec(detail::_swizzle<4, T, Q, E0, E1, E2, E3> const& that)
+
214  {
+
215  *this = that();
+
216  }
+
217 
+
218  template<int E0, int E1, int F0, int F1>
+
219  GLM_FUNC_DISCARD_DECL vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, detail::_swizzle<2, T, Q, F0, F1, -1, -2> const& u)
+
220  {
+
221  *this = vec<4, T, Q>(v(), u());
+
222  }
+
223 
+
224  template<int E0, int E1>
+
225  GLM_FUNC_DISCARD_DECL vec(T const& x, T const& y, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v)
+
226  {
+
227  *this = vec<4, T, Q>(x, y, v());
+
228  }
+
229 
+
230  template<int E0, int E1>
+
231  GLM_FUNC_DISCARD_DECL vec(T const& x, detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& w)
+
232  {
+
233  *this = vec<4, T, Q>(x, v(), w);
+
234  }
+
235 
+
236  template<int E0, int E1>
+
237  GLM_FUNC_DISCARD_DECL vec(detail::_swizzle<2, T, Q, E0, E1, -1, -2> const& v, T const& z, T const& w)
+
238  {
+
239  *this = vec<4, T, Q>(v(), z, w);
+
240  }
+
241 
+
242  template<int E0, int E1, int E2>
+
243  GLM_FUNC_DISCARD_DECL vec(detail::_swizzle<3, T, Q, E0, E1, E2, 3> const& v, T const& w)
+
244  {
+
245  *this = vec<4, T, Q>(v(), w);
+
246  }
+
247 
+
248  template<int E0, int E1, int E2>
+
249  GLM_FUNC_DISCARD_DECL vec(T const& x, detail::_swizzle<3, T, Q, E0, E1, E2, 3> const& v)
+
250  {
+
251  *this = vec<4, T, Q>(x, v());
+
252  }
+
253 # endif//GLM_CONFIG_SWIZZLE == GLM_SWIZZLE_OPERATOR
+
254 
+
255  // -- Unary arithmetic operators --
+
256 
+
257  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, T, Q> const& v) GLM_DEFAULT;
+
258 
+
259  template<typename U>
+
260  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator=(vec<4, U, Q> const& v);
+
261  template<typename U>
+
262  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(U scalar);
+
263  template<typename U>
+
264  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<1, U, Q> const& v);
+
265  template<typename U>
+
266  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator+=(vec<4, U, Q> const& v);
+
267  template<typename U>
+
268  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(U scalar);
+
269  template<typename U>
+
270  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<1, U, Q> const& v);
+
271  template<typename U>
+
272  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator-=(vec<4, U, Q> const& v);
+
273  template<typename U>
+
274  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(U scalar);
+
275  template<typename U>
+
276  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<1, U, Q> const& v);
+
277  template<typename U>
+
278  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator*=(vec<4, U, Q> const& v);
+
279  template<typename U>
+
280  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(U scalar);
+
281  template<typename U>
+
282  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<1, U, Q> const& v);
+
283  template<typename U>
+
284  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q>& operator/=(vec<4, U, Q> const& v);
+
285 
+
286  // -- Increment and decrement operators --
+
287 
+
288  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q> & operator++();
+
289  GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR vec<4, T, Q> & operator--();
+
290  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator++(int);
+
291  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator--(int);
+
292 
+
293  // -- Unary bit operators --
+
294 
+
295  template<typename U>
+
296  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(U scalar);
+
297  template<typename U>
+
298  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<1, U, Q> const& v);
+
299  template<typename U>
+
300  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator%=(vec<4, U, Q> const& v);
+
301  template<typename U>
+
302  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(U scalar);
+
303  template<typename U>
+
304  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<1, U, Q> const& v);
+
305  template<typename U>
+
306  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator&=(vec<4, U, Q> const& v);
+
307  template<typename U>
+
308  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(U scalar);
+
309  template<typename U>
+
310  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<1, U, Q> const& v);
+
311  template<typename U>
+
312  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator|=(vec<4, U, Q> const& v);
+
313  template<typename U>
+
314  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(U scalar);
+
315  template<typename U>
+
316  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<1, U, Q> const& v);
+
317  template<typename U>
+
318  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator^=(vec<4, U, Q> const& v);
+
319  template<typename U>
+
320  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(U scalar);
+
321  template<typename U>
+
322  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<1, U, Q> const& v);
+
323  template<typename U>
+
324  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator<<=(vec<4, U, Q> const& v);
+
325  template<typename U>
+
326  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(U scalar);
+
327  template<typename U>
+
328  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<1, U, Q> const& v);
+
329  template<typename U>
+
330  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> & operator>>=(vec<4, U, Q> const& v);
+
331  };
+
332 
+
333 
+
334  // -- Unary operators --
+
335 
+
336  template<typename T, qualifier Q>
+
337  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v);
+
338 
+
339  template<typename T, qualifier Q>
+
340  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v);
+
341 
+
342  // -- Binary operators --
+
343 
+
344  template<typename T, qualifier Q>
+
345  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v, T scalar);
+
346 
+
347  template<typename T, qualifier Q>
+
348  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);
+
349 
+
350  template<typename T, qualifier Q>
+
351  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(T scalar, vec<4, T, Q> const& v);
+
352 
+
353  template<typename T, qualifier Q>
+
354  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);
+
355 
+
356  template<typename T, qualifier Q>
+
357  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator+(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
358 
+
359  template<typename T, qualifier Q>
+
360  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v, T scalar);
+
361 
+
362  template<typename T, qualifier Q>
+
363  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);
+
364 
+
365  template<typename T, qualifier Q>
+
366  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(T scalar, vec<4, T, Q> const& v);
+
367 
+
368  template<typename T, qualifier Q>
+
369  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);
+
370 
+
371  template<typename T, qualifier Q>
+
372  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator-(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
373 
+
374  template<typename T, qualifier Q>
+
375  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v, T scalar);
+
376 
+
377  template<typename T, qualifier Q>
+
378  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);
+
379 
+
380  template<typename T, qualifier Q>
+
381  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(T scalar, vec<4, T, Q> const& v);
+
382 
+
383  template<typename T, qualifier Q>
+
384  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);
+
385 
+
386  template<typename T, qualifier Q>
+
387  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator*(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
388 
+
389  template<typename T, qualifier Q>
+
390  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v, T scalar);
+
391 
+
392  template<typename T, qualifier Q>
+
393  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<1, T, Q> const& v2);
+
394 
+
395  template<typename T, qualifier Q>
+
396  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(T scalar, vec<4, T, Q> const& v);
+
397 
+
398  template<typename T, qualifier Q>
+
399  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<1, T, Q> const& v1, vec<4, T, Q> const& v2);
+
400 
+
401  template<typename T, qualifier Q>
+
402  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator/(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
403 
+
404  template<typename T, qualifier Q>
+
405  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v, T scalar);
+
406 
+
407  template<typename T, qualifier Q>
+
408  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
409 
+
410  template<typename T, qualifier Q>
+
411  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(T scalar, vec<4, T, Q> const& v);
+
412 
+
413  template<typename T, qualifier Q>
+
414  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
415 
+
416  template<typename T, qualifier Q>
+
417  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator%(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
418 
+
419  template<typename T, qualifier Q>
+
420  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, T scalar);
+
421 
+
422  template<typename T, qualifier Q>
+
423  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
424 
+
425  template<typename T, qualifier Q>
+
426  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(T scalar, vec<4, T, Q> const& v);
+
427 
+
428  template<typename T, qualifier Q>
+
429  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
430 
+
431  template<typename T, qualifier Q>
+
432  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator&(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
433 
+
434  template<typename T, qualifier Q>
+
435  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v, T scalar);
+
436 
+
437  template<typename T, qualifier Q>
+
438  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
439 
+
440  template<typename T, qualifier Q>
+
441  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(T scalar, vec<4, T, Q> const& v);
+
442 
+
443  template<typename T, qualifier Q>
+
444  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
445 
+
446  template<typename T, qualifier Q>
+
447  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator|(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
448 
+
449  template<typename T, qualifier Q>
+
450  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v, T scalar);
+
451 
+
452  template<typename T, qualifier Q>
+
453  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
454 
+
455  template<typename T, qualifier Q>
+
456  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(T scalar, vec<4, T, Q> const& v);
+
457 
+
458  template<typename T, qualifier Q>
+
459  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
460 
+
461  template<typename T, qualifier Q>
+
462  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator^(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
463 
+
464  template<typename T, qualifier Q>
+
465  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v, T scalar);
+
466 
+
467  template<typename T, qualifier Q>
+
468  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
469 
+
470  template<typename T, qualifier Q>
+
471  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(T scalar, vec<4, T, Q> const& v);
+
472 
+
473  template<typename T, qualifier Q>
+
474  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
475 
+
476  template<typename T, qualifier Q>
+
477  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator<<(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
478 
+
479  template<typename T, qualifier Q>
+
480  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v, T scalar);
+
481 
+
482  template<typename T, qualifier Q>
+
483  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v, vec<1, T, Q> const& scalar);
+
484 
+
485  template<typename T, qualifier Q>
+
486  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(T scalar, vec<4, T, Q> const& v);
+
487 
+
488  template<typename T, qualifier Q>
+
489  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<1, T, Q> const& scalar, vec<4, T, Q> const& v);
+
490 
+
491  template<typename T, qualifier Q>
+
492  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator>>(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
493 
+
494  template<typename T, qualifier Q>
+
495  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, T, Q> operator~(vec<4, T, Q> const& v);
+
496 
+
497  // -- Boolean operators --
+
498 
+
499  template<typename T, qualifier Q>
+
500  GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
501 
+
502  template<typename T, qualifier Q>
+
503  GLM_FUNC_DECL GLM_CONSTEXPR bool operator!=(vec<4, T, Q> const& v1, vec<4, T, Q> const& v2);
+
504 
+
505  template<qualifier Q>
+
506  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator&&(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2);
+
507 
+
508  template<qualifier Q>
+
509  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> operator||(vec<4, bool, Q> const& v1, vec<4, bool, Q> const& v2);
+
510 }//namespace glm
+
511 
+
512 #ifndef GLM_EXTERNAL_TEMPLATE
+
513 #include "type_vec4.inl"
+
514 #endif//GLM_EXTERNAL_TEMPLATE
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+ + + + diff --git a/include/glm/doc/api/a00086.html b/include/glm/doc/api/a00086.html new file mode 100644 index 0000000..99a3df4 --- /dev/null +++ b/include/glm/doc/api/a00086.html @@ -0,0 +1,125 @@ + + + + + + + +1.0.2 API documentation: exponential.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
exponential.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > exp (vec< L, T, Q > const &v)
 Returns the natural exponentiation of v, i.e., e^v. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > exp2 (vec< L, T, Q > const &v)
 Returns 2 raised to the v power. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > inversesqrt (vec< L, T, Q > const &v)
 Returns the reciprocal of the positive square root of v. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > log (vec< L, T, Q > const &v)
 Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > log2 (vec< L, T, Q > const &v)
 Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > pow (vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)
 Returns 'base' raised to the power 'exponent'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sqrt (vec< L, T, Q > const &v)
 Returns the positive square root of v. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00086_source.html b/include/glm/doc/api/a00086_source.html new file mode 100644 index 0000000..e9a4ff2 --- /dev/null +++ b/include/glm/doc/api/a00086_source.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: exponential.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 #include "detail/type_vec1.hpp"
+
18 #include "detail/type_vec2.hpp"
+
19 #include "detail/type_vec3.hpp"
+
20 #include "detail/type_vec4.hpp"
+
21 #include <cmath>
+
22 
+
23 namespace glm
+
24 {
+
27 
+
35  template<length_t L, typename T, qualifier Q>
+
36  GLM_FUNC_DECL vec<L, T, Q> pow(vec<L, T, Q> const& base, vec<L, T, Q> const& exponent);
+
37 
+
46  template<length_t L, typename T, qualifier Q>
+
47  GLM_FUNC_DECL vec<L, T, Q> exp(vec<L, T, Q> const& v);
+
48 
+
59  template<length_t L, typename T, qualifier Q>
+
60  GLM_FUNC_DECL vec<L, T, Q> log(vec<L, T, Q> const& v);
+
61 
+
70  template<length_t L, typename T, qualifier Q>
+
71  GLM_FUNC_DECL vec<L, T, Q> exp2(vec<L, T, Q> const& v);
+
72 
+
82  template<length_t L, typename T, qualifier Q>
+
83  GLM_FUNC_DECL vec<L, T, Q> log2(vec<L, T, Q> const& v);
+
84 
+
93  template<length_t L, typename T, qualifier Q>
+
94  GLM_FUNC_DECL vec<L, T, Q> sqrt(vec<L, T, Q> const& v);
+
95 
+
104  template<length_t L, typename T, qualifier Q>
+
105  GLM_FUNC_DECL vec<L, T, Q> inversesqrt(vec<L, T, Q> const& v);
+
106 
+
108 }//namespace glm
+
109 
+
110 #include "detail/func_exponential.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > log(vec< L, T, Q > const &v)
Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y.
+
Core features
+
GLM_FUNC_DECL vec< L, T, Q > exp2(vec< L, T, Q > const &v)
Returns 2 raised to the v power.
+
Core features
+
GLM_FUNC_DECL vec< L, T, Q > pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)
Returns 'base' raised to the power 'exponent'.
+
Core features
+
GLM_FUNC_DECL vec< L, T, Q > log2(vec< L, T, Q > const &v)
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.
+
GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)
Returns the natural exponentiation of v, i.e., e^v.
+
Core features
+
GLM_FUNC_DECL vec< L, T, Q > inversesqrt(vec< L, T, Q > const &v)
Returns the reciprocal of the positive square root of v.
+
GLM_FUNC_DECL vec< L, T, Q > sqrt(vec< L, T, Q > const &v)
Returns the positive square root of v.
+ + + + diff --git a/include/glm/doc/api/a00089_source.html b/include/glm/doc/api/a00089_source.html new file mode 100644 index 0000000..e597189 --- /dev/null +++ b/include/glm/doc/api/a00089_source.html @@ -0,0 +1,209 @@ + + + + + + + +1.0.2 API documentation: _matrix_vectorize.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
_matrix_vectorize.hpp
+
+
+
1 #pragma once
+
2 
+
3 namespace glm {
+
4 
+
5  namespace detail {
+
6 
+
7  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, length_t C, length_t R, typename Ret, typename T, qualifier Q>
+
8  struct matrix_functor_1 {
+
9  };
+
10 
+
11  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
12  struct matrix_functor_1<mat, 2, 2, Ret, T, Q> {
+
13  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<2, 2, T, Q> call(Ret (*Func)(T x), mat<2, 2, T, Q> const &x) {
+
14  return mat<2, 2, Ret, Q>(
+
15  Func(x[0][0]), Func(x[0][1]),
+
16  Func(x[1][0]), Func(x[1][1])
+
17  );
+
18  }
+
19  };
+
20 
+
21  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
22  struct matrix_functor_1<mat, 2, 3, Ret, T, Q> {
+
23 
+
24  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<2, 3, T, Q> call(Ret (*Func)(T x), mat<2, 3, T, Q> const &x) {
+
25  return mat<2, 3, Ret, Q>(
+
26  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
+
27  Func(x[1][0]), Func(x[1][1]), Func(x[1][2])
+
28  );
+
29  }
+
30 
+
31  };
+
32 
+
33  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
34  struct matrix_functor_1<mat, 2, 4, Ret, T, Q> {
+
35 
+
36  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<2, 4, T, Q> call(Ret (*Func)(T x), mat<2, 4, T, Q> const &x) {
+
37  return mat<2, 4, Ret, Q>(
+
38  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
+
39  Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3])
+
40  );
+
41  }
+
42 
+
43  };
+
44 
+
45  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
46  struct matrix_functor_1<mat, 3, 2, Ret, T, Q> {
+
47 
+
48  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<3, 2, T, Q> call(Ret (*Func)(T x), mat<3, 2, T, Q> const &x) {
+
49  return mat<3, 2, Ret, Q>(
+
50  Func(x[0][0]), Func(x[0][1]),
+
51  Func(x[1][0]), Func(x[1][1]),
+
52  Func(x[2][0]), Func(x[2][1])
+
53  );
+
54  }
+
55 
+
56  };
+
57 
+
58  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
59  struct matrix_functor_1<mat, 3, 3, Ret, T, Q> {
+
60 
+
61  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<3, 3, T, Q> call(Ret (*Func)(T x), mat<3, 3, T, Q> const &x) {
+
62  return mat<3, 3, Ret, Q>(
+
63  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
+
64  Func(x[1][0]), Func(x[1][1]), Func(x[1][2]),
+
65  Func(x[2][0]), Func(x[2][1]), Func(x[2][2])
+
66  );
+
67  }
+
68 
+
69  };
+
70 
+
71  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
72  struct matrix_functor_1<mat, 3, 4, Ret, T, Q> {
+
73 
+
74  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<3, 4, T, Q> call(Ret (*Func)(T x), mat<3, 4, T, Q> const &x) {
+
75  return mat<3, 4, Ret, Q>(
+
76  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
+
77  Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3]),
+
78  Func(x[2][0]), Func(x[2][1]), Func(x[2][2]), Func(x[2][3])
+
79  );
+
80  }
+
81 
+
82  };
+
83 
+
84  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
85  struct matrix_functor_1<mat, 4, 2, Ret, T, Q> {
+
86 
+
87  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<4, 2, T, Q> call(Ret (*Func)(T x), mat<4, 2, T, Q> const &x) {
+
88  return mat<4, 2, Ret, Q>(
+
89  Func(x[0][0]), Func(x[0][1]),
+
90  Func(x[1][0]), Func(x[1][1]),
+
91  Func(x[2][0]), Func(x[2][1]),
+
92  Func(x[3][0]), Func(x[3][1])
+
93  );
+
94  }
+
95 
+
96  };
+
97 
+
98  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
99  struct matrix_functor_1<mat, 4, 3, Ret, T, Q> {
+
100 
+
101  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<4, 3, T, Q> call(Ret (*Func)(T x), mat<4, 3, T, Q> const &x) {
+
102  return mat<4, 3, Ret, Q>(
+
103  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]),
+
104  Func(x[1][0]), Func(x[1][1]), Func(x[1][2]),
+
105  Func(x[2][0]), Func(x[2][1]), Func(x[2][2]),
+
106  Func(x[3][0]), Func(x[3][1]), Func(x[3][2])
+
107  );
+
108  }
+
109 
+
110  };
+
111 
+
112  template<template<length_t C, length_t R, typename T, qualifier Q> class mat, typename Ret, typename T, qualifier Q>
+
113  struct matrix_functor_1<mat, 4, 4, Ret, T, Q> {
+
114 
+
115  GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat<4, 4, T, Q> call(Ret (*Func)(T x), mat<4, 4, T, Q> const &x) {
+
116  return mat<4, 4, Ret, Q>(
+
117  Func(x[0][0]), Func(x[0][1]), Func(x[0][2]), Func(x[0][3]),
+
118  Func(x[1][0]), Func(x[1][1]), Func(x[1][2]), Func(x[1][3]),
+
119  Func(x[2][0]), Func(x[2][1]), Func(x[2][2]), Func(x[2][3]),
+
120  Func(x[3][0]), Func(x[3][1]), Func(x[3][2]), Func(x[3][3])
+
121  );
+
122  }
+
123 
+
124  };
+
125 
+
126  }
+
127 
+
128 }// namespace glm
+
+ + + + diff --git a/include/glm/doc/api/a00092.html b/include/glm/doc/api/a00092.html new file mode 100644 index 0000000..d5f4611 --- /dev/null +++ b/include/glm/doc/api/a00092.html @@ -0,0 +1,280 @@ + + + + + + + +1.0.2 API documentation: matrix_clip_space.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_clip_space.hpp File Reference
+
+
+ +

GLM_EXT_matrix_clip_space +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustum (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix with default handedness, using the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_NO (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_ZO (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumNO (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_NO (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_ZO (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumZO (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspective (T fovy, T aspect, T near)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default handedness. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_NO (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_ZO (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_NO (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_ZO (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho (T left, T right, T bottom, T top)
 Creates a matrix for projecting two-dimensional coordinates onto the screen. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_NO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_ZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoNO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_NO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_ZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum based on the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFov (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view and the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH (T fov, T width, T height, T near, T far)
 Builds a left-handed perspective projection matrix based on a field of view. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_NO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_ZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovNO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH (T fov, T width, T height, T near, T far)
 Builds a right-handed perspective projection matrix based on a field of view. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_NO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_ZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_NO (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_ZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveNO (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_NO (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_ZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near, T ep)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00092_source.html b/include/glm/doc/api/a00092_source.html new file mode 100644 index 0000000..e15dfc2 --- /dev/null +++ b/include/glm/doc/api/a00092_source.html @@ -0,0 +1,328 @@ + + + + + + + +1.0.2 API documentation: matrix_clip_space.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_clip_space.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependencies
+
23 #include "../ext/scalar_constants.hpp"
+
24 #include "../geometric.hpp"
+
25 #include "../trigonometric.hpp"
+
26 
+
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
28 # pragma message("GLM: GLM_EXT_matrix_clip_space extension included")
+
29 #endif
+
30 
+
31 namespace glm
+
32 {
+
35 
+
42  template<typename T>
+
43  GLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(
+
44  T left, T right, T bottom, T top);
+
45 
+
52  template<typename T>
+
53  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_ZO(
+
54  T left, T right, T bottom, T top, T zNear, T zFar);
+
55 
+
62  template<typename T>
+
63  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH_NO(
+
64  T left, T right, T bottom, T top, T zNear, T zFar);
+
65 
+
72  template<typename T>
+
73  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_ZO(
+
74  T left, T right, T bottom, T top, T zNear, T zFar);
+
75 
+
82  template<typename T>
+
83  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH_NO(
+
84  T left, T right, T bottom, T top, T zNear, T zFar);
+
85 
+
92  template<typename T>
+
93  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoZO(
+
94  T left, T right, T bottom, T top, T zNear, T zFar);
+
95 
+
102  template<typename T>
+
103  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoNO(
+
104  T left, T right, T bottom, T top, T zNear, T zFar);
+
105 
+
113  template<typename T>
+
114  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoLH(
+
115  T left, T right, T bottom, T top, T zNear, T zFar);
+
116 
+
124  template<typename T>
+
125  GLM_FUNC_DECL mat<4, 4, T, defaultp> orthoRH(
+
126  T left, T right, T bottom, T top, T zNear, T zFar);
+
127 
+
135  template<typename T>
+
136  GLM_FUNC_DECL mat<4, 4, T, defaultp> ortho(
+
137  T left, T right, T bottom, T top, T zNear, T zFar);
+
138 
+
143  template<typename T>
+
144  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_ZO(
+
145  T left, T right, T bottom, T top, T near, T far);
+
146 
+
151  template<typename T>
+
152  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH_NO(
+
153  T left, T right, T bottom, T top, T near, T far);
+
154 
+
159  template<typename T>
+
160  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_ZO(
+
161  T left, T right, T bottom, T top, T near, T far);
+
162 
+
167  template<typename T>
+
168  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH_NO(
+
169  T left, T right, T bottom, T top, T near, T far);
+
170 
+
175  template<typename T>
+
176  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumZO(
+
177  T left, T right, T bottom, T top, T near, T far);
+
178 
+
183  template<typename T>
+
184  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumNO(
+
185  T left, T right, T bottom, T top, T near, T far);
+
186 
+
192  template<typename T>
+
193  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumLH(
+
194  T left, T right, T bottom, T top, T near, T far);
+
195 
+
201  template<typename T>
+
202  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustumRH(
+
203  T left, T right, T bottom, T top, T near, T far);
+
204 
+
210  template<typename T>
+
211  GLM_FUNC_DECL mat<4, 4, T, defaultp> frustum(
+
212  T left, T right, T bottom, T top, T near, T far);
+
213 
+
214 
+
224  template<typename T>
+
225  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_ZO(
+
226  T fovy, T aspect, T near, T far);
+
227 
+
237  template<typename T>
+
238  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH_NO(
+
239  T fovy, T aspect, T near, T far);
+
240 
+
250  template<typename T>
+
251  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_ZO(
+
252  T fovy, T aspect, T near, T far);
+
253 
+
263  template<typename T>
+
264  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH_NO(
+
265  T fovy, T aspect, T near, T far);
+
266 
+
276  template<typename T>
+
277  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveZO(
+
278  T fovy, T aspect, T near, T far);
+
279 
+
289  template<typename T>
+
290  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveNO(
+
291  T fovy, T aspect, T near, T far);
+
292 
+
303  template<typename T>
+
304  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveRH(
+
305  T fovy, T aspect, T near, T far);
+
306 
+
317  template<typename T>
+
318  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveLH(
+
319  T fovy, T aspect, T near, T far);
+
320 
+
331  template<typename T>
+
332  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspective(
+
333  T fovy, T aspect, T near, T far);
+
334 
+
345  template<typename T>
+
346  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_ZO(
+
347  T fov, T width, T height, T near, T far);
+
348 
+
359  template<typename T>
+
360  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH_NO(
+
361  T fov, T width, T height, T near, T far);
+
362 
+
373  template<typename T>
+
374  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_ZO(
+
375  T fov, T width, T height, T near, T far);
+
376 
+
387  template<typename T>
+
388  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH_NO(
+
389  T fov, T width, T height, T near, T far);
+
390 
+
401  template<typename T>
+
402  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovZO(
+
403  T fov, T width, T height, T near, T far);
+
404 
+
415  template<typename T>
+
416  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovNO(
+
417  T fov, T width, T height, T near, T far);
+
418 
+
430  template<typename T>
+
431  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovRH(
+
432  T fov, T width, T height, T near, T far);
+
433 
+
445  template<typename T>
+
446  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFovLH(
+
447  T fov, T width, T height, T near, T far);
+
448 
+
459  template<typename T>
+
460  GLM_FUNC_DECL mat<4, 4, T, defaultp> perspectiveFov(
+
461  T fov, T width, T height, T near, T far);
+
462 
+
471  template<typename T>
+
472  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveLH_ZO(
+
473  T fovy, T aspect, T near);
+
474 
+
483  template<typename T>
+
484  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveLH_NO(
+
485  T fovy, T aspect, T near);
+
486 
+
495  template<typename T>
+
496  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveRH_ZO(
+
497  T fovy, T aspect, T near);
+
498 
+
507  template<typename T>
+
508  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveRH_NO(
+
509  T fovy, T aspect, T near);
+
510 
+
520  template<typename T>
+
521  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveLH(
+
522  T fovy, T aspect, T near);
+
523 
+
533  template<typename T>
+
534  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspectiveRH(
+
535  T fovy, T aspect, T near);
+
536 
+
546  template<typename T>
+
547  GLM_FUNC_DECL mat<4, 4, T, defaultp> infinitePerspective(
+
548  T fovy, T aspect, T near);
+
549 
+
557  template<typename T>
+
558  GLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(
+
559  T fovy, T aspect, T near);
+
560 
+
569  template<typename T>
+
570  GLM_FUNC_DECL mat<4, 4, T, defaultp> tweakedInfinitePerspective(
+
571  T fovy, T aspect, T near, T ep);
+
572 
+
574 }//namespace glm
+
575 
+
576 #include "matrix_clip_space.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_ZO(T fovy, T aspect, T near)
Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH(T fovy, T aspect, T near, T far)
Creates a matrix for a right-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumNO(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-h...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveZO(T fovy, T aspect, T near, T far)
Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovNO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_NO(T fovy, T aspect, T near, T far)
Creates a matrix for a right-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symmetric perspective-view frustum based on the default handedness and default...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_ZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveNO(T fovy, T aspect, T near, T far)
Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_ZO(T left, T right, T bottom, T top, T near, T far)
Creates a left-handed frustum matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using the default handedness and defaul...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH(T fovy, T aspect, T near, T far)
Creates a matrix for a left-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_NO(T fovy, T aspect, T near)
Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_ZO(T fovy, T aspect, T near, T far)
Creates a matrix for a right-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFov(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view and the default handedness and defaul...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_ZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumZO(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-h...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH(T fov, T width, T height, T near, T far)
Builds a left-handed perspective projection matrix based on a field of view.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH(T fovy, T aspect, T near)
Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH(T left, T right, T bottom, T top, T near, T far)
Creates a left-handed frustum matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspective(T fovy, T aspect, T near)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default han...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_NO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using right-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_NO(T left, T right, T bottom, T top, T near, T far)
Creates a right-handed frustum matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_ZO(T fovy, T aspect, T near)
Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH(T fovy, T aspect, T near)
Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_NO(T fovy, T aspect, T near, T far)
Creates a matrix for a left-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoNO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FO...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_ZO(T fovy, T aspect, T near, T far)
Creates a matrix for a left-handed, symmetric perspective-view frustum.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_ZO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using right-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH(T fov, T width, T height, T near, T far)
Builds a right-handed perspective projection matrix based on a field of view.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_NO(T left, T right, T bottom, T top, T near, T far)
Creates a left-handed frustum matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustum(T left, T right, T bottom, T top, T near, T far)
Creates a frustum matrix with default handedness, using the default handedness and default near and f...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoZO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH(T left, T right, T bottom, T top, T near, T far)
Creates a right-handed frustum matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_NO(T fov, T width, T height, T near, T far)
Builds a perspective projection matrix based on a field of view using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_NO(T fovy, T aspect, T near)
Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)
Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics har...
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_NO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_NO(T left, T right, T bottom, T top, T zNear, T zFar)
Creates a matrix for an orthographic parallel viewing volume using left-handed coordinates.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_ZO(T left, T right, T bottom, T top, T near, T far)
Creates a right-handed frustum matrix.
+ + + + diff --git a/include/glm/doc/api/a00095.html b/include/glm/doc/api/a00095.html new file mode 100644 index 0000000..1a00194 --- /dev/null +++ b/include/glm/doc/api/a00095.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: matrix_common.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_common.hpp File Reference
+
+ + + + + diff --git a/include/glm/doc/api/a00095_source.html b/include/glm/doc/api/a00095_source.html new file mode 100644 index 0000000..f65734b --- /dev/null +++ b/include/glm/doc/api/a00095_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_common.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/qualifier.hpp"
+
16 #include "../detail/_fixes.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_common extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
27  template<length_t C, length_t R, typename T, typename U, qualifier Q>
+
28  GLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, mat<C, R, U, Q> const& a);
+
29 
+
30  template<length_t C, length_t R, typename T, typename U, qualifier Q>
+
31  GLM_FUNC_DECL mat<C, R, T, Q> mix(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, U a);
+
32 
+
33  template <length_t C, length_t R, typename T, qualifier Q>
+
34  GLM_FUNC_DECL GLM_CONSTEXPR mat<C, R, T, Q> abs(mat<C, R, T, Q> const& x);
+
35 
+
37 }//namespace glm
+
38 
+
39 #include "matrix_common.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR genType abs(genType x)
Returns x if x >= 0; otherwise, it returns -x.
+
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+ + + + diff --git a/include/glm/doc/api/a00098.html b/include/glm/doc/api/a00098.html new file mode 100644 index 0000000..4472a86 --- /dev/null +++ b/include/glm/doc/api/a00098.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, double, defaultp > dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 2, double, defaultp > dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00098_source.html b/include/glm/doc/api/a00098_source.html new file mode 100644 index 0000000..e2bcd77 --- /dev/null +++ b/include/glm/doc/api/a00098_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 2, double, defaultp> dmat2x2;
+
16 
+
20  typedef mat<2, 2, double, defaultp> dmat2;
+
21 
+
23 }//namespace glm
+
+
mat< 2, 2, double, defaultp > dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers.
+
mat< 2, 2, double, defaultp > dmat2
2 columns of 2 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00101.html b/include/glm/doc/api/a00101.html new file mode 100644 index 0000000..822ab1b --- /dev/null +++ b/include/glm/doc/api/a00101.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, double, highp > highp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, highp > highp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00101_source.html b/include/glm/doc/api/a00101_source.html new file mode 100644 index 0000000..b4175a2 --- /dev/null +++ b/include/glm/doc/api/a00101_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 2, double, lowp> lowp_dmat2;
+
17 
+
22  typedef mat<2, 2, double, mediump> mediump_dmat2;
+
23 
+
28  typedef mat<2, 2, double, highp> highp_dmat2;
+
29 
+
34  typedef mat<2, 2, double, lowp> lowp_dmat2x2;
+
35 
+
40  typedef mat<2, 2, double, mediump> mediump_dmat2x2;
+
41 
+
46  typedef mat<2, 2, double, highp> highp_dmat2x2;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 2, double, highp > highp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, double, lowp > lowp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 2, double, highp > highp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, double, mediump > mediump_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, double, lowp > lowp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 2, double, mediump > mediump_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00104.html b/include/glm/doc/api/a00104.html new file mode 100644 index 0000000..bbb5462 --- /dev/null +++ b/include/glm/doc/api/a00104.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 3, double, defaultp > dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00104_source.html b/include/glm/doc/api/a00104_source.html new file mode 100644 index 0000000..49e01a1 --- /dev/null +++ b/include/glm/doc/api/a00104_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 3, double, defaultp> dmat2x3;
+
16 
+
18 }//namespace glm
+
+
mat< 2, 3, double, defaultp > dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00107.html b/include/glm/doc/api/a00107.html new file mode 100644 index 0000000..0ef36b7 --- /dev/null +++ b/include/glm/doc/api/a00107.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, double, highp > highp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, lowp > lowp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, mediump > mediump_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00107_source.html b/include/glm/doc/api/a00107_source.html new file mode 100644 index 0000000..bbcfb41 --- /dev/null +++ b/include/glm/doc/api/a00107_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 3, double, lowp> lowp_dmat2x3;
+
17 
+
22  typedef mat<2, 3, double, mediump> mediump_dmat2x3;
+
23 
+
28  typedef mat<2, 3, double, highp> highp_dmat2x3;
+
29 
+
31 }//namespace glm
+
+
mat< 2, 3, double, lowp > lowp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 3, double, highp > highp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 3, double, mediump > mediump_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00110.html b/include/glm/doc/api/a00110.html new file mode 100644 index 0000000..45475d1 --- /dev/null +++ b/include/glm/doc/api/a00110.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 4, double, defaultp > dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00110_source.html b/include/glm/doc/api/a00110_source.html new file mode 100644 index 0000000..7ae744a --- /dev/null +++ b/include/glm/doc/api/a00110_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 4, double, defaultp> dmat2x4;
+
16 
+
18 }//namespace glm
+
+
mat< 2, 4, double, defaultp > dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00113.html b/include/glm/doc/api/a00113.html new file mode 100644 index 0000000..5ab2fe0 --- /dev/null +++ b/include/glm/doc/api/a00113.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double2x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, double, highp > highp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, lowp > lowp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, mediump > mediump_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00113_source.html b/include/glm/doc/api/a00113_source.html new file mode 100644 index 0000000..8b49365 --- /dev/null +++ b/include/glm/doc/api/a00113_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double2x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double2x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 4, double, lowp> lowp_dmat2x4;
+
17 
+
22  typedef mat<2, 4, double, mediump> mediump_dmat2x4;
+
23 
+
28  typedef mat<2, 4, double, highp> highp_dmat2x4;
+
29 
+
31 }//namespace glm
+
+
mat< 2, 4, double, highp > highp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 4, double, mediump > mediump_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 4, double, lowp > lowp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00116.html b/include/glm/doc/api/a00116.html new file mode 100644 index 0000000..61febb3 --- /dev/null +++ b/include/glm/doc/api/a00116.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 2, double, defaultp > dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00116_source.html b/include/glm/doc/api/a00116_source.html new file mode 100644 index 0000000..79ad0a7 --- /dev/null +++ b/include/glm/doc/api/a00116_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 2, double, defaultp> dmat3x2;
+
16 
+
18 }//namespace glm
+
+
mat< 3, 2, double, defaultp > dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00119.html b/include/glm/doc/api/a00119.html new file mode 100644 index 0000000..8b5522e --- /dev/null +++ b/include/glm/doc/api/a00119.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, double, highp > highp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, lowp > lowp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, mediump > mediump_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00119_source.html b/include/glm/doc/api/a00119_source.html new file mode 100644 index 0000000..5fa6c7a --- /dev/null +++ b/include/glm/doc/api/a00119_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 2, double, lowp> lowp_dmat3x2;
+
17 
+
22  typedef mat<3, 2, double, mediump> mediump_dmat3x2;
+
23 
+
28  typedef mat<3, 2, double, highp> highp_dmat3x2;
+
29 
+
31 }//namespace glm
+
+
mat< 3, 2, double, highp > highp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 2, double, lowp > lowp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 3, 2, double, mediump > mediump_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00122.html b/include/glm/doc/api/a00122.html new file mode 100644 index 0000000..eb2db84 --- /dev/null +++ b/include/glm/doc/api/a00122.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, double, defaultp > dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 3, double, defaultp > dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00122_source.html b/include/glm/doc/api/a00122_source.html new file mode 100644 index 0000000..15ef192 --- /dev/null +++ b/include/glm/doc/api/a00122_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 3, double, defaultp> dmat3x3;
+
16 
+
20  typedef mat<3, 3, double, defaultp> dmat3;
+
21 
+
23 }//namespace glm
+
+
mat< 3, 3, double, defaultp > dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers.
+
mat< 3, 3, double, defaultp > dmat3
3 columns of 3 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00125.html b/include/glm/doc/api/a00125.html new file mode 100644 index 0000000..90a56a5 --- /dev/null +++ b/include/glm/doc/api/a00125.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, double, highp > highp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, highp > highp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00125_source.html b/include/glm/doc/api/a00125_source.html new file mode 100644 index 0000000..d9f39b3 --- /dev/null +++ b/include/glm/doc/api/a00125_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 3, double, lowp> lowp_dmat3;
+
17 
+
22  typedef mat<3, 3, double, mediump> mediump_dmat3;
+
23 
+
28  typedef mat<3, 3, double, highp> highp_dmat3;
+
29 
+
34  typedef mat<3, 3, double, lowp> lowp_dmat3x3;
+
35 
+
40  typedef mat<3, 3, double, mediump> mediump_dmat3x3;
+
41 
+
46  typedef mat<3, 3, double, highp> highp_dmat3x3;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 3, double, lowp > lowp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 3, 3, double, mediump > mediump_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, double, mediump > mediump_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, double, lowp > lowp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 3, 3, double, highp > highp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, double, highp > highp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00128.html b/include/glm/doc/api/a00128.html new file mode 100644 index 0000000..34e2977 --- /dev/null +++ b/include/glm/doc/api/a00128.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 4, double, defaultp > dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00128_source.html b/include/glm/doc/api/a00128_source.html new file mode 100644 index 0000000..cdb8520 --- /dev/null +++ b/include/glm/doc/api/a00128_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 4, double, defaultp> dmat3x4;
+
16 
+
18 }//namespace glm
+
+
mat< 3, 4, double, defaultp > dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00131.html b/include/glm/doc/api/a00131.html new file mode 100644 index 0000000..4091781 --- /dev/null +++ b/include/glm/doc/api/a00131.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double3x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 3, 4, double, highp > highp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, lowp > lowp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, mediump > mediump_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00131_source.html b/include/glm/doc/api/a00131_source.html new file mode 100644 index 0000000..3092d08 --- /dev/null +++ b/include/glm/doc/api/a00131_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double3x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double3x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 4, double, lowp> lowp_dmat3x4;
+
17 
+
22  typedef mat<3, 4, double, mediump> mediump_dmat3x4;
+
23 
+
28  typedef mat<3, 4, double, highp> highp_dmat3x4;
+
29 
+
31 }//namespace glm
+
+
mat< 3, 4, double, mediump > mediump_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 4, double, highp > highp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 4, double, lowp > lowp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00134.html b/include/glm/doc/api/a00134.html new file mode 100644 index 0000000..efaa72f --- /dev/null +++ b/include/glm/doc/api/a00134.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 2, double, defaultp > dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00134_source.html b/include/glm/doc/api/a00134_source.html new file mode 100644 index 0000000..a69d676 --- /dev/null +++ b/include/glm/doc/api/a00134_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 2, double, defaultp> dmat4x2;
+
16 
+
18 }//namespace glm
+
+
mat< 4, 2, double, defaultp > dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00137.html b/include/glm/doc/api/a00137.html new file mode 100644 index 0000000..9018249 --- /dev/null +++ b/include/glm/doc/api/a00137.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 4, 2, double, highp > highp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, lowp > lowp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, mediump > mediump_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00137_source.html b/include/glm/doc/api/a00137_source.html new file mode 100644 index 0000000..3e1b4e2 --- /dev/null +++ b/include/glm/doc/api/a00137_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 2, double, lowp> lowp_dmat4x2;
+
17 
+
22  typedef mat<4, 2, double, mediump> mediump_dmat4x2;
+
23 
+
28  typedef mat<4, 2, double, highp> highp_dmat4x2;
+
29 
+
31 }//namespace glm
+
+
mat< 4, 2, double, lowp > lowp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 4, 2, double, highp > highp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 2, double, mediump > mediump_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00140.html b/include/glm/doc/api/a00140.html new file mode 100644 index 0000000..ed4960d --- /dev/null +++ b/include/glm/doc/api/a00140.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 3, double, defaultp > dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00140_source.html b/include/glm/doc/api/a00140_source.html new file mode 100644 index 0000000..dfa2928 --- /dev/null +++ b/include/glm/doc/api/a00140_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 3, double, defaultp> dmat4x3;
+
16 
+
18 }//namespace glm
+
+
mat< 4, 3, double, defaultp > dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00143.html b/include/glm/doc/api/a00143.html new file mode 100644 index 0000000..d384dbb --- /dev/null +++ b/include/glm/doc/api/a00143.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, double, highp > highp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, lowp > lowp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, mediump > mediump_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00143_source.html b/include/glm/doc/api/a00143_source.html new file mode 100644 index 0000000..6f40718 --- /dev/null +++ b/include/glm/doc/api/a00143_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 3, double, lowp> lowp_dmat4x3;
+
17 
+
22  typedef mat<4, 3, double, mediump> mediump_dmat4x3;
+
23 
+
28  typedef mat<4, 3, double, highp> highp_dmat4x3;
+
29 
+
31 }//namespace glm
+
+
mat< 4, 3, double, highp > highp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 3, double, lowp > lowp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 4, 3, double, mediump > mediump_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00146.html b/include/glm/doc/api/a00146.html new file mode 100644 index 0000000..775d2ff --- /dev/null +++ b/include/glm/doc/api/a00146.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 4, 4, double, defaultp > dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 4, double, defaultp > dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_double4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00146_source.html b/include/glm/doc/api/a00146_source.html new file mode 100644 index 0000000..b1365db --- /dev/null +++ b/include/glm/doc/api/a00146_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 4, double, defaultp> dmat4x4;
+
16 
+
20  typedef mat<4, 4, double, defaultp> dmat4;
+
21 
+
23 }//namespace glm
+
+
mat< 4, 4, double, defaultp > dmat4
4 columns of 4 components matrix of double-precision floating-point numbers.
+
mat< 4, 4, double, defaultp > dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00149.html b/include/glm/doc/api/a00149.html new file mode 100644 index 0000000..e0742eb --- /dev/null +++ b/include/glm/doc/api/a00149.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_double4x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, double, highp > highp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, highp > highp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00149_source.html b/include/glm/doc/api/a00149_source.html new file mode 100644 index 0000000..e338682 --- /dev/null +++ b/include/glm/doc/api/a00149_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_double4x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_double4x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 4, double, lowp> lowp_dmat4;
+
17 
+
22  typedef mat<4, 4, double, mediump> mediump_dmat4;
+
23 
+
28  typedef mat<4, 4, double, highp> highp_dmat4;
+
29 
+
34  typedef mat<4, 4, double, lowp> lowp_dmat4x4;
+
35 
+
40  typedef mat<4, 4, double, mediump> mediump_dmat4x4;
+
41 
+
46  typedef mat<4, 4, double, highp> highp_dmat4x4;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 4, double, highp > highp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, double, mediump > mediump_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, double, lowp > lowp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 4, 4, double, mediump > mediump_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, double, highp > highp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, double, lowp > lowp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00152.html b/include/glm/doc/api/a00152.html new file mode 100644 index 0000000..b8631ea --- /dev/null +++ b/include/glm/doc/api/a00152.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, float, defaultp > mat2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 2, float, defaultp > mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00152_source.html b/include/glm/doc/api/a00152_source.html new file mode 100644 index 0000000..8cbdf55 --- /dev/null +++ b/include/glm/doc/api/a00152_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 2, float, defaultp> mat2x2;
+
16 
+
20  typedef mat<2, 2, float, defaultp> mat2;
+
21 
+
23 }//namespace glm
+
+
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00155.html b/include/glm/doc/api/a00155.html new file mode 100644 index 0000000..b0d975c --- /dev/null +++ b/include/glm/doc/api/a00155.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, float, highp > highp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, highp > highp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00155_source.html b/include/glm/doc/api/a00155_source.html new file mode 100644 index 0000000..40984b3 --- /dev/null +++ b/include/glm/doc/api/a00155_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 2, float, lowp> lowp_mat2;
+
17 
+
22  typedef mat<2, 2, float, mediump> mediump_mat2;
+
23 
+
28  typedef mat<2, 2, float, highp> highp_mat2;
+
29 
+
34  typedef mat<2, 2, float, lowp> lowp_mat2x2;
+
35 
+
40  typedef mat<2, 2, float, mediump> mediump_mat2x2;
+
41 
+
46  typedef mat<2, 2, float, highp> highp_mat2x2;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 2, float, highp > highp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 2, 2, float, lowp > lowp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 2, 2, float, highp > highp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 2, 2, float, mediump > mediump_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, float, mediump > mediump_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, float, lowp > lowp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00158.html b/include/glm/doc/api/a00158.html new file mode 100644 index 0000000..9854794 --- /dev/null +++ b/include/glm/doc/api/a00158.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 3, float, defaultp > mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00158_source.html b/include/glm/doc/api/a00158_source.html new file mode 100644 index 0000000..2acfe62 --- /dev/null +++ b/include/glm/doc/api/a00158_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 3, float, defaultp> mat2x3;
+
16 
+
18 }//namespace glm
+
+
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00161.html b/include/glm/doc/api/a00161.html new file mode 100644 index 0000000..0b23cd3 --- /dev/null +++ b/include/glm/doc/api/a00161.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, float, highp > highp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, lowp > lowp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, mediump > mediump_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00161_source.html b/include/glm/doc/api/a00161_source.html new file mode 100644 index 0000000..33f55e3 --- /dev/null +++ b/include/glm/doc/api/a00161_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 3, float, lowp> lowp_mat2x3;
+
17 
+
22  typedef mat<2, 3, float, mediump> mediump_mat2x3;
+
23 
+
28  typedef mat<2, 3, float, highp> highp_mat2x3;
+
29 
+
31 }//namespace glm
+
+
mat< 2, 3, float, mediump > mediump_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 2, 3, float, lowp > lowp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 2, 3, float, highp > highp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+ + + + diff --git a/include/glm/doc/api/a00164.html b/include/glm/doc/api/a00164.html new file mode 100644 index 0000000..cdf35d4 --- /dev/null +++ b/include/glm/doc/api/a00164.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 4, float, defaultp > mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00164_source.html b/include/glm/doc/api/a00164_source.html new file mode 100644 index 0000000..81ebdf5 --- /dev/null +++ b/include/glm/doc/api/a00164_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<2, 4, float, defaultp> mat2x4;
+
16 
+
18 }//namespace glm
+
+
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00167.html b/include/glm/doc/api/a00167.html new file mode 100644 index 0000000..cb9a81e --- /dev/null +++ b/include/glm/doc/api/a00167.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float2x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, float, highp > highp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, lowp > lowp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, mediump > mediump_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00167_source.html b/include/glm/doc/api/a00167_source.html new file mode 100644 index 0000000..efdcd5a --- /dev/null +++ b/include/glm/doc/api/a00167_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float2x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float2x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<2, 4, float, lowp> lowp_mat2x4;
+
17 
+
22  typedef mat<2, 4, float, mediump> mediump_mat2x4;
+
23 
+
28  typedef mat<2, 4, float, highp> highp_mat2x4;
+
29 
+
31 }//namespace glm
+
+
mat< 2, 4, float, highp > highp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 2, 4, float, mediump > mediump_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 2, 4, float, lowp > lowp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00170.html b/include/glm/doc/api/a00170.html new file mode 100644 index 0000000..3d0d056 --- /dev/null +++ b/include/glm/doc/api/a00170.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 2, float, defaultp > mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00170_source.html b/include/glm/doc/api/a00170_source.html new file mode 100644 index 0000000..e66e87f --- /dev/null +++ b/include/glm/doc/api/a00170_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 2, float, defaultp> mat3x2;
+
16 
+
18 }//namespace glm
+
+
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00173.html b/include/glm/doc/api/a00173.html new file mode 100644 index 0000000..10b0629 --- /dev/null +++ b/include/glm/doc/api/a00173.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, float, highp > highp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, lowp > lowp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, mediump > mediump_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00173_source.html b/include/glm/doc/api/a00173_source.html new file mode 100644 index 0000000..248d68d --- /dev/null +++ b/include/glm/doc/api/a00173_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 2, float, lowp> lowp_mat3x2;
+
17 
+
22  typedef mat<3, 2, float, mediump> mediump_mat3x2;
+
23 
+
28  typedef mat<3, 2, float, highp> highp_mat3x2;
+
29 
+
31 }//namespace glm
+
+
mat< 3, 2, float, mediump > mediump_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 3, 2, float, highp > highp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 3, 2, float, lowp > lowp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00176.html b/include/glm/doc/api/a00176.html new file mode 100644 index 0000000..88fc37f --- /dev/null +++ b/include/glm/doc/api/a00176.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, float, defaultp > mat3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 3, float, defaultp > mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00176_source.html b/include/glm/doc/api/a00176_source.html new file mode 100644 index 0000000..8bd5c4b --- /dev/null +++ b/include/glm/doc/api/a00176_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 3, float, defaultp> mat3x3;
+
16 
+
20  typedef mat<3, 3, float, defaultp> mat3;
+
21 
+
23 }//namespace glm
+
+
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00179.html b/include/glm/doc/api/a00179.html new file mode 100644 index 0000000..339a7b5 --- /dev/null +++ b/include/glm/doc/api/a00179.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, float, highp > highp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, highp > highp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00179_source.html b/include/glm/doc/api/a00179_source.html new file mode 100644 index 0000000..0163258 --- /dev/null +++ b/include/glm/doc/api/a00179_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 3, float, lowp> lowp_mat3;
+
17 
+
22  typedef mat<3, 3, float, mediump> mediump_mat3;
+
23 
+
28  typedef mat<3, 3, float, highp> highp_mat3;
+
29 
+
34  typedef mat<3, 3, float, lowp> lowp_mat3x3;
+
35 
+
40  typedef mat<3, 3, float, mediump> mediump_mat3x3;
+
41 
+
46  typedef mat<3, 3, float, highp> highp_mat3x3;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 3, float, lowp > lowp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 3, 3, float, mediump > mediump_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, float, mediump > mediump_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, float, lowp > lowp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 3, 3, float, highp > highp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 3, 3, float, highp > highp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+ + + + diff --git a/include/glm/doc/api/a00182.html b/include/glm/doc/api/a00182.html new file mode 100644 index 0000000..9bdc12b --- /dev/null +++ b/include/glm/doc/api/a00182.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 4, float, defaultp > mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00182_source.html b/include/glm/doc/api/a00182_source.html new file mode 100644 index 0000000..7b02b11 --- /dev/null +++ b/include/glm/doc/api/a00182_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<3, 4, float, defaultp> mat3x4;
+
16 
+
18 }//namespace glm
+
+
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00185.html b/include/glm/doc/api/a00185.html new file mode 100644 index 0000000..031a76d --- /dev/null +++ b/include/glm/doc/api/a00185.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float3x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 3, 4, float, highp > highp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, lowp > lowp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, mediump > mediump_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00185_source.html b/include/glm/doc/api/a00185_source.html new file mode 100644 index 0000000..53b95c0 --- /dev/null +++ b/include/glm/doc/api/a00185_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float3x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float3x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat3x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<3, 4, float, lowp> lowp_mat3x4;
+
17 
+
22  typedef mat<3, 4, float, mediump> mediump_mat3x4;
+
23 
+
28  typedef mat<3, 4, float, highp> highp_mat3x4;
+
29 
+
31 }//namespace glm
+
+
mat< 3, 4, float, mediump > mediump_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 3, 4, float, highp > highp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 3, 4, float, lowp > lowp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00188.html b/include/glm/doc/api/a00188.html new file mode 100644 index 0000000..d610fa1 --- /dev/null +++ b/include/glm/doc/api/a00188.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float4x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 2, float, defaultp > mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00188_source.html b/include/glm/doc/api/a00188_source.html new file mode 100644 index 0000000..8c7fe3c --- /dev/null +++ b/include/glm/doc/api/a00188_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 2, float, defaultp> mat4x2;
+
16 
+
18 }//namespace glm
+
+
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00191_source.html b/include/glm/doc/api/a00191_source.html new file mode 100644 index 0000000..8fc5654 --- /dev/null +++ b/include/glm/doc/api/a00191_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x2_precision.hpp
+
+
+
1 
+
4 #pragma once
+
5 #include "../detail/type_mat2x2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 2, float, lowp> lowp_mat4x2;
+
17 
+
22  typedef mat<4, 2, float, mediump> mediump_mat4x2;
+
23 
+
28  typedef mat<4, 2, float, highp> highp_mat4x2;
+
29 
+
31 }//namespace glm
+
+
mat< 4, 2, float, mediump > mediump_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 2, float, highp > highp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 2, float, lowp > lowp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00194.html b/include/glm/doc/api/a00194.html new file mode 100644 index 0000000..3309f93 --- /dev/null +++ b/include/glm/doc/api/a00194.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float4x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 3, float, defaultp > mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00194_source.html b/include/glm/doc/api/a00194_source.html new file mode 100644 index 0000000..a4046a7 --- /dev/null +++ b/include/glm/doc/api/a00194_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 3, float, defaultp> mat4x3;
+
16 
+
18 }//namespace glm
+
+
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00197.html b/include/glm/doc/api/a00197.html new file mode 100644 index 0000000..0eaeb8d --- /dev/null +++ b/include/glm/doc/api/a00197.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float4x3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, float, highp > highp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, lowp > lowp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, mediump > mediump_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00197_source.html b/include/glm/doc/api/a00197_source.html new file mode 100644 index 0000000..a081a19 --- /dev/null +++ b/include/glm/doc/api/a00197_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 3, float, lowp> lowp_mat4x3;
+
17 
+
22  typedef mat<4, 3, float, mediump> mediump_mat4x3;
+
23 
+
28  typedef mat<4, 3, float, highp> highp_mat4x3;
+
29 
+
31 }//namespace glm
+
+
mat< 4, 3, float, lowp > lowp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 4, 3, float, highp > highp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 3, float, mediump > mediump_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+ + + + diff --git a/include/glm/doc/api/a00200.html b/include/glm/doc/api/a00200.html new file mode 100644 index 0000000..80fd610 --- /dev/null +++ b/include/glm/doc/api/a00200.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + +
typedef mat< 4, 4, float, defaultp > mat4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 4, float, defaultp > mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file matrix_float4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00200_source.html b/include/glm/doc/api/a00200_source.html new file mode 100644 index 0000000..2c3b6e3 --- /dev/null +++ b/include/glm/doc/api/a00200_source.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef mat<4, 4, float, defaultp> mat4x4;
+
16 
+
20  typedef mat<4, 4, float, defaultp> mat4;
+
21 
+
23 }//namespace glm
+
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00203.html b/include/glm/doc/api/a00203.html new file mode 100644 index 0000000..753cfd9 --- /dev/null +++ b/include/glm/doc/api/a00203.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_float4x4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, float, highp > highp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, highp > highp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00203_source.html b/include/glm/doc/api/a00203_source.html new file mode 100644 index 0000000..0953c9c --- /dev/null +++ b/include/glm/doc/api/a00203_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_float4x4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_float4x4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_mat4x4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef mat<4, 4, float, lowp> lowp_mat4;
+
17 
+
22  typedef mat<4, 4, float, mediump> mediump_mat4;
+
23 
+
28  typedef mat<4, 4, float, highp> highp_mat4;
+
29 
+
34  typedef mat<4, 4, float, lowp> lowp_mat4x4;
+
35 
+
40  typedef mat<4, 4, float, mediump> mediump_mat4x4;
+
41 
+
46  typedef mat<4, 4, float, highp> highp_mat4x4;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 4, float, highp > highp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 4, float, lowp > lowp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 4, 4, float, mediump > mediump_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, float, highp > highp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 4, float, mediump > mediump_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, float, lowp > lowp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+ + + + diff --git a/include/glm/doc/api/a00206.html b/include/glm/doc/api/a00206.html new file mode 100644 index 0000000..d99cb1d --- /dev/null +++ b/include/glm/doc/api/a00206.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x2 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, int, defaultp > imat2
 Signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, defaultp > imat2x2
 Signed integer 2x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00206_source.html b/include/glm/doc/api/a00206_source.html new file mode 100644 index 0000000..9145940 --- /dev/null +++ b/include/glm/doc/api/a00206_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int2x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 2, int, defaultp> imat2x2;
+
31 
+
35  typedef mat<2, 2, int, defaultp> imat2;
+
36 
+
38 }//namespace glm
+
+
mat< 2, 2, int, defaultp > imat2x2
Signed integer 2x2 matrix.
+
mat< 2, 2, int, defaultp > imat2
Signed integer 2x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00209.html b/include/glm/doc/api/a00209.html new file mode 100644 index 0000000..7d0c987 --- /dev/null +++ b/include/glm/doc/api/a00209.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, int16, defaultp > i16mat2
 16 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int16, defaultp > i16mat2x2
 16 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int32, defaultp > i32mat2
 32 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int32, defaultp > i32mat2x2
 32 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int64, defaultp > i64mat2
 64 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int64, defaultp > i64mat2x2
 64 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int8, defaultp > i8mat2
 8 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int8, defaultp > i8mat2x2
 8 bit signed integer 2x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x2_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x2_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00209_source.html b/include/glm/doc/api/a00209_source.html new file mode 100644 index 0000000..d595ffd --- /dev/null +++ b/include/glm/doc/api/a00209_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x2.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int2x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 2, int8, defaultp> i8mat2x2;
+
32 
+
36  typedef mat<2, 2, int16, defaultp> i16mat2x2;
+
37 
+
41  typedef mat<2, 2, int32, defaultp> i32mat2x2;
+
42 
+
46  typedef mat<2, 2, int64, defaultp> i64mat2x2;
+
47 
+
48 
+
52  typedef mat<2, 2, int8, defaultp> i8mat2;
+
53 
+
57  typedef mat<2, 2, int16, defaultp> i16mat2;
+
58 
+
62  typedef mat<2, 2, int32, defaultp> i32mat2;
+
63 
+
67  typedef mat<2, 2, int64, defaultp> i64mat2;
+
68 
+
70 }//namespace glm
+
+
mat< 2, 2, int16, defaultp > i16mat2x2
16 bit signed integer 2x2 matrix.
+
mat< 2, 2, int8, defaultp > i8mat2x2
8 bit signed integer 2x2 matrix.
+
mat< 2, 2, int32, defaultp > i32mat2x2
32 bit signed integer 2x2 matrix.
+
mat< 2, 2, int8, defaultp > i8mat2
8 bit signed integer 2x2 matrix.
+
mat< 2, 2, int64, defaultp > i64mat2x2
64 bit signed integer 2x2 matrix.
+
mat< 2, 2, int32, defaultp > i32mat2
32 bit signed integer 2x2 matrix.
+
mat< 2, 2, int64, defaultp > i64mat2
64 bit signed integer 2x2 matrix.
+
mat< 2, 2, int16, defaultp > i16mat2
16 bit signed integer 2x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00212.html b/include/glm/doc/api/a00212.html new file mode 100644 index 0000000..a02cb81 --- /dev/null +++ b/include/glm/doc/api/a00212.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x3 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 3, int, defaultp > imat2x3
 Signed integer 2x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00212_source.html b/include/glm/doc/api/a00212_source.html new file mode 100644 index 0000000..57ec5f4 --- /dev/null +++ b/include/glm/doc/api/a00212_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int2x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 3, int, defaultp> imat2x3;
+
31 
+
33 }//namespace glm
+
+
mat< 2, 3, int, defaultp > imat2x3
Signed integer 2x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00215.html b/include/glm/doc/api/a00215.html new file mode 100644 index 0000000..130ad33 --- /dev/null +++ b/include/glm/doc/api/a00215.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, int16, defaultp > i16mat2x3
 16 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int32, defaultp > i32mat2x3
 32 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int64, defaultp > i64mat2x3
 64 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int8, defaultp > i8mat2x3
 8 bit signed integer 2x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00215_source.html b/include/glm/doc/api/a00215_source.html new file mode 100644 index 0000000..87777c5 --- /dev/null +++ b/include/glm/doc/api/a00215_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x3.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int2x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 3, int8, defaultp> i8mat2x3;
+
32 
+
36  typedef mat<2, 3, int16, defaultp> i16mat2x3;
+
37 
+
41  typedef mat<2, 3, int32, defaultp> i32mat2x3;
+
42 
+
46  typedef mat<2, 3, int64, defaultp> i64mat2x3;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 3, int64, defaultp > i64mat2x3
64 bit signed integer 2x3 matrix.
+
mat< 2, 3, int16, defaultp > i16mat2x3
16 bit signed integer 2x3 matrix.
+
mat< 2, 3, int8, defaultp > i8mat2x3
8 bit signed integer 2x3 matrix.
+
mat< 2, 3, int32, defaultp > i32mat2x3
32 bit signed integer 2x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00218.html b/include/glm/doc/api/a00218.html new file mode 100644 index 0000000..dfbedaf --- /dev/null +++ b/include/glm/doc/api/a00218.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x4 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 4, int, defaultp > imat2x4
 Signed integer 2x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00218_source.html b/include/glm/doc/api/a00218_source.html new file mode 100644 index 0000000..5eee15f --- /dev/null +++ b/include/glm/doc/api/a00218_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int2x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 4, int, defaultp> imat2x4;
+
31 
+
33 }//namespace glm
+
+
mat< 2, 4, int, defaultp > imat2x4
Signed integer 2x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00221.html b/include/glm/doc/api/a00221.html new file mode 100644 index 0000000..18fc147 --- /dev/null +++ b/include/glm/doc/api/a00221.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int2x4_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, int16, defaultp > i16mat2x4
 16 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int32, defaultp > i32mat2x4
 32 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int64, defaultp > i64mat2x4
 64 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int8, defaultp > i8mat2x4
 8 bit signed integer 2x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x4_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int2x4_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00221_source.html b/include/glm/doc/api/a00221_source.html new file mode 100644 index 0000000..37439ae --- /dev/null +++ b/include/glm/doc/api/a00221_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int2x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int2x4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x4.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int2x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 4, int8, defaultp> i8mat2x4;
+
32 
+
36  typedef mat<2, 4, int16, defaultp> i16mat2x4;
+
37 
+
41  typedef mat<2, 4, int32, defaultp> i32mat2x4;
+
42 
+
46  typedef mat<2, 4, int64, defaultp> i64mat2x4;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 4, int8, defaultp > i8mat2x4
8 bit signed integer 2x4 matrix.
+
mat< 2, 4, int32, defaultp > i32mat2x4
32 bit signed integer 2x4 matrix.
+
mat< 2, 4, int64, defaultp > i64mat2x4
64 bit signed integer 2x4 matrix.
+
mat< 2, 4, int16, defaultp > i16mat2x4
16 bit signed integer 2x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00224.html b/include/glm/doc/api/a00224.html new file mode 100644 index 0000000..b29b207 --- /dev/null +++ b/include/glm/doc/api/a00224.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int3x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int3x2 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 2, int, defaultp > imat3x2
 Signed integer 3x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int3x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_int3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00224_source.html b/include/glm/doc/api/a00224_source.html new file mode 100644 index 0000000..013e32f --- /dev/null +++ b/include/glm/doc/api/a00224_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int3x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 2, int, defaultp> imat3x2;
+
31 
+
33 }//namespace glm
+
+
mat< 3, 2, int, defaultp > imat3x2
Signed integer 3x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00227.html b/include/glm/doc/api/a00227.html new file mode 100644 index 0000000..bcb8648 --- /dev/null +++ b/include/glm/doc/api/a00227.html @@ -0,0 +1,110 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int3x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int3x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, int16, defaultp > i16mat3x2
 16 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int32, defaultp > i32mat3x2
 32 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int64, defaultp > i64mat3x2
 64 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int8, defaultp > i8mat3x2
 8 bit signed integer 3x2 matrix. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00227_source.html b/include/glm/doc/api/a00227_source.html new file mode 100644 index 0000000..daf2a38 --- /dev/null +++ b/include/glm/doc/api/a00227_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x2.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int3x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 2, int8, defaultp> i8mat3x2;
+
32 
+
36  typedef mat<3, 2, int16, defaultp> i16mat3x2;
+
37 
+
41  typedef mat<3, 2, int32, defaultp> i32mat3x2;
+
42 
+
46  typedef mat<3, 2, int64, defaultp> i64mat3x2;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 2, int32, defaultp > i32mat3x2
32 bit signed integer 3x2 matrix.
+
mat< 3, 2, int64, defaultp > i64mat3x2
64 bit signed integer 3x2 matrix.
+
mat< 3, 2, int16, defaultp > i16mat3x2
16 bit signed integer 3x2 matrix.
+
mat< 3, 2, int8, defaultp > i8mat3x2
8 bit signed integer 3x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00230.html b/include/glm/doc/api/a00230.html new file mode 100644 index 0000000..78ca51f --- /dev/null +++ b/include/glm/doc/api/a00230.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int3x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int3x3 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, int, defaultp > imat3
 Signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int, defaultp > imat3x3
 Signed integer 3x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int3x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_int3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00230_source.html b/include/glm/doc/api/a00230_source.html new file mode 100644 index 0000000..95fe20c --- /dev/null +++ b/include/glm/doc/api/a00230_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int3x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 3, int, defaultp> imat3x3;
+
31 
+
35  typedef mat<3, 3, int, defaultp> imat3;
+
36 
+
38 }//namespace glm
+
+
mat< 3, 3, int, defaultp > imat3
Signed integer 3x3 matrix.
+
mat< 3, 3, int, defaultp > imat3x3
Signed integer 3x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00233.html b/include/glm/doc/api/a00233.html new file mode 100644 index 0000000..60f01a9 --- /dev/null +++ b/include/glm/doc/api/a00233.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int3x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int3x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, int16, defaultp > i16mat3
 16 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int16, defaultp > i16mat3x3
 16 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int32, defaultp > i32mat3
 32 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int32, defaultp > i32mat3x3
 32 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int64, defaultp > i64mat3
 64 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int64, defaultp > i64mat3x3
 64 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int8, defaultp > i8mat3
 8 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int8, defaultp > i8mat3x3
 8 bit signed integer 3x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int3x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int3x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00233_source.html b/include/glm/doc/api/a00233_source.html new file mode 100644 index 0000000..018b78f --- /dev/null +++ b/include/glm/doc/api/a00233_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x3.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int3x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 3, int8, defaultp> i8mat3x3;
+
32 
+
36  typedef mat<3, 3, int16, defaultp> i16mat3x3;
+
37 
+
41  typedef mat<3, 3, int32, defaultp> i32mat3x3;
+
42 
+
46  typedef mat<3, 3, int64, defaultp> i64mat3x3;
+
47 
+
48 
+
52  typedef mat<3, 3, int8, defaultp> i8mat3;
+
53 
+
57  typedef mat<3, 3, int16, defaultp> i16mat3;
+
58 
+
62  typedef mat<3, 3, int32, defaultp> i32mat3;
+
63 
+
67  typedef mat<3, 3, int64, defaultp> i64mat3;
+
68 
+
70 }//namespace glm
+
+
mat< 3, 3, int32, defaultp > i32mat3
32 bit signed integer 3x3 matrix.
+
mat< 3, 3, int32, defaultp > i32mat3x3
32 bit signed integer 3x3 matrix.
+
mat< 3, 3, int16, defaultp > i16mat3
16 bit signed integer 3x3 matrix.
+
mat< 3, 3, int8, defaultp > i8mat3
8 bit signed integer 3x3 matrix.
+
mat< 3, 3, int64, defaultp > i64mat3x3
64 bit signed integer 3x3 matrix.
+
mat< 3, 3, int16, defaultp > i16mat3x3
16 bit signed integer 3x3 matrix.
+
mat< 3, 3, int64, defaultp > i64mat3
64 bit signed integer 3x3 matrix.
+
mat< 3, 3, int8, defaultp > i8mat3x3
8 bit signed integer 3x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00236.html b/include/glm/doc/api/a00236.html new file mode 100644 index 0000000..bfc165f --- /dev/null +++ b/include/glm/doc/api/a00236.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int3x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int3x4 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 4, int, defaultp > imat3x4
 Signed integer 3x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int3x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_int3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00236_source.html b/include/glm/doc/api/a00236_source.html new file mode 100644 index 0000000..6622d5c --- /dev/null +++ b/include/glm/doc/api/a00236_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int3x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 4, int, defaultp> imat3x4;
+
31 
+
33 }//namespace glm
+
+
mat< 3, 4, int, defaultp > imat3x4
Signed integer 3x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00239_source.html b/include/glm/doc/api/a00239_source.html new file mode 100644 index 0000000..dc1c8d2 --- /dev/null +++ b/include/glm/doc/api/a00239_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int3x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int3x4_sized.hpp
+
+
+
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x4.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int3x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 4, int8, defaultp> i8mat3x4;
+
32 
+
36  typedef mat<3, 4, int16, defaultp> i16mat3x4;
+
37 
+
41  typedef mat<3, 4, int32, defaultp> i32mat3x4;
+
42 
+
46  typedef mat<3, 4, int64, defaultp> i64mat3x4;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 4, int32, defaultp > i32mat3x4
32 bit signed integer 3x4 matrix.
+
mat< 3, 4, int8, defaultp > i8mat3x4
8 bit signed integer 3x4 matrix.
+
mat< 3, 4, int64, defaultp > i64mat3x4
64 bit signed integer 3x4 matrix.
+
mat< 3, 4, int16, defaultp > i16mat3x4
16 bit signed integer 3x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00242.html b/include/glm/doc/api/a00242.html new file mode 100644 index 0000000..83ca1e9 --- /dev/null +++ b/include/glm/doc/api/a00242.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x2 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 2, int, defaultp > imat4x2
 Signed integer 4x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00242_source.html b/include/glm/doc/api/a00242_source.html new file mode 100644 index 0000000..b7756d1 --- /dev/null +++ b/include/glm/doc/api/a00242_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int4x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 2, int, defaultp> imat4x2;
+
31 
+
33 }//namespace glm
+
+
mat< 4, 2, int, defaultp > imat4x2
Signed integer 4x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00245.html b/include/glm/doc/api/a00245.html new file mode 100644 index 0000000..1e06c3a --- /dev/null +++ b/include/glm/doc/api/a00245.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 2, int16, defaultp > i16mat4x2
 16 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int32, defaultp > i32mat4x2
 32 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int64, defaultp > i64mat4x2
 64 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int8, defaultp > i8mat4x2
 8 bit signed integer 4x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x2_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x2_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00245_source.html b/include/glm/doc/api/a00245_source.html new file mode 100644 index 0000000..2dc27f1 --- /dev/null +++ b/include/glm/doc/api/a00245_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x2.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int4x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 2, int8, defaultp> i8mat4x2;
+
32 
+
36  typedef mat<4, 2, int16, defaultp> i16mat4x2;
+
37 
+
41  typedef mat<4, 2, int32, defaultp> i32mat4x2;
+
42 
+
46  typedef mat<4, 2, int64, defaultp> i64mat4x2;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 2, int16, defaultp > i16mat4x2
16 bit signed integer 4x2 matrix.
+
mat< 4, 2, int64, defaultp > i64mat4x2
64 bit signed integer 4x2 matrix.
+
mat< 4, 2, int8, defaultp > i8mat4x2
8 bit signed integer 4x2 matrix.
+
mat< 4, 2, int32, defaultp > i32mat4x2
32 bit signed integer 4x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00248.html b/include/glm/doc/api/a00248.html new file mode 100644 index 0000000..72bdc69 --- /dev/null +++ b/include/glm/doc/api/a00248.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x3 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 3, int, defaultp > imat4x3
 Signed integer 4x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00248_source.html b/include/glm/doc/api/a00248_source.html new file mode 100644 index 0000000..0483297 --- /dev/null +++ b/include/glm/doc/api/a00248_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int4x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 3, int, defaultp> imat4x3;
+
31 
+
33 }//namespace glm
+
+
mat< 4, 3, int, defaultp > imat4x3
Signed integer 4x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00251.html b/include/glm/doc/api/a00251.html new file mode 100644 index 0000000..5ea1d63 --- /dev/null +++ b/include/glm/doc/api/a00251.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, int16, defaultp > i16mat4x3
 16 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int32, defaultp > i32mat4x3
 32 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int64, defaultp > i64mat4x3
 64 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int8, defaultp > i8mat4x3
 8 bit signed integer 4x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00251_source.html b/include/glm/doc/api/a00251_source.html new file mode 100644 index 0000000..82fe1f4 --- /dev/null +++ b/include/glm/doc/api/a00251_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x3.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int4x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 3, int8, defaultp> i8mat4x3;
+
32 
+
36  typedef mat<4, 3, int16, defaultp> i16mat4x3;
+
37 
+
41  typedef mat<4, 3, int32, defaultp> i32mat4x3;
+
42 
+
46  typedef mat<4, 3, int64, defaultp> i64mat4x3;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 3, int32, defaultp > i32mat4x3
32 bit signed integer 4x3 matrix.
+
mat< 4, 3, int16, defaultp > i16mat4x3
16 bit signed integer 4x3 matrix.
+
mat< 4, 3, int64, defaultp > i64mat4x3
64 bit signed integer 4x3 matrix.
+
mat< 4, 3, int8, defaultp > i8mat4x3
8 bit signed integer 4x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00254.html b/include/glm/doc/api/a00254.html new file mode 100644 index 0000000..4420eb6 --- /dev/null +++ b/include/glm/doc/api/a00254.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x4 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 4, 4, int, defaultp > imat4
 Signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int, defaultp > imat4x4
 Signed integer 4x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00254_source.html b/include/glm/doc/api/a00254_source.html new file mode 100644 index 0000000..3d05152 --- /dev/null +++ b/include/glm/doc/api/a00254_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_int4x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 4, int, defaultp> imat4x4;
+
31 
+
35  typedef mat<4, 4, int, defaultp> imat4;
+
36 
+
38 }//namespace glm
+
+
mat< 4, 4, int, defaultp > imat4
Signed integer 4x4 matrix.
+
mat< 4, 4, int, defaultp > imat4x4
Signed integer 4x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00257.html b/include/glm/doc/api/a00257.html new file mode 100644 index 0000000..7d592c6 --- /dev/null +++ b/include/glm/doc/api/a00257.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_int4x4_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int4x4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, int16, defaultp > i16mat4
 16 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int16, defaultp > i16mat4x4
 16 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int32, defaultp > i32mat4
 32 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int32, defaultp > i32mat4x4
 32 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int64, defaultp > i64mat4
 64 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int64, defaultp > i64mat4x4
 64 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int8, defaultp > i8mat4
 8 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int8, defaultp > i8mat4x4
 8 bit signed integer 4x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int4x4_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_int4x4_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00257_source.html b/include/glm/doc/api/a00257_source.html new file mode 100644 index 0000000..16bb721 --- /dev/null +++ b/include/glm/doc/api/a00257_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_int4x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_int4x4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x4.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_int4x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 4, int8, defaultp> i8mat4x4;
+
32 
+
36  typedef mat<4, 4, int16, defaultp> i16mat4x4;
+
37 
+
41  typedef mat<4, 4, int32, defaultp> i32mat4x4;
+
42 
+
46  typedef mat<4, 4, int64, defaultp> i64mat4x4;
+
47 
+
48 
+
52  typedef mat<4, 4, int8, defaultp> i8mat4;
+
53 
+
57  typedef mat<4, 4, int16, defaultp> i16mat4;
+
58 
+
62  typedef mat<4, 4, int32, defaultp> i32mat4;
+
63 
+
67  typedef mat<4, 4, int64, defaultp> i64mat4;
+
68 
+
70 }//namespace glm
+
+
mat< 4, 4, int8, defaultp > i8mat4
8 bit signed integer 4x4 matrix.
+
mat< 4, 4, int16, defaultp > i16mat4
16 bit signed integer 4x4 matrix.
+
mat< 4, 4, int64, defaultp > i64mat4x4
64 bit signed integer 4x4 matrix.
+
mat< 4, 4, int32, defaultp > i32mat4
32 bit signed integer 4x4 matrix.
+
mat< 4, 4, int16, defaultp > i16mat4x4
16 bit signed integer 4x4 matrix.
+
mat< 4, 4, int8, defaultp > i8mat4x4
8 bit signed integer 4x4 matrix.
+
mat< 4, 4, int32, defaultp > i32mat4x4
32 bit signed integer 4x4 matrix.
+
mat< 4, 4, int64, defaultp > i64mat4
64 bit signed integer 4x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00263.html b/include/glm/doc/api/a00263.html new file mode 100644 index 0000000..1f06b70 --- /dev/null +++ b/include/glm/doc/api/a00263.html @@ -0,0 +1,124 @@ + + + + + + + +1.0.2 API documentation: matrix_projection.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_projection.hpp File Reference
+
+
+ +

GLM_EXT_matrix_projection +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q, typename U >
GLM_FUNC_DECL mat< 4, 4, T, Q > pickMatrix (vec< 2, T, Q > const &center, vec< 2, T, Q > const &delta, vec< 4, U, Q > const &viewport)
 Define a picking region. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > project (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near and far clip planes definition. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > projectNO (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > projectZO (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProject (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near and far clip planes definition. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProjectNO (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProjectZO (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00263_source.html b/include/glm/doc/api/a00263_source.html new file mode 100644 index 0000000..aefb678 --- /dev/null +++ b/include/glm/doc/api/a00263_source.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: matrix_projection.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_projection.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependencies
+
23 #include "../gtc/constants.hpp"
+
24 #include "../geometric.hpp"
+
25 #include "../trigonometric.hpp"
+
26 #include "../matrix.hpp"
+
27 
+
28 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
29 # pragma message("GLM: GLM_EXT_matrix_projection extension included")
+
30 #endif
+
31 
+
32 namespace glm
+
33 {
+
36 
+
49  template<typename T, typename U, qualifier Q>
+
50  GLM_FUNC_DECL vec<3, T, Q> projectZO(
+
51  vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
52 
+
65  template<typename T, typename U, qualifier Q>
+
66  GLM_FUNC_DECL vec<3, T, Q> projectNO(
+
67  vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
68 
+
81  template<typename T, typename U, qualifier Q>
+
82  GLM_FUNC_DECL vec<3, T, Q> project(
+
83  vec<3, T, Q> const& obj, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
84 
+
97  template<typename T, typename U, qualifier Q>
+
98  GLM_FUNC_DECL vec<3, T, Q> unProjectZO(
+
99  vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
100 
+
113  template<typename T, typename U, qualifier Q>
+
114  GLM_FUNC_DECL vec<3, T, Q> unProjectNO(
+
115  vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
116 
+
129  template<typename T, typename U, qualifier Q>
+
130  GLM_FUNC_DECL vec<3, T, Q> unProject(
+
131  vec<3, T, Q> const& win, mat<4, 4, T, Q> const& model, mat<4, 4, T, Q> const& proj, vec<4, U, Q> const& viewport);
+
132 
+
142  template<typename T, qualifier Q, typename U>
+
143  GLM_FUNC_DECL mat<4, 4, T, Q> pickMatrix(
+
144  vec<2, T, Q> const& center, vec<2, T, Q> const& delta, vec<4, U, Q> const& viewport);
+
145 
+
147 }//namespace glm
+
148 
+
149 #include "matrix_projection.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > projectZO(vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.
+
GLM_FUNC_DECL genType proj(genType const &x, genType const &Normal)
Projects x on Normal.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > pickMatrix(vec< 2, T, Q > const &center, vec< 2, T, Q > const &delta, vec< 4, U, Q > const &viewport)
Define a picking region.
+
GLM_FUNC_DECL vec< 3, T, Q > unProjectZO(vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.
+
GLM_FUNC_DECL vec< 3, T, Q > projectNO(vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.
+
GLM_FUNC_DECL vec< 3, T, Q > project(vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near...
+
GLM_FUNC_DECL vec< 3, T, Q > unProjectNO(vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.
+
GLM_FUNC_DECL vec< 3, T, Q > unProject(vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near...
+ + + + diff --git a/include/glm/doc/api/a00266.html b/include/glm/doc/api/a00266.html new file mode 100644 index 0000000..e016625 --- /dev/null +++ b/include/glm/doc/api/a00266.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: matrix_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_relational.hpp File Reference
+
+
+ +

GLM_EXT_matrix_relational +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Perform a component-wise equal-to comparison of two matrices. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Perform a component-wise not-equal-to comparison of two matrices. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00266_source.html b/include/glm/doc/api/a00266_source.html new file mode 100644 index 0000000..84fd5e7 --- /dev/null +++ b/include/glm/doc/api/a00266_source.html @@ -0,0 +1,130 @@ + + + + + + + +1.0.2 API documentation: matrix_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependencies
+
18 #include "../detail/qualifier.hpp"
+
19 
+
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_EXT_matrix_relational extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
36  template<length_t C, length_t R, typename T, qualifier Q>
+
37  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
+
38 
+
46  template<length_t C, length_t R, typename T, qualifier Q>
+
47  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
+
48 
+
56  template<length_t C, length_t R, typename T, qualifier Q>
+
57  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
+
58 
+
66  template<length_t C, length_t R, typename T, qualifier Q>
+
67  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
+
68 
+
76  template<length_t C, length_t R, typename T, qualifier Q>
+
77  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, T epsilon);
+
78 
+
86  template<length_t C, length_t R, typename T, qualifier Q>
+
87  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, T, Q> const& epsilon);
+
88 
+
96  template<length_t C, length_t R, typename T, qualifier Q>
+
97  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, int ULPs);
+
98 
+
106  template<length_t C, length_t R, typename T, qualifier Q>
+
107  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> equal(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, int, Q> const& ULPs);
+
108 
+
116  template<length_t C, length_t R, typename T, qualifier Q>
+
117  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, int ULPs);
+
118 
+
126  template<length_t C, length_t R, typename T, qualifier Q>
+
127  GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> notEqual(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y, vec<C, int, Q> const& ULPs);
+
128 
+
130 }//namespace glm
+
131 
+
132 #include "matrix_relational.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+ + + + diff --git a/include/glm/doc/api/a00272.html b/include/glm/doc/api/a00272.html new file mode 100644 index 0000000..7d5951c --- /dev/null +++ b/include/glm/doc/api/a00272.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint2x2 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, uint, defaultp > umat2
 Unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, defaultp > umat2x2
 Unsigned integer 2x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint2x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00272_source.html b/include/glm/doc/api/a00272_source.html new file mode 100644 index 0000000..8d5d9f3 --- /dev/null +++ b/include/glm/doc/api/a00272_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint2x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 2, uint, defaultp> umat2x2;
+
31 
+
35  typedef mat<2, 2, uint, defaultp> umat2;
+
36 
+
38 }//namespace glm
+
+
mat< 2, 2, uint, defaultp > umat2
Unsigned integer 2x2 matrix.
+
mat< 2, 2, uint, defaultp > umat2x2
Unsigned integer 2x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00275.html b/include/glm/doc/api/a00275.html new file mode 100644 index 0000000..ada8d3e --- /dev/null +++ b/include/glm/doc/api/a00275.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint2x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, uint16, defaultp > u16mat2
 16 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint16, defaultp > u16mat2x2
 16 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint32, defaultp > u32mat2
 32 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint32, defaultp > u32mat2x2
 32 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint64, defaultp > u64mat2
 64 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint64, defaultp > u64mat2x2
 64 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint8, defaultp > u8mat2
 8 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint8, defaultp > u8mat2x2
 8 bit unsigned integer 2x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint2x2_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x2_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00275_source.html b/include/glm/doc/api/a00275_source.html new file mode 100644 index 0000000..ca66085 --- /dev/null +++ b/include/glm/doc/api/a00275_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x2.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint2x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 2, uint8, defaultp> u8mat2x2;
+
32 
+
36  typedef mat<2, 2, uint16, defaultp> u16mat2x2;
+
37 
+
41  typedef mat<2, 2, uint32, defaultp> u32mat2x2;
+
42 
+
46  typedef mat<2, 2, uint64, defaultp> u64mat2x2;
+
47 
+
48 
+
52  typedef mat<2, 2, uint8, defaultp> u8mat2;
+
53 
+
57  typedef mat<2, 2, uint16, defaultp> u16mat2;
+
58 
+
62  typedef mat<2, 2, uint32, defaultp> u32mat2;
+
63 
+
67  typedef mat<2, 2, uint64, defaultp> u64mat2;
+
68 
+
70 }//namespace glm
+
+
mat< 2, 2, uint32, defaultp > u32mat2x2
32 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint64, defaultp > u64mat2
64 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint16, defaultp > u16mat2x2
16 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint8, defaultp > u8mat2x2
8 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint16, defaultp > u16mat2
16 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint32, defaultp > u32mat2
32 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint8, defaultp > u8mat2
8 bit unsigned integer 2x2 matrix.
+
mat< 2, 2, uint64, defaultp > u64mat2x2
64 bit unsigned integer 2x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00278.html b/include/glm/doc/api/a00278.html new file mode 100644 index 0000000..4139df8 --- /dev/null +++ b/include/glm/doc/api/a00278.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint2x3 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 3, uint, defaultp > umat2x3
 Unsigned integer 2x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint2x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00278_source.html b/include/glm/doc/api/a00278_source.html new file mode 100644 index 0000000..f63c82e --- /dev/null +++ b/include/glm/doc/api/a00278_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint2x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 3, uint, defaultp> umat2x3;
+
31 
+
33 }//namespace glm
+
+
mat< 2, 3, uint, defaultp > umat2x3
Unsigned integer 2x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00281.html b/include/glm/doc/api/a00281.html new file mode 100644 index 0000000..0b4b4f2 --- /dev/null +++ b/include/glm/doc/api/a00281.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint2x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, uint16, defaultp > u16mat2x3
 16 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint32, defaultp > u32mat2x3
 32 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint64, defaultp > u64mat2x3
 64 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint8, defaultp > u8mat2x3
 8 bit unsigned integer 2x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint2x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00281_source.html b/include/glm/doc/api/a00281_source.html new file mode 100644 index 0000000..5aa16e5 --- /dev/null +++ b/include/glm/doc/api/a00281_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x3.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint2x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 3, uint8, defaultp> u8mat2x3;
+
32 
+
36  typedef mat<2, 3, uint16, defaultp> u16mat2x3;
+
37 
+
41  typedef mat<2, 3, uint32, defaultp> u32mat2x3;
+
42 
+
46  typedef mat<2, 3, uint64, defaultp> u64mat2x3;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 3, uint16, defaultp > u16mat2x3
16 bit unsigned integer 2x3 matrix.
+
mat< 2, 3, uint8, defaultp > u8mat2x3
8 bit unsigned integer 2x3 matrix.
+
mat< 2, 3, uint64, defaultp > u64mat2x3
64 bit unsigned integer 2x3 matrix.
+
mat< 2, 3, uint32, defaultp > u32mat2x3
32 bit unsigned integer 2x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00284.html b/include/glm/doc/api/a00284.html new file mode 100644 index 0000000..24c73f8 --- /dev/null +++ b/include/glm/doc/api/a00284.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_int2x4 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 2, 4, uint, defaultp > umat2x4
 Unsigned integer 2x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_int2x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00284_source.html b/include/glm/doc/api/a00284_source.html new file mode 100644 index 0000000..491c5c3 --- /dev/null +++ b/include/glm/doc/api/a00284_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint2x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<2, 4, uint, defaultp> umat2x4;
+
31 
+
33 }//namespace glm
+
+
mat< 2, 4, uint, defaultp > umat2x4
Unsigned integer 2x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00287.html b/include/glm/doc/api/a00287.html new file mode 100644 index 0000000..f5eae87 --- /dev/null +++ b/include/glm/doc/api/a00287.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint2x4_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint2x4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, uint16, defaultp > u16mat2x4
 16 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint32, defaultp > u32mat2x4
 32 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint64, defaultp > u64mat2x4
 64 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint8, defaultp > u8mat2x4
 8 bit unsigned integer 2x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint2x4_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint2x4_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00287_source.html b/include/glm/doc/api/a00287_source.html new file mode 100644 index 0000000..c05f5cc --- /dev/null +++ b/include/glm/doc/api/a00287_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint2x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint2x4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x4.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint2x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<2, 4, uint8, defaultp> u8mat2x4;
+
32 
+
36  typedef mat<2, 4, uint16, defaultp> u16mat2x4;
+
37 
+
41  typedef mat<2, 4, uint32, defaultp> u32mat2x4;
+
42 
+
46  typedef mat<2, 4, uint64, defaultp> u64mat2x4;
+
47 
+
49 }//namespace glm
+
+
mat< 2, 4, uint8, defaultp > u8mat2x4
8 bit unsigned integer 2x4 matrix.
+
mat< 2, 4, uint16, defaultp > u16mat2x4
16 bit unsigned integer 2x4 matrix.
+
mat< 2, 4, uint32, defaultp > u32mat2x4
32 bit unsigned integer 2x4 matrix.
+
mat< 2, 4, uint64, defaultp > u64mat2x4
64 bit unsigned integer 2x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00290.html b/include/glm/doc/api/a00290.html new file mode 100644 index 0000000..fd96539 --- /dev/null +++ b/include/glm/doc/api/a00290.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint3x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint3x2 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 2, uint, defaultp > umat3x2
 Unsigned integer 3x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint3x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00290_source.html b/include/glm/doc/api/a00290_source.html new file mode 100644 index 0000000..d0a14b0 --- /dev/null +++ b/include/glm/doc/api/a00290_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint3x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 2, uint, defaultp> umat3x2;
+
31 
+
33 }//namespace glm
+
+
mat< 3, 2, uint, defaultp > umat3x2
Unsigned integer 3x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00293.html b/include/glm/doc/api/a00293.html new file mode 100644 index 0000000..8edd5d3 --- /dev/null +++ b/include/glm/doc/api/a00293.html @@ -0,0 +1,110 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint3x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint3x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, uint16, defaultp > u16mat3x2
 16 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint32, defaultp > u32mat3x2
 32 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint64, defaultp > u64mat3x2
 64 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint8, defaultp > u8mat3x2
 8 bit signed integer 3x2 matrix. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00293_source.html b/include/glm/doc/api/a00293_source.html new file mode 100644 index 0000000..4c26814 --- /dev/null +++ b/include/glm/doc/api/a00293_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x2.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint3x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 2, uint8, defaultp> u8mat3x2;
+
32 
+
36  typedef mat<3, 2, uint16, defaultp> u16mat3x2;
+
37 
+
41  typedef mat<3, 2, uint32, defaultp> u32mat3x2;
+
42 
+
46  typedef mat<3, 2, uint64, defaultp> u64mat3x2;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 2, uint8, defaultp > u8mat3x2
8 bit signed integer 3x2 matrix.
+
mat< 3, 2, uint64, defaultp > u64mat3x2
64 bit signed integer 3x2 matrix.
+
mat< 3, 2, uint16, defaultp > u16mat3x2
16 bit signed integer 3x2 matrix.
+
mat< 3, 2, uint32, defaultp > u32mat3x2
32 bit signed integer 3x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00296.html b/include/glm/doc/api/a00296.html new file mode 100644 index 0000000..0129762 --- /dev/null +++ b/include/glm/doc/api/a00296.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint3x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint3x3 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, uint, defaultp > umat3
 Unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint, defaultp > umat3x3
 Unsigned integer 3x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint3x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00296_source.html b/include/glm/doc/api/a00296_source.html new file mode 100644 index 0000000..2439ebb --- /dev/null +++ b/include/glm/doc/api/a00296_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint3x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 3, uint, defaultp> umat3x3;
+
31 
+
35  typedef mat<3, 3, uint, defaultp> umat3;
+
36 
+
38 }//namespace glm
+
+
mat< 3, 3, uint, defaultp > umat3
Unsigned integer 3x3 matrix.
+
mat< 3, 3, uint, defaultp > umat3x3
Unsigned integer 3x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00299.html b/include/glm/doc/api/a00299.html new file mode 100644 index 0000000..70d7d7b --- /dev/null +++ b/include/glm/doc/api/a00299.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint3x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint3x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, uint16, defaultp > u16mat3
 16 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint16, defaultp > u16mat3x3
 16 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint32, defaultp > u32mat3
 32 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint32, defaultp > u32mat3x3
 32 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint64, defaultp > u64mat3
 64 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint64, defaultp > u64mat3x3
 64 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint8, defaultp > u8mat3
 8 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint8, defaultp > u8mat3x3
 8 bit unsigned integer 3x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint3x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint3x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00299_source.html b/include/glm/doc/api/a00299_source.html new file mode 100644 index 0000000..6ad7c2c --- /dev/null +++ b/include/glm/doc/api/a00299_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x3.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint3x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 3, uint8, defaultp> u8mat3x3;
+
32 
+
36  typedef mat<3, 3, uint16, defaultp> u16mat3x3;
+
37 
+
41  typedef mat<3, 3, uint32, defaultp> u32mat3x3;
+
42 
+
46  typedef mat<3, 3, uint64, defaultp> u64mat3x3;
+
47 
+
48 
+
52  typedef mat<3, 3, uint8, defaultp> u8mat3;
+
53 
+
57  typedef mat<3, 3, uint16, defaultp> u16mat3;
+
58 
+
62  typedef mat<3, 3, uint32, defaultp> u32mat3;
+
63 
+
67  typedef mat<3, 3, uint64, defaultp> u64mat3;
+
68 
+
70 }//namespace glm
+
+
mat< 3, 3, uint8, defaultp > u8mat3
8 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint64, defaultp > u64mat3x3
64 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint32, defaultp > u32mat3
32 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint32, defaultp > u32mat3x3
32 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint64, defaultp > u64mat3
64 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint8, defaultp > u8mat3x3
8 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint16, defaultp > u16mat3x3
16 bit unsigned integer 3x3 matrix.
+
mat< 3, 3, uint16, defaultp > u16mat3
16 bit unsigned integer 3x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00302.html b/include/glm/doc/api/a00302.html new file mode 100644 index 0000000..abaff3b --- /dev/null +++ b/include/glm/doc/api/a00302.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint3x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint3x4 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 3, 4, uint, defaultp > umat3x4
 Signed integer 3x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint3x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00302_source.html b/include/glm/doc/api/a00302_source.html new file mode 100644 index 0000000..0923bd4 --- /dev/null +++ b/include/glm/doc/api/a00302_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint3x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<3, 4, uint, defaultp> umat3x4;
+
31 
+
33 }//namespace glm
+
+
mat< 3, 4, uint, defaultp > umat3x4
Signed integer 3x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00305_source.html b/include/glm/doc/api/a00305_source.html new file mode 100644 index 0000000..4e5ce61 --- /dev/null +++ b/include/glm/doc/api/a00305_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint3x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint3x4_sized.hpp
+
+
+
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat3x4.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint3x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<3, 4, uint8, defaultp> u8mat3x4;
+
32 
+
36  typedef mat<3, 4, uint16, defaultp> u16mat3x4;
+
37 
+
41  typedef mat<3, 4, uint32, defaultp> u32mat3x4;
+
42 
+
46  typedef mat<3, 4, uint64, defaultp> u64mat3x4;
+
47 
+
49 }//namespace glm
+
+
mat< 3, 4, uint8, defaultp > u8mat3x4
8 bit unsigned integer 3x4 matrix.
+
mat< 3, 4, uint16, defaultp > u16mat3x4
16 bit unsigned integer 3x4 matrix.
+
mat< 3, 4, uint32, defaultp > u32mat3x4
32 bit unsigned integer 3x4 matrix.
+
mat< 3, 4, uint64, defaultp > u64mat3x4
64 bit unsigned integer 3x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00308.html b/include/glm/doc/api/a00308.html new file mode 100644 index 0000000..12cc7a1 --- /dev/null +++ b/include/glm/doc/api/a00308.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x2.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x2 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 2, uint, defaultp > umat4x2
 Unsigned integer 4x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x2

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00308_source.html b/include/glm/doc/api/a00308_source.html new file mode 100644 index 0000000..5c0e3fa --- /dev/null +++ b/include/glm/doc/api/a00308_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x2.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint4x2 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 2, uint, defaultp> umat4x2;
+
31 
+
33 }//namespace glm
+
+
mat< 4, 2, uint, defaultp > umat4x2
Unsigned integer 4x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00311.html b/include/glm/doc/api/a00311.html new file mode 100644 index 0000000..dced9be --- /dev/null +++ b/include/glm/doc/api/a00311.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x2_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 2, uint16, defaultp > u16mat4x2
 16 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint32, defaultp > u32mat4x2
 32 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint64, defaultp > u64mat4x2
 64 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint8, defaultp > u8mat4x2
 8 bit unsigned integer 4x2 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x2_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x2_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00311_source.html b/include/glm/doc/api/a00311_source.html new file mode 100644 index 0000000..2efe016 --- /dev/null +++ b/include/glm/doc/api/a00311_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x2.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint4x2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 2, uint8, defaultp> u8mat4x2;
+
32 
+
36  typedef mat<4, 2, uint16, defaultp> u16mat4x2;
+
37 
+
41  typedef mat<4, 2, uint32, defaultp> u32mat4x2;
+
42 
+
46  typedef mat<4, 2, uint64, defaultp> u64mat4x2;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 2, uint16, defaultp > u16mat4x2
16 bit unsigned integer 4x2 matrix.
+
mat< 4, 2, uint64, defaultp > u64mat4x2
64 bit unsigned integer 4x2 matrix.
+
mat< 4, 2, uint8, defaultp > u8mat4x2
8 bit unsigned integer 4x2 matrix.
+
mat< 4, 2, uint32, defaultp > u32mat4x2
32 bit unsigned integer 4x2 matrix.
+ + + + diff --git a/include/glm/doc/api/a00314.html b/include/glm/doc/api/a00314.html new file mode 100644 index 0000000..361582f --- /dev/null +++ b/include/glm/doc/api/a00314.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x3.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x3 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef mat< 4, 3, uint, defaultp > umat4x3
 Unsigned integer 4x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x3

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00314_source.html b/include/glm/doc/api/a00314_source.html new file mode 100644 index 0000000..9dd62ab --- /dev/null +++ b/include/glm/doc/api/a00314_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x3.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x3.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint4x3 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 3, uint, defaultp> umat4x3;
+
31 
+
33 }//namespace glm
+
+
mat< 4, 3, uint, defaultp > umat4x3
Unsigned integer 4x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00317.html b/include/glm/doc/api/a00317.html new file mode 100644 index 0000000..fb8467a --- /dev/null +++ b/include/glm/doc/api/a00317.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x3_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, uint16, defaultp > u16mat4x3
 16 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint32, defaultp > u32mat4x3
 32 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint64, defaultp > u64mat4x3
 64 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint8, defaultp > u8mat4x3
 8 bit unsigned integer 4x3 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x3_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x3_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00317_source.html b/include/glm/doc/api/a00317_source.html new file mode 100644 index 0000000..51323f8 --- /dev/null +++ b/include/glm/doc/api/a00317_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x3.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint4x3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 3, uint8, defaultp> u8mat4x3;
+
32 
+
36  typedef mat<4, 3, uint16, defaultp> u16mat4x3;
+
37 
+
41  typedef mat<4, 3, uint32, defaultp> u32mat4x3;
+
42 
+
46  typedef mat<4, 3, uint64, defaultp> u64mat4x3;
+
47 
+
49 }//namespace glm
+
+
mat< 4, 3, uint8, defaultp > u8mat4x3
8 bit unsigned integer 4x3 matrix.
+
mat< 4, 3, uint32, defaultp > u32mat4x3
32 bit unsigned integer 4x3 matrix.
+
mat< 4, 3, uint16, defaultp > u16mat4x3
16 bit unsigned integer 4x3 matrix.
+
mat< 4, 3, uint64, defaultp > u64mat4x3
64 bit unsigned integer 4x3 matrix.
+ + + + diff --git a/include/glm/doc/api/a00320.html b/include/glm/doc/api/a00320.html new file mode 100644 index 0000000..846e638 --- /dev/null +++ b/include/glm/doc/api/a00320.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x4.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x4 +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Typedefs

typedef mat< 4, 4, uint, defaultp > umat4
 Unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint, defaultp > umat4x4
 Unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x4

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00320_source.html b/include/glm/doc/api/a00320_source.html new file mode 100644 index 0000000..8a73c01 --- /dev/null +++ b/include/glm/doc/api/a00320_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x4.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x4.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_matrix_uint4x4 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
30  typedef mat<4, 4, uint, defaultp> umat4x4;
+
31 
+
35  typedef mat<4, 4, uint, defaultp> umat4;
+
36 
+
38 }//namespace glm
+
+
mat< 4, 4, uint, defaultp > umat4
Unsigned integer 4x4 matrix.
+
mat< 4, 4, uint, defaultp > umat4x4
Unsigned integer 4x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00323.html b/include/glm/doc/api/a00323.html new file mode 100644 index 0000000..a900833 --- /dev/null +++ b/include/glm/doc/api/a00323.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_uint4x4_sized.hpp File Reference
+
+
+ +

GLM_EXT_matrix_uint4x4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, uint16, defaultp > u16mat4
 16 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint16, defaultp > u16mat4x4
 16 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint32, defaultp > u32mat4
 32 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint32, defaultp > u32mat4x4
 32 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint64, defaultp > u64mat4
 64 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint64, defaultp > u64mat4x4
 64 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint8, defaultp > u8mat4
 8 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint8, defaultp > u8mat4x4
 8 bit unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

GLM_EXT_matrix_uint4x4_sized

+
See also
Core features (dependence)
+ +

Definition in file matrix_uint4x4_sized.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00323_source.html b/include/glm/doc/api/a00323_source.html new file mode 100644 index 0000000..ac05ac3 --- /dev/null +++ b/include/glm/doc/api/a00323_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_uint4x4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_uint4x4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat4x4.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_matrix_uint4x4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef mat<4, 4, uint8, defaultp> u8mat4x4;
+
32 
+
36  typedef mat<4, 4, uint16, defaultp> u16mat4x4;
+
37 
+
41  typedef mat<4, 4, uint32, defaultp> u32mat4x4;
+
42 
+
46  typedef mat<4, 4, uint64, defaultp> u64mat4x4;
+
47 
+
48 
+
52  typedef mat<4, 4, uint8, defaultp> u8mat4;
+
53 
+
57  typedef mat<4, 4, uint16, defaultp> u16mat4;
+
58 
+
62  typedef mat<4, 4, uint32, defaultp> u32mat4;
+
63 
+
67  typedef mat<4, 4, uint64, defaultp> u64mat4;
+
68 
+
70 }//namespace glm
+
+
mat< 4, 4, uint8, defaultp > u8mat4x4
8 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint16, defaultp > u16mat4x4
16 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint16, defaultp > u16mat4
16 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint8, defaultp > u8mat4
8 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint32, defaultp > u32mat4x4
32 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint32, defaultp > u32mat4
32 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint64, defaultp > u64mat4x4
64 bit unsigned integer 4x4 matrix.
+
mat< 4, 4, uint64, defaultp > u64mat4
64 bit unsigned integer 4x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a00326.html b/include/glm/doc/api/a00326.html new file mode 100644 index 0000000..7c43015 --- /dev/null +++ b/include/glm/doc/api/a00326.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: quaternion_common.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_common.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_common +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > conjugate (qua< T, Q > const &q)
 Returns the q conjugate. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > inverse (qua< T, Q > const &q)
 Returns the q inverse. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isinf (qua< T, Q > const &x)
 Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isnan (qua< T, Q > const &x)
 Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > lerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Linear interpolation of two quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > mix (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Spherical linear interpolation of two quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Spherical linear interpolation of two quaternions. More...
 
template<typename T , typename S , qualifier Q>
GLM_FUNC_DECL qua< T, Q > slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)
 Spherical linear interpolation of two quaternions with multiple spins over rotation axis. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00326_source.html b/include/glm/doc/api/a00326_source.html new file mode 100644 index 0000000..618eb8d --- /dev/null +++ b/include/glm/doc/api/a00326_source.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: quaternion_common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_common.hpp
+
+
+Go to the documentation of this file.
1 
+
21 #pragma once
+
22 
+
23 // Dependency:
+
24 #include "../ext/scalar_constants.hpp"
+
25 #include "../ext/quaternion_geometric.hpp"
+
26 #include "../common.hpp"
+
27 #include "../trigonometric.hpp"
+
28 #include "../exponential.hpp"
+
29 #include <limits>
+
30 
+
31 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
32 # pragma message("GLM: GLM_EXT_quaternion_common extension included")
+
33 #endif
+
34 
+
35 namespace glm
+
36 {
+
39 
+
52  template<typename T, qualifier Q>
+
53  GLM_FUNC_DECL qua<T, Q> mix(qua<T, Q> const& x, qua<T, Q> const& y, T a);
+
54 
+
64  template<typename T, qualifier Q>
+
65  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> lerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);
+
66 
+
76  template<typename T, qualifier Q>
+
77  GLM_FUNC_DECL qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a);
+
78 
+
91  template<typename T, typename S, qualifier Q>
+
92  GLM_FUNC_DECL qua<T, Q> slerp(qua<T, Q> const& x, qua<T, Q> const& y, T a, S k);
+
93 
+
98  template<typename T, qualifier Q>
+
99  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> conjugate(qua<T, Q> const& q);
+
100 
+
105  template<typename T, qualifier Q>
+
106  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> inverse(qua<T, Q> const& q);
+
107 
+
118  template<typename T, qualifier Q>
+
119  GLM_FUNC_DECL vec<4, bool, Q> isnan(qua<T, Q> const& x);
+
120 
+
129  template<typename T, qualifier Q>
+
130  GLM_FUNC_DECL vec<4, bool, Q> isinf(qua<T, Q> const& x);
+
131 
+
133 } //namespace glm
+
134 
+
135 #include "quaternion_common.inl"
+
+
GLM_FUNC_DECL vec< 4, bool, Q > isinf(qua< T, Q > const &x)
Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...
+
GLM_FUNC_DECL qua< T, Q > slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)
Spherical linear interpolation of two quaternions with multiple spins over rotation axis.
+
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > inverse(qua< T, Q > const &q)
Returns the q inverse.
+
GLM_FUNC_DECL vec< 4, bool, Q > isnan(qua< T, Q > const &x)
Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...
+
GLM_FUNC_DECL qua< T, Q > mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Spherical linear interpolation of two quaternions.
+
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > conjugate(qua< T, Q > const &q)
Returns the q conjugate.
+
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)
Linear interpolation of two quaternions.
+ + + + diff --git a/include/glm/doc/api/a00329.html b/include/glm/doc/api/a00329.html new file mode 100644 index 0000000..eaf82d1 --- /dev/null +++ b/include/glm/doc/api/a00329.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: quaternion_double.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_double.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_double +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef qua< double, defaultp > dquat
 Quaternion of double-precision floating-point numbers.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00329_source.html b/include/glm/doc/api/a00329_source.html new file mode 100644 index 0000000..b278a9b --- /dev/null +++ b/include/glm/doc/api/a00329_source.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: quaternion_double.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_double.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependency:
+
23 #include "../detail/type_quat.hpp"
+
24 
+
25 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_EXT_quaternion_double extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
35  typedef qua<double, defaultp> dquat;
+
36 
+
38 } //namespace glm
+
39 
+
+
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00332.html b/include/glm/doc/api/a00332.html new file mode 100644 index 0000000..7101d8a --- /dev/null +++ b/include/glm/doc/api/a00332.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: quaternion_double_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_double_precision.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_double_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef qua< double, highp > highp_dquat
 Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef qua< double, lowp > lowp_dquat
 Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef qua< double, mediump > mediump_dquat
 Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00332_source.html b/include/glm/doc/api/a00332_source.html new file mode 100644 index 0000000..b20cfad --- /dev/null +++ b/include/glm/doc/api/a00332_source.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: quaternion_double_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_double_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 // Dependency:
+
14 #include "../detail/type_quat.hpp"
+
15 
+
16 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
17 # pragma message("GLM: GLM_EXT_quaternion_double_precision extension included")
+
18 #endif
+
19 
+
20 namespace glm
+
21 {
+
24 
+
28  typedef qua<double, lowp> lowp_dquat;
+
29 
+
33  typedef qua<double, mediump> mediump_dquat;
+
34 
+
38  typedef qua<double, highp> highp_dquat;
+
39 
+
41 } //namespace glm
+
42 
+
+
qua< double, highp > highp_dquat
Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of...
+
qua< double, mediump > mediump_dquat
Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term ...
+
qua< double, lowp > lowp_dquat
Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs...
+ + + + diff --git a/include/glm/doc/api/a00335.html b/include/glm/doc/api/a00335.html new file mode 100644 index 0000000..8655aff --- /dev/null +++ b/include/glm/doc/api/a00335.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: quaternion_exponential.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_exponential.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_exponential +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > exp (qua< T, Q > const &q)
 Returns a exponential of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > log (qua< T, Q > const &q)
 Returns a logarithm of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > pow (qua< T, Q > const &q, T y)
 Returns a quaternion raised to a power. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > sqrt (qua< T, Q > const &q)
 Returns the square root of a quaternion. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00335_source.html b/include/glm/doc/api/a00335_source.html new file mode 100644 index 0000000..7270062 --- /dev/null +++ b/include/glm/doc/api/a00335_source.html @@ -0,0 +1,116 @@ + + + + + + + +1.0.2 API documentation: quaternion_exponential.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../common.hpp"
+
19 #include "../trigonometric.hpp"
+
20 #include "../geometric.hpp"
+
21 #include "../ext/scalar_constants.hpp"
+
22 
+
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_EXT_quaternion_exponential extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
36  template<typename T, qualifier Q>
+
37  GLM_FUNC_DECL qua<T, Q> exp(qua<T, Q> const& q);
+
38 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL qua<T, Q> log(qua<T, Q> const& q);
+
45 
+
50  template<typename T, qualifier Q>
+
51  GLM_FUNC_DECL qua<T, Q> pow(qua<T, Q> const& q, T y);
+
52 
+
57  template<typename T, qualifier Q>
+
58  GLM_FUNC_DECL qua<T, Q> sqrt(qua<T, Q> const& q);
+
59 
+
61 } //namespace glm
+
62 
+
63 #include "quaternion_exponential.inl"
+
+
GLM_FUNC_DECL qua< T, Q > pow(qua< T, Q > const &q, T y)
Returns a quaternion raised to a power.
+
GLM_FUNC_DECL qua< T, Q > log(qua< T, Q > const &q)
Returns a logarithm of a quaternion.
+
GLM_FUNC_DECL qua< T, Q > sqrt(qua< T, Q > const &q)
Returns the square root of a quaternion.
+
GLM_FUNC_DECL qua< T, Q > exp(qua< T, Q > const &q)
Returns a exponential of a quaternion.
+ + + + diff --git a/include/glm/doc/api/a00338.html b/include/glm/doc/api/a00338.html new file mode 100644 index 0000000..b3475a2 --- /dev/null +++ b/include/glm/doc/api/a00338.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: quaternion_float.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_float.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_float +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef qua< float, defaultp > quat
 Quaternion of single-precision floating-point numbers.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00338_source.html b/include/glm/doc/api/a00338_source.html new file mode 100644 index 0000000..442556b --- /dev/null +++ b/include/glm/doc/api/a00338_source.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: quaternion_float.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_float.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependency:
+
23 #include "../detail/type_quat.hpp"
+
24 
+
25 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_EXT_quaternion_float extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
35  typedef qua<float, defaultp> quat;
+
36 
+
38 } //namespace glm
+
39 
+
+
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00341.html b/include/glm/doc/api/a00341.html new file mode 100644 index 0000000..d70e43b --- /dev/null +++ b/include/glm/doc/api/a00341.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: quaternion_float_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_float_precision.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_float_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

+typedef qua< float, highp > highp_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, lowp > lowp_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, mediump > mediump_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00341_source.html b/include/glm/doc/api/a00341_source.html new file mode 100644 index 0000000..1212523 --- /dev/null +++ b/include/glm/doc/api/a00341_source.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: quaternion_float_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_float_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 // Dependency:
+
14 #include "../detail/type_quat.hpp"
+
15 
+
16 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
17 # pragma message("GLM: GLM_EXT_quaternion_float_precision extension included")
+
18 #endif
+
19 
+
20 namespace glm
+
21 {
+
24 
+
26  typedef qua<float, lowp> lowp_quat;
+
27 
+
29  typedef qua<float, mediump> mediump_quat;
+
30 
+
32  typedef qua<float, highp> highp_quat;
+
33 
+
35 } //namespace glm
+
36 
+
+
qua< float, lowp > lowp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
qua< float, mediump > mediump_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
qua< float, highp > highp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+ + + + diff --git a/include/glm/doc/api/a00344.html b/include/glm/doc/api/a00344.html new file mode 100644 index 0000000..63877c9 --- /dev/null +++ b/include/glm/doc/api/a00344.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: quaternion_geometric.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_geometric.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_geometric +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua< T, Q > cross (qua< T, Q > const &q1, qua< T, Q > const &q2)
 Compute a cross product. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T dot (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ... More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T length (qua< T, Q > const &q)
 Returns the norm of a quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > normalize (qua< T, Q > const &q)
 Returns the normalized quaternion. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00344_source.html b/include/glm/doc/api/a00344_source.html new file mode 100644 index 0000000..b48509a --- /dev/null +++ b/include/glm/doc/api/a00344_source.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: quaternion_geometric.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_geometric.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../geometric.hpp"
+
19 #include "../exponential.hpp"
+
20 #include "../ext/vector_relational.hpp"
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_EXT_quaternion_geometric extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL T length(qua<T, Q> const& q);
+
39 
+
46  template<typename T, qualifier Q>
+
47  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> normalize(qua<T, Q> const& q);
+
48 
+
55  template<typename T, qualifier Q>
+
56  GLM_FUNC_DECL GLM_CONSTEXPR T dot(qua<T, Q> const& x, qua<T, Q> const& y);
+
57 
+
64  template<typename T, qualifier Q>
+
65  GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> cross(qua<T, Q> const& q1, qua<T, Q> const& q2);
+
66 
+
68 } //namespace glm
+
69 
+
70 #include "quaternion_geometric.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR T dot(qua< T, Q > const &x, qua< T, Q > const &y)
Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > normalize(qua< T, Q > const &q)
Returns the normalized quaternion.
+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua< T, Q > cross(qua< T, Q > const &q1, qua< T, Q > const &q2)
Compute a cross product.
+ + + + diff --git a/include/glm/doc/api/a00347.html b/include/glm/doc/api/a00347.html new file mode 100644 index 0000000..301cc7a --- /dev/null +++ b/include/glm/doc/api/a00347.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: quaternion_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_relational.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_relational +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > equal (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x == y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > equal (qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > notEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x != y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > notEqual (qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00347_source.html b/include/glm/doc/api/a00347_source.html new file mode 100644 index 0000000..98bf3d5 --- /dev/null +++ b/include/glm/doc/api/a00347_source.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: quaternion_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
17 #pragma once
+
18 
+
19 // Dependency:
+
20 #include "../vector_relational.hpp"
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_EXT_quaternion_relational extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
35  template<typename T, qualifier Q>
+
36  GLM_FUNC_DECL vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y);
+
37 
+
42  template<typename T, qualifier Q>
+
43  GLM_FUNC_DECL vec<4, bool, Q> equal(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon);
+
44 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y);
+
51 
+
56  template<typename T, qualifier Q>
+
57  GLM_FUNC_DECL vec<4, bool, Q> notEqual(qua<T, Q> const& x, qua<T, Q> const& y, T epsilon);
+
58 
+
60 } //namespace glm
+
61 
+
62 #include "quaternion_relational.inl"
+
+
GLM_FUNC_DECL vec< 4, bool, Q > notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
Returns the component-wise comparison of |x - y| >= epsilon.
+
GLM_FUNC_DECL vec< 4, bool, Q > equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
Returns the component-wise comparison of |x - y| < epsilon.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+ + + + diff --git a/include/glm/doc/api/a00350.html b/include/glm/doc/api/a00350.html new file mode 100644 index 0000000..1cb341a --- /dev/null +++ b/include/glm/doc/api/a00350.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: quaternion_transform.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_transform.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_transform +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotate (qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
 Rotates a quaternion from a vector of 3 components axis and an angle. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00350_source.html b/include/glm/doc/api/a00350_source.html new file mode 100644 index 0000000..6d8bf5e --- /dev/null +++ b/include/glm/doc/api/a00350_source.html @@ -0,0 +1,104 @@ + + + + + + + +1.0.2 API documentation: quaternion_transform.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_transform.hpp
+
+
+Go to the documentation of this file.
1 
+
18 #pragma once
+
19 
+
20 // Dependency:
+
21 #include "../common.hpp"
+
22 #include "../trigonometric.hpp"
+
23 #include "../geometric.hpp"
+
24 
+
25 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_EXT_quaternion_transform extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
42  template<typename T, qualifier Q>
+
43  GLM_FUNC_DECL qua<T, Q> rotate(qua<T, Q> const& q, T const& angle, vec<3, T, Q> const& axis);
+
45 } //namespace glm
+
46 
+
47 #include "quaternion_transform.inl"
+
+
GLM_FUNC_DECL qua< T, Q > rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
Rotates a quaternion from a vector of 3 components axis and an angle.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
+ + + + diff --git a/include/glm/doc/api/a00353.html b/include/glm/doc/api/a00353.html new file mode 100644 index 0000000..00acfb3 --- /dev/null +++ b/include/glm/doc/api/a00353.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: quaternion_trigonometric.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
quaternion_trigonometric.hpp File Reference
+
+
+ +

GLM_EXT_quaternion_trigonometric +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL T angle (qua< T, Q > const &x)
 Returns the quaternion rotation angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > angleAxis (T const &angle, vec< 3, T, Q > const &axis)
 Build a quaternion from an angle and a normalized axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > axis (qua< T, Q > const &x)
 Returns the q rotation axis. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00353_source.html b/include/glm/doc/api/a00353_source.html new file mode 100644 index 0000000..831d02b --- /dev/null +++ b/include/glm/doc/api/a00353_source.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: quaternion_trigonometric.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
quaternion_trigonometric.hpp
+
+
+Go to the documentation of this file.
1 
+
18 #pragma once
+
19 
+
20 // Dependency:
+
21 #include "../trigonometric.hpp"
+
22 #include "../exponential.hpp"
+
23 #include "scalar_constants.hpp"
+
24 #include "vector_relational.hpp"
+
25 #include <limits>
+
26 
+
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
28 # pragma message("GLM: GLM_EXT_quaternion_trigonometric extension included")
+
29 #endif
+
30 
+
31 namespace glm
+
32 {
+
35 
+
42  template<typename T, qualifier Q>
+
43  GLM_FUNC_DECL T angle(qua<T, Q> const& x);
+
44 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL vec<3, T, Q> axis(qua<T, Q> const& x);
+
51 
+
59  template<typename T, qualifier Q>
+
60  GLM_FUNC_DECL qua<T, Q> angleAxis(T const& angle, vec<3, T, Q> const& axis);
+
61 
+
63 } //namespace glm
+
64 
+
65 #include "quaternion_trigonometric.inl"
+
+
GLM_EXT_scalar_constants
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL qua< T, Q > angleAxis(T const &angle, vec< 3, T, Q > const &axis)
Build a quaternion from an angle and a normalized axis.
+ +
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
+ + + + diff --git a/include/glm/doc/api/a00356.html b/include/glm/doc/api/a00356.html new file mode 100644 index 0000000..2898ce4 --- /dev/null +++ b/include/glm/doc/api/a00356.html @@ -0,0 +1,164 @@ + + + + + + + +1.0.2 API documentation: scalar_common.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_common.hpp File Reference
+
+
+ +

GLM_EXT_scalar_common +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType fclamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b)
 Returns the maximum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b, T C)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b, T C, T D)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b)
 Returns the minimum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename genType >
GLM_FUNC_DECL int iround (genType const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<typename T >
GLM_FUNC_DECL T() max (T a, T b, T c)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() max (T a, T b, T c, T d)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() min (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() min (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL uint uround (genType const &x)
 Returns a value equal to the nearest integer to x. More...
 
+

Detailed Description

+

GLM_EXT_scalar_common

+ +

Definition in file scalar_common.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00356_source.html b/include/glm/doc/api/a00356_source.html new file mode 100644 index 0000000..9c260e8 --- /dev/null +++ b/include/glm/doc/api/a00356_source.html @@ -0,0 +1,159 @@ + + + + + + + +1.0.2 API documentation: scalar_common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_common.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../common.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_scalar_common extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
33  template<typename T>
+
34  GLM_FUNC_DECL T (min)(T a, T b, T c);
+
35 
+
41  template<typename T>
+
42  GLM_FUNC_DECL T (min)(T a, T b, T c, T d);
+
43 
+
49  template<typename T>
+
50  GLM_FUNC_DECL T (max)(T a, T b, T c);
+
51 
+
57  template<typename T>
+
58  GLM_FUNC_DECL T (max)(T a, T b, T c, T d);
+
59 
+
66  template<typename T>
+
67  GLM_FUNC_DECL T (fmin)(T a, T b);
+
68 
+
75  template<typename T>
+
76  GLM_FUNC_DECL T (fmin)(T a, T b, T c);
+
77 
+
84  template<typename T>
+
85  GLM_FUNC_DECL T (fmin)(T a, T b, T c, T d);
+
86 
+
93  template<typename T>
+
94  GLM_FUNC_DECL T (fmax)(T a, T b);
+
95 
+
102  template<typename T>
+
103  GLM_FUNC_DECL T (fmax)(T a, T b, T C);
+
104 
+
111  template<typename T>
+
112  GLM_FUNC_DECL T (fmax)(T a, T b, T C, T D);
+
113 
+
119  template<typename genType>
+
120  GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal);
+
121 
+
127  template<typename genType>
+
128  GLM_FUNC_DECL genType clamp(genType const& Texcoord);
+
129 
+
135  template<typename genType>
+
136  GLM_FUNC_DECL genType repeat(genType const& Texcoord);
+
137 
+
143  template<typename genType>
+
144  GLM_FUNC_DECL genType mirrorClamp(genType const& Texcoord);
+
145 
+
151  template<typename genType>
+
152  GLM_FUNC_DECL genType mirrorRepeat(genType const& Texcoord);
+
153 
+
163  template<typename genType>
+
164  GLM_FUNC_DECL int iround(genType const& x);
+
165 
+
175  template<typename genType>
+
176  GLM_FUNC_DECL uint uround(genType const& x);
+
177 
+
179 }//namespace glm
+
180 
+
181 #include "scalar_common.inl"
+
+
GLM_FUNC_DECL genType repeat(genType const &Texcoord)
Simulate GL_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL T() max(T a, T b, T c, T d)
Returns the maximum component-wise values of 4 inputs.
+
GLM_FUNC_DECL genType clamp(genType const &Texcoord)
Simulate GL_CLAMP OpenGL wrap mode.
+
GLM_FUNC_DECL uint uround(genType const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL T() fmax(T a, T b, T C, T D)
Returns the maximum component-wise values of 4 inputs.
+
GLM_FUNC_DECL genType fclamp(genType x, genType minVal, genType maxVal)
Returns min(max(x, minVal), maxVal) for each component in x.
+
GLM_FUNC_DECL T() fmin(T a, T b, T c, T d)
Returns the minimum component-wise values of 4 inputs.
+
GLM_FUNC_DECL genType mirrorRepeat(genType const &Texcoord)
Simulate GL_MIRROR_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL T() min(T a, T b, T c, T d)
Returns the minimum component-wise values of 4 inputs.
+
GLM_FUNC_DECL int iround(genType const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL genType mirrorClamp(genType const &Texcoord)
Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.
+ + + + diff --git a/include/glm/doc/api/a00359.html b/include/glm/doc/api/a00359.html new file mode 100644 index 0000000..6cd9047 --- /dev/null +++ b/include/glm/doc/api/a00359.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: scalar_constants.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_constants.hpp File Reference
+
+
+ +

GLM_EXT_scalar_constants +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two ()
 Return the value of cos(1 / 2) for floating point types.
 
+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon ()
 Return the epsilon constant for floating point types.
 
+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType pi ()
 Return the pi constant for floating point types.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00359_source.html b/include/glm/doc/api/a00359_source.html new file mode 100644 index 0000000..4ab41ff --- /dev/null +++ b/include/glm/doc/api/a00359_source.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: scalar_constants.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_constants.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 // Dependencies
+
14 #include "../detail/setup.hpp"
+
15 
+
16 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
17 # pragma message("GLM: GLM_EXT_scalar_constants extension included")
+
18 #endif
+
19 
+
20 namespace glm
+
21 {
+
24 
+
26  template<typename genType>
+
27  GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon();
+
28 
+
30  template<typename genType>
+
31  GLM_FUNC_DECL GLM_CONSTEXPR genType pi();
+
32 
+
34  template<typename genType>
+
35  GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two();
+
36 
+
38 } //namespace glm
+
39 
+
40 #include "scalar_constants.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two()
Return the value of cos(1 / 2) for floating point types.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType pi()
Return the pi constant for floating point types.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+ + + + diff --git a/include/glm/doc/api/a00362.html b/include/glm/doc/api/a00362.html new file mode 100644 index 0000000..f5bda0c --- /dev/null +++ b/include/glm/doc/api/a00362.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: scalar_int_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_int_sized.hpp File Reference
+
+
+ +

GLM_EXT_scalar_int_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

+typedef detail::int16 int16
 16 bit signed integer type.
 
+typedef detail::int32 int32
 32 bit signed integer type.
 
+typedef detail::int64 int64
 64 bit signed integer type.
 
+typedef detail::int8 int8
 8 bit signed integer type.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00362_source.html b/include/glm/doc/api/a00362_source.html new file mode 100644 index 0000000..9a2b96e --- /dev/null +++ b/include/glm/doc/api/a00362_source.html @@ -0,0 +1,140 @@ + + + + + + + +1.0.2 API documentation: scalar_int_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_int_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/setup.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_EXT_scalar_int_sized extension included")
+
19 #endif
+
20 
+
21 namespace glm{
+
22 namespace detail
+
23 {
+
24 # if GLM_HAS_EXTENDED_INTEGER_TYPE
+
25  typedef std::int8_t int8;
+
26  typedef std::int16_t int16;
+
27  typedef std::int32_t int32;
+
28 # else
+
29  typedef signed char int8;
+
30  typedef signed short int16;
+
31  typedef signed int int32;
+
32 #endif//
+
33 
+
34  template<>
+
35  struct is_int<int8>
+
36  {
+
37  enum test {value = ~0};
+
38  };
+
39 
+
40  template<>
+
41  struct is_int<int16>
+
42  {
+
43  enum test {value = ~0};
+
44  };
+
45 
+
46  template<>
+
47  struct is_int<int64>
+
48  {
+
49  enum test {value = ~0};
+
50  };
+
51 }//namespace detail
+
52 
+
53 
+
56 
+
58  typedef detail::int8 int8;
+
59 
+
61  typedef detail::int16 int16;
+
62 
+
64  typedef detail::int32 int32;
+
65 
+
67  typedef detail::int64 int64;
+
68 
+
70 }//namespace glm
+
+
detail::int16 int16
16 bit signed integer type.
+
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
+
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
+
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
+
detail::int8 int8
8 bit signed integer type.
+
detail::int64 int64
64 bit signed integer type.
+
detail::int32 int32
32 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00365.html b/include/glm/doc/api/a00365.html new file mode 100644 index 0000000..7567dc8 --- /dev/null +++ b/include/glm/doc/api/a00365.html @@ -0,0 +1,125 @@ + + + + + + + +1.0.2 API documentation: scalar_integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_integer.hpp File Reference
+
+
+ +

GLM_EXT_scalar_integer +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL int findNSB (genIUType x, int significantBitCount)
 Returns the bit number of the Nth significant bit set to 1 in the binary representation of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL bool isMultiple (genIUType v, genIUType Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<typename genIUType >
GLM_FUNC_DECL bool isPowerOfTwo (genIUType v)
 Return true if the value is a power of two number. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType nextMultiple (genIUType v, genIUType Multiple)
 Higher multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType nextPowerOfTwo (genIUType v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType prevMultiple (genIUType v, genIUType Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType prevPowerOfTwo (genIUType v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
+

Detailed Description

+

GLM_EXT_scalar_integer

+
See also
Core features (dependence)
+ +

Definition in file scalar_integer.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00365_source.html b/include/glm/doc/api/a00365_source.html new file mode 100644 index 0000000..81bf966 --- /dev/null +++ b/include/glm/doc/api/a00365_source.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: scalar_integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 // Dependencies
+
14 #include "../detail/setup.hpp"
+
15 #include "../detail/qualifier.hpp"
+
16 #include "../detail/_vectorize.hpp"
+
17 #include "../detail/type_float.hpp"
+
18 #include "../vector_relational.hpp"
+
19 #include "../common.hpp"
+
20 #include <limits>
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_EXT_scalar_integer extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
34  template<typename genIUType>
+
35  GLM_FUNC_DECL bool isPowerOfTwo(genIUType v);
+
36 
+
41  template<typename genIUType>
+
42  GLM_FUNC_DECL genIUType nextPowerOfTwo(genIUType v);
+
43 
+
48  template<typename genIUType>
+
49  GLM_FUNC_DECL genIUType prevPowerOfTwo(genIUType v);
+
50 
+
54  template<typename genIUType>
+
55  GLM_FUNC_DECL bool isMultiple(genIUType v, genIUType Multiple);
+
56 
+
65  template<typename genIUType>
+
66  GLM_FUNC_DECL genIUType nextMultiple(genIUType v, genIUType Multiple);
+
67 
+
76  template<typename genIUType>
+
77  GLM_FUNC_DECL genIUType prevMultiple(genIUType v, genIUType Multiple);
+
78 
+
86  template<typename genIUType>
+
87  GLM_FUNC_DECL int findNSB(genIUType x, int significantBitCount);
+
88 
+
90 } //namespace glm
+
91 
+
92 #include "scalar_integer.inl"
+
+
GLM_FUNC_DECL genIUType prevPowerOfTwo(genIUType v)
Return the power of two number which value is just lower the input value, round down to a power of tw...
+
GLM_FUNC_DECL genIUType nextMultiple(genIUType v, genIUType Multiple)
Higher multiple number of Source.
+
GLM_FUNC_DECL int findNSB(genIUType x, int significantBitCount)
Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.
+
GLM_FUNC_DECL genIUType nextPowerOfTwo(genIUType v)
Return the power of two number which value is just higher the input value, round up to a power of two...
+
GLM_FUNC_DECL bool isMultiple(genIUType v, genIUType Multiple)
Return true if the 'Value' is a multiple of 'Multiple'.
+
GLM_FUNC_DECL bool isPowerOfTwo(genIUType v)
Return true if the value is a power of two number.
+
GLM_FUNC_DECL genIUType prevMultiple(genIUType v, genIUType Multiple)
Lower multiple number of Source.
+ + + + diff --git a/include/glm/doc/api/a00368.html b/include/glm/doc/api/a00368.html new file mode 100644 index 0000000..07cb28d --- /dev/null +++ b/include/glm/doc/api/a00368.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: scalar_packing.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_packing.hpp File Reference
+
+
+ +

GLM_EXT_scalar_packing +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_EXT_scalar_packing

+
See also
Core features (dependence)
+ +

Definition in file scalar_packing.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00368_source.html b/include/glm/doc/api/a00368_source.html new file mode 100644 index 0000000..daa750f --- /dev/null +++ b/include/glm/doc/api/a00368_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: scalar_packing.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_packing.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../detail/qualifier.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_scalar_packing extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
28 
+
30 }// namespace glm
+
31 
+
32 #include "scalar_packing.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00371.html b/include/glm/doc/api/a00371.html new file mode 100644 index 0000000..00bb8d1 --- /dev/null +++ b/include/glm/doc/api/a00371.html @@ -0,0 +1,145 @@ + + + + + + + +1.0.2 API documentation: scalar_reciprocal.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_reciprocal.hpp File Reference
+
+
+ +

GLM_EXT_scalar_reciprocal +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType acot (genType x)
 Inverse cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acoth (genType x)
 Inverse cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsc (genType x)
 Inverse cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsch (genType x)
 Inverse cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asec (genType x)
 Inverse secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asech (genType x)
 Inverse secant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType cot (genType angle)
 Cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType coth (genType angle)
 Cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csc (genType angle)
 Cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csch (genType angle)
 Cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sec (genType angle)
 Secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sech (genType angle)
 Secant hyperbolic function. More...
 
+

Detailed Description

+

GLM_EXT_scalar_reciprocal

+
See also
Core features (dependence)
+ +

Definition in file scalar_reciprocal.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00371_source.html b/include/glm/doc/api/a00371_source.html new file mode 100644 index 0000000..86a8362 --- /dev/null +++ b/include/glm/doc/api/a00371_source.html @@ -0,0 +1,146 @@ + + + + + + + +1.0.2 API documentation: scalar_reciprocal.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_reciprocal.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../detail/setup.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_scalar_reciprocal extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
33  template<typename genType>
+
34  GLM_FUNC_DECL genType sec(genType angle);
+
35 
+
42  template<typename genType>
+
43  GLM_FUNC_DECL genType csc(genType angle);
+
44 
+
51  template<typename genType>
+
52  GLM_FUNC_DECL genType cot(genType angle);
+
53 
+
60  template<typename genType>
+
61  GLM_FUNC_DECL genType asec(genType x);
+
62 
+
69  template<typename genType>
+
70  GLM_FUNC_DECL genType acsc(genType x);
+
71 
+
78  template<typename genType>
+
79  GLM_FUNC_DECL genType acot(genType x);
+
80 
+
86  template<typename genType>
+
87  GLM_FUNC_DECL genType sech(genType angle);
+
88 
+
94  template<typename genType>
+
95  GLM_FUNC_DECL genType csch(genType angle);
+
96 
+
102  template<typename genType>
+
103  GLM_FUNC_DECL genType coth(genType angle);
+
104 
+
111  template<typename genType>
+
112  GLM_FUNC_DECL genType asech(genType x);
+
113 
+
120  template<typename genType>
+
121  GLM_FUNC_DECL genType acsch(genType x);
+
122 
+
129  template<typename genType>
+
130  GLM_FUNC_DECL genType acoth(genType x);
+
131 
+
133 }//namespace glm
+
134 
+
135 #include "scalar_reciprocal.inl"
+
+
GLM_FUNC_DECL genType cot(genType angle)
Cotangent function.
+
GLM_FUNC_DECL genType sec(genType angle)
Secant function.
+
GLM_FUNC_DECL genType csch(genType angle)
Cosecant hyperbolic function.
+
GLM_FUNC_DECL genType sech(genType angle)
Secant hyperbolic function.
+
GLM_FUNC_DECL genType csc(genType angle)
Cosecant function.
+
GLM_FUNC_DECL genType acot(genType x)
Inverse cotangent function.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL genType asech(genType x)
Inverse secant hyperbolic function.
+
GLM_FUNC_DECL genType acsch(genType x)
Inverse cosecant hyperbolic function.
+
GLM_FUNC_DECL genType acoth(genType x)
Inverse cotangent hyperbolic function.
+
GLM_FUNC_DECL genType coth(genType angle)
Cotangent hyperbolic function.
+
GLM_FUNC_DECL genType acsc(genType x)
Inverse cosecant function.
+
GLM_FUNC_DECL genType asec(genType x)
Inverse secant function.
+ + + + diff --git a/include/glm/doc/api/a00377.html b/include/glm/doc/api/a00377.html new file mode 100644 index 0000000..e24d91c --- /dev/null +++ b/include/glm/doc/api/a00377.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: scalar_uint_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_uint_sized.hpp File Reference
+
+
+ +

GLM_EXT_scalar_uint_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

+typedef detail::uint16 uint16
 16 bit unsigned integer type.
 
+typedef detail::uint32 uint32
 32 bit unsigned integer type.
 
+typedef detail::uint64 uint64
 64 bit unsigned integer type.
 
+typedef detail::uint8 uint8
 8 bit unsigned integer type.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00377_source.html b/include/glm/doc/api/a00377_source.html new file mode 100644 index 0000000..46ce6b0 --- /dev/null +++ b/include/glm/doc/api/a00377_source.html @@ -0,0 +1,140 @@ + + + + + + + +1.0.2 API documentation: scalar_uint_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_uint_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/setup.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_EXT_scalar_uint_sized extension included")
+
19 #endif
+
20 
+
21 namespace glm{
+
22 namespace detail
+
23 {
+
24 # if GLM_HAS_EXTENDED_INTEGER_TYPE
+
25  typedef std::uint8_t uint8;
+
26  typedef std::uint16_t uint16;
+
27  typedef std::uint32_t uint32;
+
28 # else
+
29  typedef unsigned char uint8;
+
30  typedef unsigned short uint16;
+
31  typedef unsigned int uint32;
+
32 #endif
+
33 
+
34  template<>
+
35  struct is_int<uint8>
+
36  {
+
37  enum test {value = ~0};
+
38  };
+
39 
+
40  template<>
+
41  struct is_int<uint16>
+
42  {
+
43  enum test {value = ~0};
+
44  };
+
45 
+
46  template<>
+
47  struct is_int<uint64>
+
48  {
+
49  enum test {value = ~0};
+
50  };
+
51 }//namespace detail
+
52 
+
53 
+
56 
+
58  typedef detail::uint8 uint8;
+
59 
+
61  typedef detail::uint16 uint16;
+
62 
+
64  typedef detail::uint32 uint32;
+
65 
+
67  typedef detail::uint64 uint64;
+
68 
+
70 }//namespace glm
+
+
detail::uint32 uint32
32 bit unsigned integer type.
+
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:117
+
detail::uint64 uint64
64 bit unsigned integer type.
+
detail::uint8 uint8
8 bit unsigned integer type.
+
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:131
+
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:103
+
detail::uint16 uint16
16 bit unsigned integer type.
+ + + + diff --git a/include/glm/doc/api/a00380.html b/include/glm/doc/api/a00380.html new file mode 100644 index 0000000..b874654 --- /dev/null +++ b/include/glm/doc/api/a00380.html @@ -0,0 +1,118 @@ + + + + + + + +1.0.2 API documentation: scalar_ulp.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
scalar_ulp.hpp File Reference
+
+
+ +

GLM_EXT_scalar_ulp +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL int64 floatDistance (double x, double y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
GLM_FUNC_DECL int floatDistance (float x, float y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<typename genType >
GLM_FUNC_DECL genType nextFloat (genType x)
 Return the next ULP value(s) after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType nextFloat (genType x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prevFloat (genType x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prevFloat (genType x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

GLM_EXT_scalar_ulp

+ +

Definition in file scalar_ulp.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00380_source.html b/include/glm/doc/api/a00380_source.html new file mode 100644 index 0000000..1365001 --- /dev/null +++ b/include/glm/doc/api/a00380_source.html @@ -0,0 +1,119 @@ + + + + + + + +1.0.2 API documentation: scalar_ulp.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_ulp.hpp
+
+
+Go to the documentation of this file.
1 
+
16 #pragma once
+
17 
+
18 // Dependencies
+
19 #include "../ext/scalar_int_sized.hpp"
+
20 #include "../common.hpp"
+
21 #include "../detail/qualifier.hpp"
+
22 
+
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_EXT_scalar_ulp extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
37  template<typename genType>
+
38  GLM_FUNC_DECL genType nextFloat(genType x);
+
39 
+
45  template<typename genType>
+
46  GLM_FUNC_DECL genType prevFloat(genType x);
+
47 
+
53  template<typename genType>
+
54  GLM_FUNC_DECL genType nextFloat(genType x, int ULPs);
+
55 
+
61  template<typename genType>
+
62  GLM_FUNC_DECL genType prevFloat(genType x, int ULPs);
+
63 
+
67  GLM_FUNC_DECL int floatDistance(float x, float y);
+
68 
+
72  GLM_FUNC_DECL int64 floatDistance(double x, double y);
+
73 
+
75 }//namespace glm
+
76 
+
77 #include "scalar_ulp.inl"
+
+
GLM_FUNC_DECL genType prevFloat(genType x, int ULPs)
Return the value(s) ULP distance before the input value(s).
+
GLM_FUNC_DECL int64 floatDistance(double x, double y)
Return the distance in the number of ULP between 2 double-precision floating-point scalars.
+
GLM_FUNC_DECL genType nextFloat(genType x, int ULPs)
Return the value(s) ULP distance after the input value(s).
+
detail::int64 int64
64 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00383.html b/include/glm/doc/api/a00383.html new file mode 100644 index 0000000..74e5e55 --- /dev/null +++ b/include/glm/doc/api/a00383.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vector_bool1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool1.hpp File Reference
+
+
+ +

GLM_EXT_vector_bool1 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef vec< 1, bool, defaultp > bvec1
 1 components vector of boolean.
 
+

Detailed Description

+

GLM_EXT_vector_bool1

+ +

Definition in file vector_bool1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00383_source.html b/include/glm/doc/api/a00383_source.html new file mode 100644 index 0000000..a62b096 --- /dev/null +++ b/include/glm/doc/api/a00383_source.html @@ -0,0 +1,97 @@ + + + + + + + +1.0.2 API documentation: vector_bool1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool1.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/type_vec1.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_EXT_vector_bool1 extension included")
+
19 #endif
+
20 
+
21 namespace glm
+
22 {
+
25 
+
27  typedef vec<1, bool, defaultp> bvec1;
+
28 
+
30 }//namespace glm
+
+
vec< 1, bool, defaultp > bvec1
1 components vector of boolean.
+ + + + diff --git a/include/glm/doc/api/a00386.html b/include/glm/doc/api/a00386.html new file mode 100644 index 0000000..978aa42 --- /dev/null +++ b/include/glm/doc/api/a00386.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_bool1_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool1_precision.hpp File Reference
+
+
+ +

GLM_EXT_vector_bool1_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, bool, highp > highp_bvec1
 1 component vector of bool values.
 
+typedef vec< 1, bool, lowp > lowp_bvec1
 1 component vector of bool values.
 
+typedef vec< 1, bool, mediump > mediump_bvec1
 1 component vector of bool values.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00386_source.html b/include/glm/doc/api/a00386_source.html new file mode 100644 index 0000000..3a87d06 --- /dev/null +++ b/include/glm/doc/api/a00386_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: vector_bool1_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool1_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 #include "../detail/type_vec1.hpp"
+
14 
+
15 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
16 # pragma message("GLM: GLM_EXT_vector_bool1_precision extension included")
+
17 #endif
+
18 
+
19 namespace glm
+
20 {
+
23 
+
25  typedef vec<1, bool, highp> highp_bvec1;
+
26 
+
28  typedef vec<1, bool, mediump> mediump_bvec1;
+
29 
+
31  typedef vec<1, bool, lowp> lowp_bvec1;
+
32 
+
34 }//namespace glm
+
+
vec< 1, bool, lowp > lowp_bvec1
1 component vector of bool values.
+
vec< 1, bool, highp > highp_bvec1
1 component vector of bool values.
+
vec< 1, bool, mediump > mediump_bvec1
1 component vector of bool values.
+ + + + diff --git a/include/glm/doc/api/a00389.html b/include/glm/doc/api/a00389.html new file mode 100644 index 0000000..fbc6844 --- /dev/null +++ b/include/glm/doc/api/a00389.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_bool2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 2, bool, defaultp > bvec2
 2 components vector of boolean. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00389_source.html b/include/glm/doc/api/a00389_source.html new file mode 100644 index 0000000..514ebea --- /dev/null +++ b/include/glm/doc/api/a00389_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_bool2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<2, bool, defaultp> bvec2;
+
16 
+
18 }//namespace glm
+
+
vec< 2, bool, defaultp > bvec2
2 components vector of boolean.
+ + + + diff --git a/include/glm/doc/api/a00392.html b/include/glm/doc/api/a00392.html new file mode 100644 index 0000000..6f9c591 --- /dev/null +++ b/include/glm/doc/api/a00392.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_bool2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 2, bool, highp > highp_bvec2
 2 components vector of high qualifier bool numbers. More...
 
typedef vec< 2, bool, lowp > lowp_bvec2
 2 components vector of low qualifier bool numbers. More...
 
typedef vec< 2, bool, mediump > mediump_bvec2
 2 components vector of medium qualifier bool numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool2_precision.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00392_source.html b/include/glm/doc/api/a00392_source.html new file mode 100644 index 0000000..cc79d20 --- /dev/null +++ b/include/glm/doc/api/a00392_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_bool2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<2, bool, highp> highp_bvec2;
+
17 
+
22  typedef vec<2, bool, mediump> mediump_bvec2;
+
23 
+
28  typedef vec<2, bool, lowp> lowp_bvec2;
+
29 
+
31 }//namespace glm
+
+
vec< 2, bool, lowp > lowp_bvec2
2 components vector of low qualifier bool numbers.
+
vec< 2, bool, highp > highp_bvec2
2 components vector of high qualifier bool numbers.
+
vec< 2, bool, mediump > mediump_bvec2
2 components vector of medium qualifier bool numbers.
+ + + + diff --git a/include/glm/doc/api/a00395.html b/include/glm/doc/api/a00395.html new file mode 100644 index 0000000..7651285 --- /dev/null +++ b/include/glm/doc/api/a00395.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_bool3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 3, bool, defaultp > bvec3
 3 components vector of boolean. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00395_source.html b/include/glm/doc/api/a00395_source.html new file mode 100644 index 0000000..ff2ddc5 --- /dev/null +++ b/include/glm/doc/api/a00395_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_bool3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<3, bool, defaultp> bvec3;
+
16 
+
18 }//namespace glm
+
+
vec< 3, bool, defaultp > bvec3
3 components vector of boolean.
+ + + + diff --git a/include/glm/doc/api/a00398.html b/include/glm/doc/api/a00398.html new file mode 100644 index 0000000..7e3dce9 --- /dev/null +++ b/include/glm/doc/api/a00398.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_bool3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 3, bool, highp > highp_bvec3
 3 components vector of high qualifier bool numbers. More...
 
typedef vec< 3, bool, lowp > lowp_bvec3
 3 components vector of low qualifier bool numbers. More...
 
typedef vec< 3, bool, mediump > mediump_bvec3
 3 components vector of medium qualifier bool numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool3_precision.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00398_source.html b/include/glm/doc/api/a00398_source.html new file mode 100644 index 0000000..4d19a19 --- /dev/null +++ b/include/glm/doc/api/a00398_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_bool3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<3, bool, highp> highp_bvec3;
+
17 
+
22  typedef vec<3, bool, mediump> mediump_bvec3;
+
23 
+
28  typedef vec<3, bool, lowp> lowp_bvec3;
+
29 
+
31 }//namespace glm
+
+
vec< 3, bool, mediump > mediump_bvec3
3 components vector of medium qualifier bool numbers.
+
vec< 3, bool, highp > highp_bvec3
3 components vector of high qualifier bool numbers.
+
vec< 3, bool, lowp > lowp_bvec3
3 components vector of low qualifier bool numbers.
+ + + + diff --git a/include/glm/doc/api/a00401.html b/include/glm/doc/api/a00401.html new file mode 100644 index 0000000..2f3eeb0 --- /dev/null +++ b/include/glm/doc/api/a00401.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_bool4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 4, bool, defaultp > bvec4
 4 components vector of boolean. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00401_source.html b/include/glm/doc/api/a00401_source.html new file mode 100644 index 0000000..f2aae48 --- /dev/null +++ b/include/glm/doc/api/a00401_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_bool4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<4, bool, defaultp> bvec4;
+
16 
+
18 }//namespace glm
+
+
vec< 4, bool, defaultp > bvec4
4 components vector of boolean.
+ + + + diff --git a/include/glm/doc/api/a00404.html b/include/glm/doc/api/a00404.html new file mode 100644 index 0000000..303acf1 --- /dev/null +++ b/include/glm/doc/api/a00404.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_bool4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_bool4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 4, bool, highp > highp_bvec4
 4 components vector of high qualifier bool numbers. More...
 
typedef vec< 4, bool, lowp > lowp_bvec4
 4 components vector of low qualifier bool numbers. More...
 
typedef vec< 4, bool, mediump > mediump_bvec4
 4 components vector of medium qualifier bool numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_bool4_precision.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00404_source.html b/include/glm/doc/api/a00404_source.html new file mode 100644 index 0000000..4a1db15 --- /dev/null +++ b/include/glm/doc/api/a00404_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_bool4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_bool4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<4, bool, highp> highp_bvec4;
+
17 
+
22  typedef vec<4, bool, mediump> mediump_bvec4;
+
23 
+
28  typedef vec<4, bool, lowp> lowp_bvec4;
+
29 
+
31 }//namespace glm
+
+
vec< 4, bool, mediump > mediump_bvec4
4 components vector of medium qualifier bool numbers.
+
vec< 4, bool, lowp > lowp_bvec4
4 components vector of low qualifier bool numbers.
+
vec< 4, bool, highp > highp_bvec4
4 components vector of high qualifier bool numbers.
+ + + + diff --git a/include/glm/doc/api/a00407.html b/include/glm/doc/api/a00407.html new file mode 100644 index 0000000..2935899 --- /dev/null +++ b/include/glm/doc/api/a00407.html @@ -0,0 +1,176 @@ + + + + + + + +1.0.2 API documentation: vector_common.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_common.hpp File Reference
+
+
+ +

GLM_EXT_vector_common +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > clamp (vec< L, T, Q > const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, T b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > iround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Return the minimum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Return the minimum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mirrorClamp (vec< L, T, Q > const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mirrorRepeat (vec< L, T, Q > const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > repeat (vec< L, T, Q > const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
+

Detailed Description

+

GLM_EXT_vector_common

+ +

Definition in file vector_common.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00407_source.html b/include/glm/doc/api/a00407_source.html new file mode 100644 index 0000000..dbf88df --- /dev/null +++ b/include/glm/doc/api/a00407_source.html @@ -0,0 +1,169 @@ + + + + + + + +1.0.2 API documentation: vector_common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_common.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../ext/scalar_common.hpp"
+
18 #include "../common.hpp"
+
19 
+
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_EXT_vector_common extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
34  template<length_t L, typename T, qualifier Q>
+
35  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
+
36 
+
42  template<length_t L, typename T, qualifier Q>
+
43  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> min(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
+
44 
+
50  template<length_t L, typename T, qualifier Q>
+
51  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z);
+
52 
+
58  template<length_t L, typename T, qualifier Q>
+
59  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> max( vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& z, vec<L, T, Q> const& w);
+
60 
+
68  template<length_t L, typename T, qualifier Q>
+
69  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, T y);
+
70 
+
78  template<length_t L, typename T, qualifier Q>
+
79  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
80 
+
88  template<length_t L, typename T, qualifier Q>
+
89  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
+
90 
+
98  template<length_t L, typename T, qualifier Q>
+
99  GLM_FUNC_DECL vec<L, T, Q> fmin(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
+
100 
+
108  template<length_t L, typename T, qualifier Q>
+
109  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, T b);
+
110 
+
118  template<length_t L, typename T, qualifier Q>
+
119  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b);
+
120 
+
128  template<length_t L, typename T, qualifier Q>
+
129  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c);
+
130 
+
138  template<length_t L, typename T, qualifier Q>
+
139  GLM_FUNC_DECL vec<L, T, Q> fmax(vec<L, T, Q> const& a, vec<L, T, Q> const& b, vec<L, T, Q> const& c, vec<L, T, Q> const& d);
+
140 
+
148  template<length_t L, typename T, qualifier Q>
+
149  GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, T minVal, T maxVal);
+
150 
+
158  template<length_t L, typename T, qualifier Q>
+
159  GLM_FUNC_DECL vec<L, T, Q> fclamp(vec<L, T, Q> const& x, vec<L, T, Q> const& minVal, vec<L, T, Q> const& maxVal);
+
160 
+
168  template<length_t L, typename T, qualifier Q>
+
169  GLM_FUNC_DECL vec<L, T, Q> clamp(vec<L, T, Q> const& Texcoord);
+
170 
+
178  template<length_t L, typename T, qualifier Q>
+
179  GLM_FUNC_DECL vec<L, T, Q> repeat(vec<L, T, Q> const& Texcoord);
+
180 
+
188  template<length_t L, typename T, qualifier Q>
+
189  GLM_FUNC_DECL vec<L, T, Q> mirrorClamp(vec<L, T, Q> const& Texcoord);
+
190 
+
198  template<length_t L, typename T, qualifier Q>
+
199  GLM_FUNC_DECL vec<L, T, Q> mirrorRepeat(vec<L, T, Q> const& Texcoord);
+
200 
+
210  template<length_t L, typename T, qualifier Q>
+
211  GLM_FUNC_DECL vec<L, int, Q> iround(vec<L, T, Q> const& x);
+
212 
+
222  template<length_t L, typename T, qualifier Q>
+
223  GLM_FUNC_DECL vec<L, uint, Q> uround(vec<L, T, Q> const& x);
+
224 
+
226 }//namespace glm
+
227 
+
228 #include "vector_common.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Return the minimum component-wise values of 4 inputs.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
Return the maximum component-wise values of 4 inputs.
+
GLM_FUNC_DECL vec< L, T, Q > repeat(vec< L, T, Q > const &Texcoord)
Simulate GL_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL vec< L, uint, Q > uround(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL vec< L, T, Q > fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Returns y if x < y; otherwise, it returns x.
+
GLM_FUNC_DECL vec< L, T, Q > fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
Returns min(max(x, minVal), maxVal) for each component in x.
+
GLM_FUNC_DECL vec< L, T, Q > mirrorClamp(vec< L, T, Q > const &Texcoord)
Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL vec< L, T, Q > clamp(vec< L, T, Q > const &Texcoord)
Simulate GL_CLAMP OpenGL wrap mode.
+
GLM_FUNC_DECL vec< L, T, Q > mirrorRepeat(vec< L, T, Q > const &Texcoord)
Simulate GL_MIRROR_REPEAT OpenGL wrap mode.
+
GLM_FUNC_DECL vec< L, int, Q > iround(vec< L, T, Q > const &x)
Returns a value equal to the nearest integer to x.
+
GLM_FUNC_DECL vec< L, T, Q > fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
Returns y if y < x; otherwise, it returns x.
+ + + + diff --git a/include/glm/doc/api/a00410.html b/include/glm/doc/api/a00410.html new file mode 100644 index 0000000..af9d55e --- /dev/null +++ b/include/glm/doc/api/a00410.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vector_double1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double1.hpp File Reference
+
+
+ +

GLM_EXT_vector_double1 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef vec< 1, double, defaultp > dvec1
 1 components vector of double-precision floating-point numbers.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00410_source.html b/include/glm/doc/api/a00410_source.html new file mode 100644 index 0000000..f1eab82 --- /dev/null +++ b/include/glm/doc/api/a00410_source.html @@ -0,0 +1,97 @@ + + + + + + + +1.0.2 API documentation: vector_double1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double1.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../detail/type_vec1.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_vector_double1 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
28  typedef vec<1, double, defaultp> dvec1;
+
29 
+
31 }//namespace glm
+
+
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00413.html b/include/glm/doc/api/a00413.html new file mode 100644 index 0000000..e7b2a14 --- /dev/null +++ b/include/glm/doc/api/a00413.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_double1_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double1_precision.hpp File Reference
+
+
+ +

GLM_EXT_vector_double1_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, double, highp > highp_dvec1
 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, lowp > lowp_dvec1
 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, mediump > mediump_dvec1
 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00413_source.html b/include/glm/doc/api/a00413_source.html new file mode 100644 index 0000000..fbbe1e7 --- /dev/null +++ b/include/glm/doc/api/a00413_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: vector_double1_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double1_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/type_vec1.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_EXT_vector_double1_precision extension included")
+
19 #endif
+
20 
+
21 namespace glm
+
22 {
+
25 
+
27  typedef vec<1, double, highp> highp_dvec1;
+
28 
+
30  typedef vec<1, double, mediump> mediump_dvec1;
+
31 
+
33  typedef vec<1, double, lowp> lowp_dvec1;
+
34 
+
36 }//namespace glm
+
+
vec< 1, double, mediump > mediump_dvec1
1 component vector of double-precision floating-point numbers using medium precision arithmetic in te...
+
vec< 1, double, lowp > lowp_dvec1
1 component vector of double-precision floating-point numbers using low precision arithmetic in term ...
+
vec< 1, double, highp > highp_dvec1
1 component vector of double-precision floating-point numbers using high precision arithmetic in term...
+ + + + diff --git a/include/glm/doc/api/a00416.html b/include/glm/doc/api/a00416.html new file mode 100644 index 0000000..c81f256 --- /dev/null +++ b/include/glm/doc/api/a00416.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_double2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 2, double, defaultp > dvec2
 2 components vector of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_double2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00416_source.html b/include/glm/doc/api/a00416_source.html new file mode 100644 index 0000000..530d6a4 --- /dev/null +++ b/include/glm/doc/api/a00416_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_double2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<2, double, defaultp> dvec2;
+
16 
+
18 }//namespace glm
+
+
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00419.html b/include/glm/doc/api/a00419.html new file mode 100644 index 0000000..5de3cfa --- /dev/null +++ b/include/glm/doc/api/a00419.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_double2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 2, double, highp > highp_dvec2
 2 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 2, double, lowp > lowp_dvec2
 2 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 2, double, mediump > mediump_dvec2
 2 components vector of medium double-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00419_source.html b/include/glm/doc/api/a00419_source.html new file mode 100644 index 0000000..738dc56 --- /dev/null +++ b/include/glm/doc/api/a00419_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_double2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<2, double, highp> highp_dvec2;
+
17 
+
22  typedef vec<2, double, mediump> mediump_dvec2;
+
23 
+
28  typedef vec<2, double, lowp> lowp_dvec2;
+
29 
+
31 }//namespace glm
+
+
vec< 2, double, mediump > mediump_dvec2
2 components vector of medium double-qualifier floating-point numbers.
+
vec< 2, double, lowp > lowp_dvec2
2 components vector of low double-qualifier floating-point numbers.
+
vec< 2, double, highp > highp_dvec2
2 components vector of high double-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00422.html b/include/glm/doc/api/a00422.html new file mode 100644 index 0000000..cd19e04 --- /dev/null +++ b/include/glm/doc/api/a00422.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_double3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 3, double, defaultp > dvec3
 3 components vector of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_double3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00422_source.html b/include/glm/doc/api/a00422_source.html new file mode 100644 index 0000000..4c27e78 --- /dev/null +++ b/include/glm/doc/api/a00422_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_double3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<3, double, defaultp> dvec3;
+
16 
+
18 }//namespace glm
+
+
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00425.html b/include/glm/doc/api/a00425.html new file mode 100644 index 0000000..25fef1a --- /dev/null +++ b/include/glm/doc/api/a00425.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_double3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 3, double, highp > highp_dvec3
 3 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, lowp > lowp_dvec3
 3 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, mediump > mediump_dvec3
 3 components vector of medium double-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00425_source.html b/include/glm/doc/api/a00425_source.html new file mode 100644 index 0000000..9151aea --- /dev/null +++ b/include/glm/doc/api/a00425_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_double3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
17  typedef vec<3, double, highp> highp_dvec3;
+
18 
+
24  typedef vec<3, double, mediump> mediump_dvec3;
+
25 
+
31  typedef vec<3, double, lowp> lowp_dvec3;
+
32 
+
34 }//namespace glm
+
+
vec< 3, double, highp > highp_dvec3
3 components vector of high double-qualifier floating-point numbers.
+
vec< 3, double, lowp > lowp_dvec3
3 components vector of low double-qualifier floating-point numbers.
+
vec< 3, double, mediump > mediump_dvec3
3 components vector of medium double-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00428.html b/include/glm/doc/api/a00428.html new file mode 100644 index 0000000..85d2bde --- /dev/null +++ b/include/glm/doc/api/a00428.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_double4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 4, double, defaultp > dvec4
 4 components vector of double-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_double4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00428_source.html b/include/glm/doc/api/a00428_source.html new file mode 100644 index 0000000..b5b0e39 --- /dev/null +++ b/include/glm/doc/api/a00428_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_double4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<4, double, defaultp> dvec4;
+
16 
+
18 }//namespace glm
+
+
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00431.html b/include/glm/doc/api/a00431.html new file mode 100644 index 0000000..e981f66 --- /dev/null +++ b/include/glm/doc/api/a00431.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_double4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_double4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 4, double, highp > highp_dvec4
 4 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, lowp > lowp_dvec4
 4 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, mediump > mediump_dvec4
 4 components vector of medium double-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00431_source.html b/include/glm/doc/api/a00431_source.html new file mode 100644 index 0000000..f96ac5c --- /dev/null +++ b/include/glm/doc/api/a00431_source.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_double4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_double4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/setup.hpp"
+
6 #include "../detail/type_vec4.hpp"
+
7 
+
8 namespace glm
+
9 {
+
12 
+
18  typedef vec<4, double, highp> highp_dvec4;
+
19 
+
25  typedef vec<4, double, mediump> mediump_dvec4;
+
26 
+
32  typedef vec<4, double, lowp> lowp_dvec4;
+
33 
+
35 }//namespace glm
+
+
vec< 4, double, mediump > mediump_dvec4
4 components vector of medium double-qualifier floating-point numbers.
+
vec< 4, double, highp > highp_dvec4
4 components vector of high double-qualifier floating-point numbers.
+
vec< 4, double, lowp > lowp_dvec4
4 components vector of low double-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00434.html b/include/glm/doc/api/a00434.html new file mode 100644 index 0000000..af85736 --- /dev/null +++ b/include/glm/doc/api/a00434.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vector_float1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float1.hpp File Reference
+
+
+ +

GLM_EXT_vector_float1 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef vec< 1, float, defaultp > vec1
 1 components vector of single-precision floating-point numbers.
 
+

Detailed Description

+

GLM_EXT_vector_float1

+ +

Definition in file vector_float1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00434_source.html b/include/glm/doc/api/a00434_source.html new file mode 100644 index 0000000..e9362e5 --- /dev/null +++ b/include/glm/doc/api/a00434_source.html @@ -0,0 +1,97 @@ + + + + + + + +1.0.2 API documentation: vector_float1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float1.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../detail/type_vec1.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_vector_float1 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
28  typedef vec<1, float, defaultp> vec1;
+
29 
+
31 }//namespace glm
+
+
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00437.html b/include/glm/doc/api/a00437.html new file mode 100644 index 0000000..2620793 --- /dev/null +++ b/include/glm/doc/api/a00437.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_float1_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float1_precision.hpp File Reference
+
+
+ +

GLM_EXT_vector_float1_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, float, highp > highp_vec1
 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, float, lowp > lowp_vec1
 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, float, mediump > mediump_vec1
 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00437_source.html b/include/glm/doc/api/a00437_source.html new file mode 100644 index 0000000..feba1bd --- /dev/null +++ b/include/glm/doc/api/a00437_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: vector_float1_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float1_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../detail/type_vec1.hpp"
+
16 
+
17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_EXT_vector_float1_precision extension included")
+
19 #endif
+
20 
+
21 namespace glm
+
22 {
+
25 
+
27  typedef vec<1, float, highp> highp_vec1;
+
28 
+
30  typedef vec<1, float, mediump> mediump_vec1;
+
31 
+
33  typedef vec<1, float, lowp> lowp_vec1;
+
34 
+
36 }//namespace glm
+
+
vec< 1, float, mediump > mediump_vec1
1 component vector of single-precision floating-point numbers using medium precision arithmetic in te...
+
vec< 1, float, lowp > lowp_vec1
1 component vector of single-precision floating-point numbers using low precision arithmetic in term ...
+
vec< 1, float, highp > highp_vec1
1 component vector of single-precision floating-point numbers using high precision arithmetic in term...
+ + + + diff --git a/include/glm/doc/api/a00440.html b/include/glm/doc/api/a00440.html new file mode 100644 index 0000000..d738b7c --- /dev/null +++ b/include/glm/doc/api/a00440.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_float2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 2, float, defaultp > vec2
 2 components vector of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_float2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00440_source.html b/include/glm/doc/api/a00440_source.html new file mode 100644 index 0000000..32fd61a --- /dev/null +++ b/include/glm/doc/api/a00440_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_float2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<2, float, defaultp> vec2;
+
16 
+
18 }//namespace glm
+
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00443.html b/include/glm/doc/api/a00443.html new file mode 100644 index 0000000..bf3a914 --- /dev/null +++ b/include/glm/doc/api/a00443.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_float2_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float2_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 2, float, highp > highp_vec2
 2 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 2, float, lowp > lowp_vec2
 2 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 2, float, mediump > mediump_vec2
 2 components vector of medium single-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00443_source.html b/include/glm/doc/api/a00443_source.html new file mode 100644 index 0000000..b77a387 --- /dev/null +++ b/include/glm/doc/api/a00443_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_float2_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float2_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<2, float, highp> highp_vec2;
+
17 
+
22  typedef vec<2, float, mediump> mediump_vec2;
+
23 
+
28  typedef vec<2, float, lowp> lowp_vec2;
+
29 
+
31 }//namespace glm
+
+
vec< 2, float, mediump > mediump_vec2
2 components vector of medium single-qualifier floating-point numbers.
+
vec< 2, float, lowp > lowp_vec2
2 components vector of low single-qualifier floating-point numbers.
+
vec< 2, float, highp > highp_vec2
2 components vector of high single-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00446.html b/include/glm/doc/api/a00446.html new file mode 100644 index 0000000..7478223 --- /dev/null +++ b/include/glm/doc/api/a00446.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_float3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 3, float, defaultp > vec3
 3 components vector of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_float3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00446_source.html b/include/glm/doc/api/a00446_source.html new file mode 100644 index 0000000..71ed9e6 --- /dev/null +++ b/include/glm/doc/api/a00446_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_float3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<3, float, defaultp> vec3;
+
16 
+
18 }//namespace glm
+
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00449.html b/include/glm/doc/api/a00449.html new file mode 100644 index 0000000..145968f --- /dev/null +++ b/include/glm/doc/api/a00449.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_float3_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float3_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 3, float, highp > highp_vec3
 3 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, lowp > lowp_vec3
 3 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, mediump > mediump_vec3
 3 components vector of medium single-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00449_source.html b/include/glm/doc/api/a00449_source.html new file mode 100644 index 0000000..dbfe350 --- /dev/null +++ b/include/glm/doc/api/a00449_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_float3_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float3_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<3, float, highp> highp_vec3;
+
17 
+
22  typedef vec<3, float, mediump> mediump_vec3;
+
23 
+
28  typedef vec<3, float, lowp> lowp_vec3;
+
29 
+
31 }//namespace glm
+
+
vec< 3, float, highp > highp_vec3
3 components vector of high single-qualifier floating-point numbers.
+
vec< 3, float, mediump > mediump_vec3
3 components vector of medium single-qualifier floating-point numbers.
+
vec< 3, float, lowp > lowp_vec3
3 components vector of low single-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00452.html b/include/glm/doc/api/a00452.html new file mode 100644 index 0000000..11be981 --- /dev/null +++ b/include/glm/doc/api/a00452.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_float4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 4, float, defaultp > vec4
 4 components vector of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_float4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00452_source.html b/include/glm/doc/api/a00452_source.html new file mode 100644 index 0000000..4ccb26a --- /dev/null +++ b/include/glm/doc/api/a00452_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_float4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<4, float, defaultp> vec4;
+
16 
+
18 }//namespace glm
+
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00455.html b/include/glm/doc/api/a00455.html new file mode 100644 index 0000000..9505f01 --- /dev/null +++ b/include/glm/doc/api/a00455.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: vector_float4_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_float4_precision.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + +

+Typedefs

typedef vec< 4, float, highp > highp_vec4
 4 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, lowp > lowp_vec4
 4 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, mediump > mediump_vec4
 4 components vector of medium single-qualifier floating-point numbers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00455_source.html b/include/glm/doc/api/a00455_source.html new file mode 100644 index 0000000..ee5e58c --- /dev/null +++ b/include/glm/doc/api/a00455_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_float4_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_float4_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
16  typedef vec<4, float, highp> highp_vec4;
+
17 
+
22  typedef vec<4, float, mediump> mediump_vec4;
+
23 
+
28  typedef vec<4, float, lowp> lowp_vec4;
+
29 
+
31 }//namespace glm
+
+
vec< 4, float, highp > highp_vec4
4 components vector of high single-qualifier floating-point numbers.
+
vec< 4, float, mediump > mediump_vec4
4 components vector of medium single-qualifier floating-point numbers.
+
vec< 4, float, lowp > lowp_vec4
4 components vector of low single-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00458.html b/include/glm/doc/api/a00458.html new file mode 100644 index 0000000..6f0a4fd --- /dev/null +++ b/include/glm/doc/api/a00458.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vector_int1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int1.hpp File Reference
+
+
+ +

GLM_EXT_vector_int1 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef vec< 1, int, defaultp > ivec1
 1 component vector of signed integer numbers.
 
+

Detailed Description

+

GLM_EXT_vector_int1

+ +

Definition in file vector_int1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00458_source.html b/include/glm/doc/api/a00458_source.html new file mode 100644 index 0000000..c3be37b --- /dev/null +++ b/include/glm/doc/api/a00458_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_int1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int1.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../detail/type_vec1.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_vector_int1 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
28  typedef vec<1, int, defaultp> ivec1;
+
29 
+
31 }//namespace glm
+
32 
+
+
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
+ + + + diff --git a/include/glm/doc/api/a00461.html b/include/glm/doc/api/a00461.html new file mode 100644 index 0000000..3db323e --- /dev/null +++ b/include/glm/doc/api/a00461.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_int1_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int1_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_int1_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, int16, defaultp > i16vec1
 16 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int32, defaultp > i32vec1
 32 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int64, defaultp > i64vec1
 64 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int8, defaultp > i8vec1
 8 bit signed integer vector of 1 component type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00461_source.html b/include/glm/doc/api/a00461_source.html new file mode 100644 index 0000000..cf55816 --- /dev/null +++ b/include/glm/doc/api/a00461_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_int1_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int1_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_int1.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_int1_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<1, int8, defaultp> i8vec1;
+
32 
+
36  typedef vec<1, int16, defaultp> i16vec1;
+
37 
+
41  typedef vec<1, int32, defaultp> i32vec1;
+
42 
+
46  typedef vec<1, int64, defaultp> i64vec1;
+
47 
+
49 }//namespace glm
+
+
vec< 1, int16, defaultp > i16vec1
16 bit signed integer vector of 1 component type.
+
vec< 1, int8, defaultp > i8vec1
8 bit signed integer vector of 1 component type.
+
vec< 1, int32, defaultp > i32vec1
32 bit signed integer vector of 1 component type.
+
vec< 1, int64, defaultp > i64vec1
64 bit signed integer vector of 1 component type.
+ + + + diff --git a/include/glm/doc/api/a00464.html b/include/glm/doc/api/a00464.html new file mode 100644 index 0000000..0162fbb --- /dev/null +++ b/include/glm/doc/api/a00464.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_int2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 2, int, defaultp > ivec2
 2 components vector of signed integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_int2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00464_source.html b/include/glm/doc/api/a00464_source.html new file mode 100644 index 0000000..c13cc4f --- /dev/null +++ b/include/glm/doc/api/a00464_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_int2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<2, int, defaultp> ivec2;
+
16 
+
18 }//namespace glm
+
+
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
+ + + + diff --git a/include/glm/doc/api/a00467.html b/include/glm/doc/api/a00467.html new file mode 100644 index 0000000..34a5663 --- /dev/null +++ b/include/glm/doc/api/a00467.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_int2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int2_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_int2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, int16, defaultp > i16vec2
 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int32, defaultp > i32vec2
 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int64, defaultp > i64vec2
 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int8, defaultp > i8vec2
 8 bit signed integer vector of 2 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00467_source.html b/include/glm/doc/api/a00467_source.html new file mode 100644 index 0000000..04a0447 --- /dev/null +++ b/include/glm/doc/api/a00467_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_int2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_int2.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_int2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<2, int8, defaultp> i8vec2;
+
32 
+
36  typedef vec<2, int16, defaultp> i16vec2;
+
37 
+
41  typedef vec<2, int32, defaultp> i32vec2;
+
42 
+
46  typedef vec<2, int64, defaultp> i64vec2;
+
47 
+
49 }//namespace glm
+
+
vec< 2, int16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
+
vec< 2, int64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
+
vec< 2, int32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
+
vec< 2, int8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
+ + + + diff --git a/include/glm/doc/api/a00470.html b/include/glm/doc/api/a00470.html new file mode 100644 index 0000000..4cdedd8 --- /dev/null +++ b/include/glm/doc/api/a00470.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_int3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 3, int, defaultp > ivec3
 3 components vector of signed integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_int3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00470_source.html b/include/glm/doc/api/a00470_source.html new file mode 100644 index 0000000..5b030d5 --- /dev/null +++ b/include/glm/doc/api/a00470_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_int3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<3, int, defaultp> ivec3;
+
16 
+
18 }//namespace glm
+
+
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
+ + + + diff --git a/include/glm/doc/api/a00473.html b/include/glm/doc/api/a00473.html new file mode 100644 index 0000000..ac228c7 --- /dev/null +++ b/include/glm/doc/api/a00473.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_int3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int3_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_int3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 3, int16, defaultp > i16vec3
 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int32, defaultp > i32vec3
 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int64, defaultp > i64vec3
 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int8, defaultp > i8vec3
 8 bit signed integer vector of 3 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00473_source.html b/include/glm/doc/api/a00473_source.html new file mode 100644 index 0000000..0d34813 --- /dev/null +++ b/include/glm/doc/api/a00473_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_int3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_int3.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_int3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<3, int8, defaultp> i8vec3;
+
32 
+
36  typedef vec<3, int16, defaultp> i16vec3;
+
37 
+
41  typedef vec<3, int32, defaultp> i32vec3;
+
42 
+
46  typedef vec<3, int64, defaultp> i64vec3;
+
47 
+
49 }//namespace glm
+
+
vec< 3, int8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
+
vec< 3, int32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
+
vec< 3, int64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
+
vec< 3, int16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
+ + + + diff --git a/include/glm/doc/api/a00476.html b/include/glm/doc/api/a00476.html new file mode 100644 index 0000000..df2ad4f --- /dev/null +++ b/include/glm/doc/api/a00476.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_int4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 4, int, defaultp > ivec4
 4 components vector of signed integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_int4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00476_source.html b/include/glm/doc/api/a00476_source.html new file mode 100644 index 0000000..8f69320 --- /dev/null +++ b/include/glm/doc/api/a00476_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_int4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<4, int, defaultp> ivec4;
+
16 
+
18 }//namespace glm
+
+
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
+ + + + diff --git a/include/glm/doc/api/a00479.html b/include/glm/doc/api/a00479.html new file mode 100644 index 0000000..a4c7726 --- /dev/null +++ b/include/glm/doc/api/a00479.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_int4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_int4_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_int4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 4, int16, defaultp > i16vec4
 16 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int32, defaultp > i32vec4
 32 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int64, defaultp > i64vec4
 64 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int8, defaultp > i8vec4
 8 bit signed integer vector of 4 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00479_source.html b/include/glm/doc/api/a00479_source.html new file mode 100644 index 0000000..96b625d --- /dev/null +++ b/include/glm/doc/api/a00479_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_int4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_int4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_int4.hpp"
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_int4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<4, int8, defaultp> i8vec4;
+
32 
+
36  typedef vec<4, int16, defaultp> i16vec4;
+
37 
+
41  typedef vec<4, int32, defaultp> i32vec4;
+
42 
+
46  typedef vec<4, int64, defaultp> i64vec4;
+
47 
+
49 }//namespace glm
+
+
vec< 4, int32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
+
vec< 4, int16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
+
vec< 4, int64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
+
vec< 4, int8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
+ + + + diff --git a/include/glm/doc/api/a00482.html b/include/glm/doc/api/a00482.html new file mode 100644 index 0000000..0f42284 --- /dev/null +++ b/include/glm/doc/api/a00482.html @@ -0,0 +1,139 @@ + + + + + + + +1.0.2 API documentation: vector_integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_integer.hpp File Reference
+
+
+ +

GLM_EXT_vector_integer +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findNSB (vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)
 Returns the bit number of the Nth significant bit set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isMultiple (vec< L, T, Q > const &v, T Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isPowerOfTwo (vec< L, T, Q > const &v)
 Return true if the value is a power of two number. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextMultiple (vec< L, T, Q > const &v, T Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevMultiple (vec< L, T, Q > const &v, T Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
+

Detailed Description

+

GLM_EXT_vector_integer

+
See also
Core features (dependence)
+
+GLM_EXT_vector_integer (dependence)
+ +

Definition in file vector_integer.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00482_source.html b/include/glm/doc/api/a00482_source.html new file mode 100644 index 0000000..6e8237c --- /dev/null +++ b/include/glm/doc/api/a00482_source.html @@ -0,0 +1,139 @@ + + + + + + + +1.0.2 API documentation: vector_integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
12 #pragma once
+
13 
+
14 // Dependencies
+
15 #include "../detail/setup.hpp"
+
16 #include "../detail/qualifier.hpp"
+
17 #include "../detail/_vectorize.hpp"
+
18 #include "../vector_relational.hpp"
+
19 #include "../common.hpp"
+
20 #include <limits>
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_EXT_vector_integer extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
38  template<length_t L, typename T, qualifier Q>
+
39  GLM_FUNC_DECL vec<L, bool, Q> isPowerOfTwo(vec<L, T, Q> const& v);
+
40 
+
49  template<length_t L, typename T, qualifier Q>
+
50  GLM_FUNC_DECL vec<L, T, Q> nextPowerOfTwo(vec<L, T, Q> const& v);
+
51 
+
60  template<length_t L, typename T, qualifier Q>
+
61  GLM_FUNC_DECL vec<L, T, Q> prevPowerOfTwo(vec<L, T, Q> const& v);
+
62 
+
70  template<length_t L, typename T, qualifier Q>
+
71  GLM_FUNC_DECL vec<L, bool, Q> isMultiple(vec<L, T, Q> const& v, T Multiple);
+
72 
+
80  template<length_t L, typename T, qualifier Q>
+
81  GLM_FUNC_DECL vec<L, bool, Q> isMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
82 
+
93  template<length_t L, typename T, qualifier Q>
+
94  GLM_FUNC_DECL vec<L, T, Q> nextMultiple(vec<L, T, Q> const& v, T Multiple);
+
95 
+
106  template<length_t L, typename T, qualifier Q>
+
107  GLM_FUNC_DECL vec<L, T, Q> nextMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
108 
+
119  template<length_t L, typename T, qualifier Q>
+
120  GLM_FUNC_DECL vec<L, T, Q> prevMultiple(vec<L, T, Q> const& v, T Multiple);
+
121 
+
132  template<length_t L, typename T, qualifier Q>
+
133  GLM_FUNC_DECL vec<L, T, Q> prevMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
134 
+
143  template<length_t L, typename T, qualifier Q>
+
144  GLM_FUNC_DECL vec<L, int, Q> findNSB(vec<L, T, Q> const& Source, vec<L, int, Q> SignificantBitCount);
+
145 
+
147 } //namespace glm
+
148 
+
149 #include "vector_integer.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Higher multiple number of Source.
+
GLM_FUNC_DECL vec< L, bool, Q > isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Return true if the 'Value' is a multiple of 'Multiple'.
+
GLM_FUNC_DECL vec< L, T, Q > nextPowerOfTwo(vec< L, T, Q > const &v)
Return the power of two number which value is just higher the input value, round up to a power of two...
+
GLM_FUNC_DECL vec< L, T, Q > prevPowerOfTwo(vec< L, T, Q > const &v)
Return the power of two number which value is just lower the input value, round down to a power of tw...
+
GLM_FUNC_DECL vec< L, int, Q > findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)
Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.
+
GLM_FUNC_DECL vec< L, T, Q > prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Lower multiple number of Source.
+
GLM_FUNC_DECL vec< L, bool, Q > isPowerOfTwo(vec< L, T, Q > const &v)
Return true if the value is a power of two number.
+ + + + diff --git a/include/glm/doc/api/a00485.html b/include/glm/doc/api/a00485.html new file mode 100644 index 0000000..ca11b2f --- /dev/null +++ b/include/glm/doc/api/a00485.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: vector_packing.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_packing.hpp File Reference
+
+
+ +

GLM_EXT_vector_packing +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_EXT_vector_packing

+
See also
Core features (dependence)
+ +

Definition in file vector_packing.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00485_source.html b/include/glm/doc/api/a00485_source.html new file mode 100644 index 0000000..621487c --- /dev/null +++ b/include/glm/doc/api/a00485_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_packing.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_packing.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../detail/qualifier.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_packing extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
28 
+
30 }// namespace glm
+
31 
+
32 #include "vector_packing.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00488.html b/include/glm/doc/api/a00488.html new file mode 100644 index 0000000..acf274a --- /dev/null +++ b/include/glm/doc/api/a00488.html @@ -0,0 +1,145 @@ + + + + + + + +1.0.2 API documentation: vector_reciprocal.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_reciprocal.hpp File Reference
+
+
+ +

GLM_EXT_vector_reciprocal +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType acot (genType x)
 Inverse cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acoth (genType x)
 Inverse cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsc (genType x)
 Inverse cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsch (genType x)
 Inverse cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asec (genType x)
 Inverse secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asech (genType x)
 Inverse secant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType cot (genType angle)
 Cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType coth (genType angle)
 Cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csc (genType angle)
 Cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csch (genType angle)
 Cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sec (genType angle)
 Secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sech (genType angle)
 Secant hyperbolic function. More...
 
+

Detailed Description

+

GLM_EXT_vector_reciprocal

+
See also
Core features (dependence)
+ +

Definition in file vector_reciprocal.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00488_source.html b/include/glm/doc/api/a00488_source.html new file mode 100644 index 0000000..a44513e --- /dev/null +++ b/include/glm/doc/api/a00488_source.html @@ -0,0 +1,146 @@ + + + + + + + +1.0.2 API documentation: vector_reciprocal.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_reciprocal.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../detail/setup.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_vector_reciprocal extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
33  template<typename genType>
+
34  GLM_FUNC_DECL genType sec(genType angle);
+
35 
+
42  template<typename genType>
+
43  GLM_FUNC_DECL genType csc(genType angle);
+
44 
+
51  template<typename genType>
+
52  GLM_FUNC_DECL genType cot(genType angle);
+
53 
+
60  template<typename genType>
+
61  GLM_FUNC_DECL genType asec(genType x);
+
62 
+
69  template<typename genType>
+
70  GLM_FUNC_DECL genType acsc(genType x);
+
71 
+
78  template<typename genType>
+
79  GLM_FUNC_DECL genType acot(genType x);
+
80 
+
86  template<typename genType>
+
87  GLM_FUNC_DECL genType sech(genType angle);
+
88 
+
94  template<typename genType>
+
95  GLM_FUNC_DECL genType csch(genType angle);
+
96 
+
102  template<typename genType>
+
103  GLM_FUNC_DECL genType coth(genType angle);
+
104 
+
111  template<typename genType>
+
112  GLM_FUNC_DECL genType asech(genType x);
+
113 
+
120  template<typename genType>
+
121  GLM_FUNC_DECL genType acsch(genType x);
+
122 
+
129  template<typename genType>
+
130  GLM_FUNC_DECL genType acoth(genType x);
+
131 
+
133 }//namespace glm
+
134 
+
135 #include "vector_reciprocal.inl"
+
+
GLM_FUNC_DECL genType cot(genType angle)
Cotangent function.
+
GLM_FUNC_DECL genType sec(genType angle)
Secant function.
+
GLM_FUNC_DECL genType csch(genType angle)
Cosecant hyperbolic function.
+
GLM_FUNC_DECL genType sech(genType angle)
Secant hyperbolic function.
+
GLM_FUNC_DECL genType csc(genType angle)
Cosecant function.
+
GLM_FUNC_DECL genType acot(genType x)
Inverse cotangent function.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL genType asech(genType x)
Inverse secant hyperbolic function.
+
GLM_FUNC_DECL genType acsch(genType x)
Inverse cosecant hyperbolic function.
+
GLM_FUNC_DECL genType acoth(genType x)
Inverse cotangent hyperbolic function.
+
GLM_FUNC_DECL genType coth(genType angle)
Cotangent hyperbolic function.
+
GLM_FUNC_DECL genType acsc(genType x)
Inverse cosecant function.
+
GLM_FUNC_DECL genType asec(genType x)
Inverse secant function.
+ + + + diff --git a/include/glm/doc/api/a00491.html b/include/glm/doc/api/a00491.html new file mode 100644 index 0000000..c49bde5 --- /dev/null +++ b/include/glm/doc/api/a00491.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: vector_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_relational.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR bool all (vec< L, bool, Q > const &v)
 Returns true if all components of x are true. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR bool any (vec< L, bool, Q > const &v)
 Returns true if any component of x is true. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x == y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThan (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThanEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThan (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThanEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > not_ (vec< L, bool, Q > const &v)
 Returns the component-wise logical complement of x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x != y. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00491_source.html b/include/glm/doc/api/a00491_source.html new file mode 100644 index 0000000..4b5cf21 --- /dev/null +++ b/include/glm/doc/api/a00491_source.html @@ -0,0 +1,129 @@ + + + + + + + +1.0.2 API documentation: vector_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 #include "detail/qualifier.hpp"
+
23 #include "detail/setup.hpp"
+
24 
+
25 namespace glm
+
26 {
+
29 
+
37  template<length_t L, typename T, qualifier Q>
+
38  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> lessThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
39 
+
47  template<length_t L, typename T, qualifier Q>
+
48  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> lessThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
49 
+
57  template<length_t L, typename T, qualifier Q>
+
58  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> greaterThan(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
59 
+
67  template<length_t L, typename T, qualifier Q>
+
68  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> greaterThanEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
69 
+
77  template<length_t L, typename T, qualifier Q>
+
78  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
79 
+
87  template<length_t L, typename T, qualifier Q>
+
88  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
89 
+
96  template<length_t L, qualifier Q>
+
97  GLM_FUNC_DECL GLM_CONSTEXPR bool any(vec<L, bool, Q> const& v);
+
98 
+
105  template<length_t L, qualifier Q>
+
106  GLM_FUNC_DECL GLM_CONSTEXPR bool all(vec<L, bool, Q> const& v);
+
107 
+
115  template<length_t L, qualifier Q>
+
116  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> not_(vec<L, bool, Q> const& v);
+
117 
+
119 }//namespace glm
+
120 
+
121 #include "detail/func_vector_relational.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison of result x <= y.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison of result x > y.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison of result x == y.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison result of x < y.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison of result x != y.
+
GLM_FUNC_DECL GLM_CONSTEXPR bool any(vec< L, bool, Q > const &v)
Returns true if any component of x is true.
+
GLM_FUNC_DECL GLM_CONSTEXPR bool all(vec< L, bool, Q > const &v)
Returns true if all components of x are true.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > not_(vec< L, bool, Q > const &v)
Returns the component-wise logical complement of x.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the component-wise comparison of result x >= y.
+ + + + diff --git a/include/glm/doc/api/a00494.html b/include/glm/doc/api/a00494.html new file mode 100644 index 0000000..44bd2cb --- /dev/null +++ b/include/glm/doc/api/a00494.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vector_uint1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint1.hpp File Reference
+
+
+ +

GLM_EXT_vector_uint1 +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

+typedef vec< 1, unsigned int, defaultp > uvec1
 1 component vector of unsigned integer numbers.
 
+

Detailed Description

+

GLM_EXT_vector_uint1

+ +

Definition in file vector_uint1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00494_source.html b/include/glm/doc/api/a00494_source.html new file mode 100644 index 0000000..9a11328 --- /dev/null +++ b/include/glm/doc/api/a00494_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: vector_uint1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint1.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../detail/type_vec1.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_EXT_vector_uint1 extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
28  typedef vec<1, unsigned int, defaultp> uvec1;
+
29 
+
31 }//namespace glm
+
32 
+
+
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
+ + + + diff --git a/include/glm/doc/api/a00497.html b/include/glm/doc/api/a00497.html new file mode 100644 index 0000000..914c822 --- /dev/null +++ b/include/glm/doc/api/a00497.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_uint1_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint1_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_uint1_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, uint16, defaultp > u16vec1
 16 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint32, defaultp > u32vec1
 32 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint64, defaultp > u64vec1
 64 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint8, defaultp > u8vec1
 8 bit unsigned integer vector of 1 component type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00497_source.html b/include/glm/doc/api/a00497_source.html new file mode 100644 index 0000000..b1fc4e3 --- /dev/null +++ b/include/glm/doc/api/a00497_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_uint1_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint1_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_uint1.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_uint1_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<1, uint8, defaultp> u8vec1;
+
32 
+
36  typedef vec<1, uint16, defaultp> u16vec1;
+
37 
+
41  typedef vec<1, uint32, defaultp> u32vec1;
+
42 
+
46  typedef vec<1, uint64, defaultp> u64vec1;
+
47 
+
49 }//namespace glm
+
+
vec< 1, uint8, defaultp > u8vec1
8 bit unsigned integer vector of 1 component type.
+
vec< 1, uint16, defaultp > u16vec1
16 bit unsigned integer vector of 1 component type.
+
vec< 1, uint64, defaultp > u64vec1
64 bit unsigned integer vector of 1 component type.
+
vec< 1, uint32, defaultp > u32vec1
32 bit unsigned integer vector of 1 component type.
+ + + + diff --git a/include/glm/doc/api/a00500.html b/include/glm/doc/api/a00500.html new file mode 100644 index 0000000..3e7115e --- /dev/null +++ b/include/glm/doc/api/a00500.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_uint2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 2, unsigned int, defaultp > uvec2
 2 components vector of unsigned integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_uint2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00500_source.html b/include/glm/doc/api/a00500_source.html new file mode 100644 index 0000000..438f06c --- /dev/null +++ b/include/glm/doc/api/a00500_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_uint2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec2.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<2, unsigned int, defaultp> uvec2;
+
16 
+
18 }//namespace glm
+
+
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
+ + + + diff --git a/include/glm/doc/api/a00503.html b/include/glm/doc/api/a00503.html new file mode 100644 index 0000000..41837ab --- /dev/null +++ b/include/glm/doc/api/a00503.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_uint2_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint2_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_uint2_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, uint16, defaultp > u16vec2
 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint32, defaultp > u32vec2
 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint64, defaultp > u64vec2
 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint8, defaultp > u8vec2
 8 bit unsigned integer vector of 2 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00503_source.html b/include/glm/doc/api/a00503_source.html new file mode 100644 index 0000000..1cdc7fc --- /dev/null +++ b/include/glm/doc/api/a00503_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_uint2_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint2_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_uint2.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_uint2_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<2, uint8, defaultp> u8vec2;
+
32 
+
36  typedef vec<2, uint16, defaultp> u16vec2;
+
37 
+
41  typedef vec<2, uint32, defaultp> u32vec2;
+
42 
+
46  typedef vec<2, uint64, defaultp> u64vec2;
+
47 
+
49 }//namespace glm
+
+
vec< 2, uint16, defaultp > u16vec2
16 bit unsigned integer vector of 2 components type.
+
vec< 2, uint32, defaultp > u32vec2
32 bit unsigned integer vector of 2 components type.
+
vec< 2, uint8, defaultp > u8vec2
8 bit unsigned integer vector of 2 components type.
+
vec< 2, uint64, defaultp > u64vec2
64 bit unsigned integer vector of 2 components type.
+ + + + diff --git a/include/glm/doc/api/a00506.html b/include/glm/doc/api/a00506.html new file mode 100644 index 0000000..05aeb05 --- /dev/null +++ b/include/glm/doc/api/a00506.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_uint3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 3, unsigned int, defaultp > uvec3
 3 components vector of unsigned integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_uint3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00506_source.html b/include/glm/doc/api/a00506_source.html new file mode 100644 index 0000000..5f72857 --- /dev/null +++ b/include/glm/doc/api/a00506_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_uint3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint3.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec3.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<3, unsigned int, defaultp> uvec3;
+
16 
+
18 }//namespace glm
+
+
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
+ + + + diff --git a/include/glm/doc/api/a00509.html b/include/glm/doc/api/a00509.html new file mode 100644 index 0000000..861a649 --- /dev/null +++ b/include/glm/doc/api/a00509.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_uint3_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint3_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_uint3_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 3, uint16, defaultp > u16vec3
 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint32, defaultp > u32vec3
 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint64, defaultp > u64vec3
 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint8, defaultp > u8vec3
 8 bit unsigned integer vector of 3 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00509_source.html b/include/glm/doc/api/a00509_source.html new file mode 100644 index 0000000..92444ea --- /dev/null +++ b/include/glm/doc/api/a00509_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_uint3_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint3_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_uint3.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_uint3_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<3, uint8, defaultp> u8vec3;
+
32 
+
36  typedef vec<3, uint16, defaultp> u16vec3;
+
37 
+
41  typedef vec<3, uint32, defaultp> u32vec3;
+
42 
+
46  typedef vec<3, uint64, defaultp> u64vec3;
+
47 
+
49 }//namespace glm
+
+
vec< 3, uint16, defaultp > u16vec3
16 bit unsigned integer vector of 3 components type.
+
vec< 3, uint32, defaultp > u32vec3
32 bit unsigned integer vector of 3 components type.
+
vec< 3, uint64, defaultp > u64vec3
64 bit unsigned integer vector of 3 components type.
+
vec< 3, uint8, defaultp > u8vec3
8 bit unsigned integer vector of 3 components type.
+ + + + diff --git a/include/glm/doc/api/a00512.html b/include/glm/doc/api/a00512.html new file mode 100644 index 0000000..269e42b --- /dev/null +++ b/include/glm/doc/api/a00512.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: vector_uint4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef vec< 4, unsigned int, defaultp > uvec4
 4 components vector of unsigned integer numbers. More...
 
+

Detailed Description

+

Core features

+ +

Definition in file vector_uint4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00512_source.html b/include/glm/doc/api/a00512_source.html new file mode 100644 index 0000000..30c73de --- /dev/null +++ b/include/glm/doc/api/a00512_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: vector_uint4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "../detail/type_vec4.hpp"
+
6 
+
7 namespace glm
+
8 {
+
11 
+
15  typedef vec<4, unsigned int, defaultp> uvec4;
+
16 
+
18 }//namespace glm
+
+
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
+ + + + diff --git a/include/glm/doc/api/a00515.html b/include/glm/doc/api/a00515.html new file mode 100644 index 0000000..98c2eea --- /dev/null +++ b/include/glm/doc/api/a00515.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: vector_uint4_sized.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_uint4_sized.hpp File Reference
+
+
+ +

GLM_EXT_vector_uint4_sized +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 4, uint16, defaultp > u16vec4
 16 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint32, defaultp > u32vec4
 32 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint64, defaultp > u64vec4
 64 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint8, defaultp > u8vec4
 8 bit unsigned integer vector of 4 components type. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00515_source.html b/include/glm/doc/api/a00515_source.html new file mode 100644 index 0000000..18f3fc6 --- /dev/null +++ b/include/glm/doc/api/a00515_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: vector_uint4_sized.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_uint4_sized.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 #include "../ext/vector_uint4.hpp"
+
17 #include "../ext/scalar_uint_sized.hpp"
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_EXT_vector_uint4_sized extension included")
+
21 #endif
+
22 
+
23 namespace glm
+
24 {
+
27 
+
31  typedef vec<4, uint8, defaultp> u8vec4;
+
32 
+
36  typedef vec<4, uint16, defaultp> u16vec4;
+
37 
+
41  typedef vec<4, uint32, defaultp> u32vec4;
+
42 
+
46  typedef vec<4, uint64, defaultp> u64vec4;
+
47 
+
49 }//namespace glm
+
+
vec< 4, uint8, defaultp > u8vec4
8 bit unsigned integer vector of 4 components type.
+
vec< 4, uint32, defaultp > u32vec4
32 bit unsigned integer vector of 4 components type.
+
vec< 4, uint64, defaultp > u64vec4
64 bit unsigned integer vector of 4 components type.
+
vec< 4, uint16, defaultp > u16vec4
16 bit unsigned integer vector of 4 components type.
+ + + + diff --git a/include/glm/doc/api/a00518.html b/include/glm/doc/api/a00518.html new file mode 100644 index 0000000..a5d7f51 --- /dev/null +++ b/include/glm/doc/api/a00518.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: vector_ulp.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_ulp.hpp File Reference
+
+
+ +

GLM_EXT_vector_ulp +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int64, Q > floatDistance (vec< L, double, Q > const &x, vec< L, double, Q > const &y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > floatDistance (vec< L, float, Q > const &x, vec< L, float, Q > const &y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x)
 Return the next ULP value(s) after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

GLM_EXT_vector_ulp

+ +

Definition in file vector_ulp.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00518_source.html b/include/glm/doc/api/a00518_source.html new file mode 100644 index 0000000..f6060b4 --- /dev/null +++ b/include/glm/doc/api/a00518_source.html @@ -0,0 +1,124 @@ + + + + + + + +1.0.2 API documentation: vector_ulp.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_ulp.hpp
+
+
+Go to the documentation of this file.
1 
+
17 #pragma once
+
18 
+
19 // Dependencies
+
20 #include "../ext/scalar_ulp.hpp"
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_EXT_vector_ulp extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
38  template<length_t L, typename T, qualifier Q>
+
39  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x);
+
40 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, int ULPs);
+
50 
+
58  template<length_t L, typename T, qualifier Q>
+
59  GLM_FUNC_DECL vec<L, T, Q> nextFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
+
60 
+
68  template<length_t L, typename T, qualifier Q>
+
69  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x);
+
70 
+
78  template<length_t L, typename T, qualifier Q>
+
79  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, int ULPs);
+
80 
+
88  template<length_t L, typename T, qualifier Q>
+
89  GLM_FUNC_DECL vec<L, T, Q> prevFloat(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
+
90 
+
97  template<length_t L, typename T, qualifier Q>
+
98  GLM_FUNC_DECL vec<L, int, Q> floatDistance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);
+
99 
+
106  template<length_t L, typename T, qualifier Q>
+
107  GLM_FUNC_DECL vec<L, int64, Q> floatDistance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);
+
108 
+
110 }//namespace glm
+
111 
+
112 #include "vector_ulp.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > prevFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
Return the value(s) ULP distance before the input value(s).
+
GLM_FUNC_DECL vec< L, int64, Q > floatDistance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)
Return the distance in the number of ULP between 2 double-precision floating-point scalars.
+
GLM_FUNC_DECL vec< L, T, Q > nextFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
Return the value(s) ULP distance after the input value(s).
+ + + + diff --git a/include/glm/doc/api/a00521.html b/include/glm/doc/api/a00521.html new file mode 100644 index 0000000..f2a5ce0 --- /dev/null +++ b/include/glm/doc/api/a00521.html @@ -0,0 +1,87 @@ + + + + + + + +1.0.2 API documentation: ext.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext.hpp File Reference
+
+
+ +

Go to the source code of this file.

+

Detailed Description

+

Core features (Dependence)

+ +

Definition in file ext.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00521_source.html b/include/glm/doc/api/a00521_source.html new file mode 100644 index 0000000..ecbf465 --- /dev/null +++ b/include/glm/doc/api/a00521_source.html @@ -0,0 +1,562 @@ + + + + + + + +1.0.2 API documentation: ext.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext.hpp
+
+
+Go to the documentation of this file.
1 
+
5 #include "detail/setup.hpp"
+
6 
+
7 #pragma once
+
8 
+
9 #include "./glm.hpp"
+
10 
+
11 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_MESSAGE_EXT_INCLUDED_DISPLAYED)
+
12 # define GLM_MESSAGE_EXT_INCLUDED_DISPLAYED
+
13 # pragma message("GLM: All extensions included (not recommended)")
+
14 #endif//GLM_MESSAGES
+
15 
+ +
17 #include "./ext/matrix_common.hpp"
+
18 
+ + + + + + + + + + + + + + + + + + +
37 
+ + + + + + + + + + + + + +
51 #include "./ext/matrix_float4x2_precision.hpp"
+ + + + +
56 
+
57 #include "./ext/matrix_int2x2.hpp"
+ +
59 #include "./ext/matrix_int2x3.hpp"
+ +
61 #include "./ext/matrix_int2x4.hpp"
+ +
63 #include "./ext/matrix_int3x2.hpp"
+ +
65 #include "./ext/matrix_int3x3.hpp"
+ +
67 #include "./ext/matrix_int3x4.hpp"
+
68 #include "./ext/matrix_int3x4_sized.hpp"
+
69 #include "./ext/matrix_int4x2.hpp"
+ +
71 #include "./ext/matrix_int4x3.hpp"
+ +
73 #include "./ext/matrix_int4x4.hpp"
+ +
75 
+
76 #include "./ext/matrix_uint2x2.hpp"
+ +
78 #include "./ext/matrix_uint2x3.hpp"
+ +
80 #include "./ext/matrix_uint2x4.hpp"
+ +
82 #include "./ext/matrix_uint3x2.hpp"
+ +
84 #include "./ext/matrix_uint3x3.hpp"
+ +
86 #include "./ext/matrix_uint3x4.hpp"
+
87 #include "./ext/matrix_uint3x4_sized.hpp"
+
88 #include "./ext/matrix_uint4x2.hpp"
+ +
90 #include "./ext/matrix_uint4x3.hpp"
+ +
92 #include "./ext/matrix_uint4x4.hpp"
+ +
94 
+ + + +
98 
+ + + + + + + + + + +
109 
+
110 #include "./ext/scalar_common.hpp"
+ +
112 #include "./ext/scalar_integer.hpp"
+
113 #include "./ext/scalar_packing.hpp"
+ + +
116 #include "./ext/scalar_ulp.hpp"
+
117 
+ + +
120 
+
121 #include "./ext/vector_common.hpp"
+
122 #include "./ext/vector_integer.hpp"
+
123 #include "./ext/vector_packing.hpp"
+ + +
126 #include "./ext/vector_ulp.hpp"
+
127 
+
128 #include "./ext/vector_bool1.hpp"
+ +
130 #include "./ext/vector_bool2.hpp"
+ +
132 #include "./ext/vector_bool3.hpp"
+ +
134 #include "./ext/vector_bool4.hpp"
+ +
136 
+
137 #include "./ext/vector_double1.hpp"
+ +
139 #include "./ext/vector_double2.hpp"
+ +
141 #include "./ext/vector_double3.hpp"
+ +
143 #include "./ext/vector_double4.hpp"
+ +
145 
+
146 #include "./ext/vector_float1.hpp"
+ +
148 #include "./ext/vector_float2.hpp"
+ +
150 #include "./ext/vector_float3.hpp"
+ +
152 #include "./ext/vector_float4.hpp"
+ +
154 
+
155 #include "./ext/vector_int1.hpp"
+ +
157 #include "./ext/vector_int2.hpp"
+ +
159 #include "./ext/vector_int3.hpp"
+ +
161 #include "./ext/vector_int4.hpp"
+ +
163 
+
164 #include "./ext/vector_uint1.hpp"
+ +
166 #include "./ext/vector_uint2.hpp"
+ +
168 #include "./ext/vector_uint3.hpp"
+ +
170 #include "./ext/vector_uint4.hpp"
+ +
172 
+
173 #include "./gtc/bitfield.hpp"
+
174 #include "./gtc/color_space.hpp"
+
175 #include "./gtc/constants.hpp"
+
176 #include "./gtc/epsilon.hpp"
+
177 #include "./gtc/integer.hpp"
+
178 #include "./gtc/matrix_access.hpp"
+
179 #include "./gtc/matrix_integer.hpp"
+
180 #include "./gtc/matrix_inverse.hpp"
+ +
182 #include "./gtc/noise.hpp"
+
183 #include "./gtc/packing.hpp"
+
184 #include "./gtc/quaternion.hpp"
+
185 #include "./gtc/random.hpp"
+
186 #include "./gtc/reciprocal.hpp"
+
187 #include "./gtc/round.hpp"
+
188 #include "./gtc/type_precision.hpp"
+
189 #include "./gtc/type_ptr.hpp"
+
190 #include "./gtc/ulp.hpp"
+
191 #include "./gtc/vec1.hpp"
+
192 #if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE
+
193 # include "./gtc/type_aligned.hpp"
+
194 #endif
+
195 
+
196 #ifdef GLM_ENABLE_EXPERIMENTAL
+ +
198 #include "./gtx/bit.hpp"
+
199 #include "./gtx/closest_point.hpp"
+
200 #include "./gtx/color_encoding.hpp"
+
201 #include "./gtx/color_space.hpp"
+ +
203 #include "./gtx/common.hpp"
+
204 #include "./gtx/compatibility.hpp"
+
205 #include "./gtx/component_wise.hpp"
+
206 #include "./gtx/dual_quaternion.hpp"
+
207 #include "./gtx/easing.hpp"
+
208 #include "./gtx/euler_angles.hpp"
+
209 #include "./gtx/extend.hpp"
+ + + + +
214 #include "./gtx/functions.hpp"
+
215 #include "./gtx/gradient_paint.hpp"
+ +
217 
+
218 #if __cplusplus >= 201103L
+
219 #include "./gtx/hash.hpp"
+
220 #endif
+
221 
+
222 #include "./gtx/integer.hpp"
+
223 #include "./gtx/intersect.hpp"
+
224 #include "./gtx/io.hpp"
+
225 #include "./gtx/log_base.hpp"
+ + + + + + +
232 #include "./gtx/matrix_query.hpp"
+
233 #include "./gtx/mixed_product.hpp"
+
234 #include "./gtx/norm.hpp"
+
235 #include "./gtx/normal.hpp"
+
236 #include "./gtx/normalize_dot.hpp"
+ +
238 #include "./gtx/optimum_pow.hpp"
+
239 #include "./gtx/orthonormalize.hpp"
+
240 #include "./gtx/pca.hpp"
+
241 #include "./gtx/perpendicular.hpp"
+ +
243 #include "./gtx/projection.hpp"
+
244 #include "./gtx/quaternion.hpp"
+
245 #include "./gtx/raw_data.hpp"
+ +
247 #include "./gtx/rotate_vector.hpp"
+
248 #include "./gtx/spline.hpp"
+
249 #include "./gtx/std_based_type.hpp"
+
250 #if !((GLM_COMPILER & GLM_COMPILER_CUDA) || (GLM_COMPILER & GLM_COMPILER_HIP))
+
251 # include "./gtx/string_cast.hpp"
+
252 #endif
+
253 #include "./gtx/transform.hpp"
+
254 #include "./gtx/transform2.hpp"
+
255 #include "./gtx/vec_swizzle.hpp"
+
256 #include "./gtx/vector_angle.hpp"
+
257 #include "./gtx/vector_query.hpp"
+
258 #include "./gtx/wrap.hpp"
+
259 
+
260 #if GLM_HAS_TEMPLATE_ALIASES
+ +
262 #endif
+
263 
+
264 #if GLM_HAS_RANGE_FOR
+
265 # include "./gtx/range.hpp"
+
266 #endif
+
267 #endif//GLM_ENABLE_EXPERIMENTAL
+
+
GLM_GTX_scalar_multiplication
+
Core features
+ + +
GLM_EXT_vector_int1
+
GLM_GTX_range
+
GLM_EXT_vector_uint2_sized
+
Core features
+
GLM_GTX_vector_angle
+
Core features
+
GLM_EXT_quaternion_geometric
+ +
GLM_GTX_orthonormalize
+
GLM_EXT_vector_bool1_precision
+
GLM_GTX_hash
+
GLM_EXT_matrix_uint3x3_sized
+
GLM_GTC_type_aligned
+
GLM_GTX_norm
+
GLM_GTX_color_space_YCoCg
+
GLM_EXT_matrix_int4x2
+
GLM_GTC_epsilon
+
GLM_GTX_matrix_operation
+
GLM_EXT_matrix_int3x3
+
GLM_EXT_matrix_uint2x2
+
GLM_EXT_matrix_uint4x2
+
GLM_GTX_dual_quaternion
+ + +
GLM_GTX_transform2
+
GLM_EXT_vector_float1_precision
+
GLM_EXT_matrix_int3x2
+ +
GLM_EXT_vector_int4_sized
+
GLM_EXT_matrix_relational
+
GLM_GTX_string_cast
+ +
GLM_GTC_reciprocal
+
Core features
+ +
GLM_GTX_rotate_normalized_axis
+
GLM_EXT_matrix_int4x4
+
GLM_GTC_noise
+
GLM_EXT_vector_double1
+
GLM_EXT_matrix_common
+ +
Core features
+
GLM_GTX_polar_coordinates
+
GLM_GTC_matrix_integer
+
Core features
+
Core features
+
GLM_GTX_number_precision
+
GLM_EXT_scalar_ulp
+
GLM_EXT_quaternion_double
+
GLM_GTX_fast_square_root
+
GLM_GTC_packing
+ +
GLM_EXT_matrix_uint4x3_sized
+ +
GLM_GTX_pca
+
GLM_EXT_scalar_constants
+
GLM_GTX_extend
+
GLM_GTX_matrix_cross_product
+
GLM_EXT_matrix_uint3x4
+
GLM_EXT_matrix_int4x2_sized
+
GLM_GTX_compatibility
+
GLM_EXT_matrix_uint2x4_sized
+
GLM_GTX_associated_min_max
+
GLM_EXT_matrix_int3x3_sized
+
GLM_EXT_matrix_uint2x2_sized
+
GLM_GTC_bitfield
+
GLM_GTC_type_precision
+ + +
GLM_GTX_spline
+
GLM_EXT_matrix_int2x2_sized
+
GLM_EXT_vector_uint3_sized
+
GLM_EXT_vector_relational
+ +
GLM_EXT_quaternion_float
+ +
GLM_EXT_vector_int2_sized
+
GLM_GTX_rotate_vector
+ +
GLM_GTX_gradient_paint
+
GLM_EXT_scalar_relational
+
GLM_EXT_vector_double1_precision
+ + +
GLM_GTX_projection
+ +
GLM_GTX_vec_swizzle
+
GLM_EXT_matrix_transform
+
GLM_EXT_matrix_uint4x2_sized
+
GLM_GTX_common
+
GLM_EXT_vector_bool1
+
GLM_GTX_easing
+
GLM_EXT_matrix_uint3x3
+
GLM_GTX_mixed_producte
+
GLM_GTX_color_encoding
+
GLM_EXT_matrix_uint2x3_sized
+
GLM_GTC_ulp
+
GLM_EXT_matrix_int2x4
+
GLM_GTX_component_wise
+
GLM_EXT_vector_ulp
+
Core features
+ +
GLM_EXT_vector_reciprocal
+
GLM_GTX_transform
+
Core features
+
GLM_EXT_vector_float1
+ +
Core features
+
GLM_GTX_std_based_type
+
Core features
+
GLM_EXT_quaternion_double_precision
+
GLM_EXT_vector_int1_sized
+ +
GLM_GTX_fast_trigonometry
+
GLM_GTX_vector_query
+
GLM_GTC_quaternion
+
GLM_GTC_color_space
+
GLM_EXT_matrix_uint3x2
+
GLM_EXT_quaternion_common
+
GLM_GTX_bit
+
GLM_EXT_scalar_packing
+
GLM_GTX_fast_exponential
+
GLM_GTC_constants
+
GLM_GTC_matrix_transform
+
GLM_GTX_matrix_interpolation
+
GLM_EXT_matrix_uint4x3
+
GLM_EXT_scalar_common
+
GLM_GTX_euler_angles
+
GLM_GTX_log_base
+
GLM_EXT_matrix_int2x3
+
GLM_EXT_vector_uint1_sized
+
GLM_EXT_matrix_int2x4
+
Core features
+ +
GLM_GTC_vec1
+
Core features
+ +
GLM_EXT_vector_integer
+
Core features
+
Core features
+
Core features
+ +
GLM_EXT_matrix_int2x2
+ +
GLM_GTX_raw_data
+
Core features
+
GLM_EXT_quaternion_relational
+
Core features
+
GLM_GTX_intersect
+
GLM_GTC_integer
+
GLM_GTX_normal
+
GLM_EXT_quaternion_exponential
+
Core features
+
GLM_EXT_scalar_uint_sized
+
Core features
+
GLM_GTX_functions
+
GLM_GTX_wrap
+
GLM_GTX_quaternion
+
GLM_GTX_matrix_query
+
GLM_EXT_matrix_uint4x4
+
GLM_EXT_matrix_projection
+
GLM_EXT_scalar_int_sized
+
GLM_GTX_extended_min_max
+
GLM_GTC_random
+
GLM_GTX_matrix_decompose
+
GLM_GTX_color_space
+
GLM_EXT_quaternion_transform
+
GLM_EXT_matrix_uint3x2_sized
+
GLM_GTX_io
+
GLM_GTX_closest_point
+
GLM_EXT_matrix_int3x2_sized
+
GLM_GTC_round
+
GLM_EXT_matrix_int2x3_sized
+
GLM_EXT_matrix_int4x4_sized
+
GLM_EXT_vector_uint4_sized
+ +
Core features
+ + +
GLM_EXT_vector_packing
+
Core features
+ + +
GLM_GTX_optimum_pow
+
GLM_EXT_quaternion_float_precision
+
GLM_EXT_vector_int3_sized
+
GLM_GTX_handed_coordinate_space
+ +
GLM_EXT_scalar_reciprocal
+
GLM_EXT_vector_common
+
GLM_GTX_matrix_major_storage
+ +
GLM_GTX_perpendicular
+
GLM_GTX_integer
+
GLM_EXT_matrix_int4x3
+
GLM_GTC_matrix_access
+
GLM_EXT_matrix_uint4x4_sized
+
GLM_EXT_matrix_int3x4
+
GLM_EXT_scalar_integer
+
GLM_EXT_matrix_uint2x3
+
GLM_GTX_matrix_factorisation
+
GLM_GTC_type_ptr
+
GLM_EXT_matrix_int2x4_sized
+
GLM_EXT_quaternion_trigonometric
+
GLM_EXT_vector_uint1
+
GLM_EXT_matrix_int4x3_sized
+
Core features
+
GLM_GTC_matrix_inverse
+
GLM_EXT_matrix_clip_space
+ +
Core features
+
GLM_GTX_normalize_dot
+ + + + + diff --git a/include/glm/doc/api/a00524_source.html b/include/glm/doc/api/a00524_source.html new file mode 100644 index 0000000..2fa2fdf --- /dev/null +++ b/include/glm/doc/api/a00524_source.html @@ -0,0 +1,2090 @@ + + + + + + + +1.0.2 API documentation: fwd.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fwd.hpp
+
+
+
1 #pragma once
+
2 
+
3 #include "detail/qualifier.hpp"
+
4 
+
5 namespace glm
+
6 {
+
7 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
8  typedef std::int8_t int8;
+
9  typedef std::int16_t int16;
+
10  typedef std::int32_t int32;
+
11  typedef std::int64_t int64;
+
12 
+
13  typedef std::uint8_t uint8;
+
14  typedef std::uint16_t uint16;
+
15  typedef std::uint32_t uint32;
+
16  typedef std::uint64_t uint64;
+
17 #else
+
18  typedef signed char int8;
+
19  typedef signed short int16;
+
20  typedef signed int int32;
+
21  typedef detail::int64 int64;
+
22 
+
23  typedef unsigned char uint8;
+
24  typedef unsigned short uint16;
+
25  typedef unsigned int uint32;
+
26  typedef detail::uint64 uint64;
+
27 #endif
+
28 
+
29  // Scalar int
+
30 
+
31  typedef int8 lowp_i8;
+
32  typedef int8 mediump_i8;
+
33  typedef int8 highp_i8;
+
34  typedef int8 i8;
+
35 
+
36  typedef int8 lowp_int8;
+
37  typedef int8 mediump_int8;
+
38  typedef int8 highp_int8;
+
39 
+
40  typedef int8 lowp_int8_t;
+ +
42  typedef int8 highp_int8_t;
+
43  typedef int8 int8_t;
+
44 
+
45  typedef int16 lowp_i16;
+
46  typedef int16 mediump_i16;
+
47  typedef int16 highp_i16;
+
48  typedef int16 i16;
+
49 
+
50  typedef int16 lowp_int16;
+ +
52  typedef int16 highp_int16;
+
53 
+ + + +
57  typedef int16 int16_t;
+
58 
+
59  typedef int32 lowp_i32;
+
60  typedef int32 mediump_i32;
+
61  typedef int32 highp_i32;
+
62  typedef int32 i32;
+
63 
+
64  typedef int32 lowp_int32;
+ +
66  typedef int32 highp_int32;
+
67 
+ + + +
71  typedef int32 int32_t;
+
72 
+
73  typedef int64 lowp_i64;
+
74  typedef int64 mediump_i64;
+
75  typedef int64 highp_i64;
+
76  typedef int64 i64;
+
77 
+
78  typedef int64 lowp_int64;
+ +
80  typedef int64 highp_int64;
+
81 
+ + + +
85  typedef int64 int64_t;
+
86 
+
87  // Scalar uint
+
88 
+
89  typedef unsigned int uint;
+
90 
+
91  typedef uint8 lowp_u8;
+
92  typedef uint8 mediump_u8;
+
93  typedef uint8 highp_u8;
+
94  typedef uint8 u8;
+
95 
+
96  typedef uint8 lowp_uint8;
+ +
98  typedef uint8 highp_uint8;
+
99 
+ + + +
103  typedef uint8 uint8_t;
+
104 
+
105  typedef uint16 lowp_u16;
+ +
107  typedef uint16 highp_u16;
+
108  typedef uint16 u16;
+
109 
+ + + +
113 
+ + + +
117  typedef uint16 uint16_t;
+
118 
+
119  typedef uint32 lowp_u32;
+ +
121  typedef uint32 highp_u32;
+
122  typedef uint32 u32;
+
123 
+ + + +
127 
+ + + +
131  typedef uint32 uint32_t;
+
132 
+
133  typedef uint64 lowp_u64;
+ +
135  typedef uint64 highp_u64;
+
136  typedef uint64 u64;
+
137 
+ + + +
141 
+ + + +
145  typedef uint64 uint64_t;
+
146 
+
147  // Scalar float
+
148 
+
149  typedef float lowp_f32;
+
150  typedef float mediump_f32;
+
151  typedef float highp_f32;
+
152  typedef float f32;
+
153 
+
154  typedef float lowp_float32;
+
155  typedef float mediump_float32;
+
156  typedef float highp_float32;
+
157  typedef float float32;
+
158 
+
159  typedef float lowp_float32_t;
+
160  typedef float mediump_float32_t;
+
161  typedef float highp_float32_t;
+
162  typedef float float32_t;
+
163 
+
164 
+
165  typedef double lowp_f64;
+
166  typedef double mediump_f64;
+
167  typedef double highp_f64;
+
168  typedef double f64;
+
169 
+
170  typedef double lowp_float64;
+
171  typedef double mediump_float64;
+
172  typedef double highp_float64;
+
173  typedef double float64;
+
174 
+
175  typedef double lowp_float64_t;
+
176  typedef double mediump_float64_t;
+
177  typedef double highp_float64_t;
+
178  typedef double float64_t;
+
179 
+
180  // Vector bool
+
181 
+
182  typedef vec<1, bool, lowp> lowp_bvec1;
+
183  typedef vec<2, bool, lowp> lowp_bvec2;
+
184  typedef vec<3, bool, lowp> lowp_bvec3;
+
185  typedef vec<4, bool, lowp> lowp_bvec4;
+
186 
+
187  typedef vec<1, bool, mediump> mediump_bvec1;
+
188  typedef vec<2, bool, mediump> mediump_bvec2;
+
189  typedef vec<3, bool, mediump> mediump_bvec3;
+
190  typedef vec<4, bool, mediump> mediump_bvec4;
+
191 
+
192  typedef vec<1, bool, highp> highp_bvec1;
+
193  typedef vec<2, bool, highp> highp_bvec2;
+
194  typedef vec<3, bool, highp> highp_bvec3;
+
195  typedef vec<4, bool, highp> highp_bvec4;
+
196 
+
197  typedef vec<1, bool, defaultp> bvec1;
+
198  typedef vec<2, bool, defaultp> bvec2;
+
199  typedef vec<3, bool, defaultp> bvec3;
+
200  typedef vec<4, bool, defaultp> bvec4;
+
201 
+
202  // Vector int
+
203 
+
204  typedef vec<1, int, lowp> lowp_ivec1;
+
205  typedef vec<2, int, lowp> lowp_ivec2;
+
206  typedef vec<3, int, lowp> lowp_ivec3;
+
207  typedef vec<4, int, lowp> lowp_ivec4;
+
208 
+
209  typedef vec<1, int, mediump> mediump_ivec1;
+
210  typedef vec<2, int, mediump> mediump_ivec2;
+
211  typedef vec<3, int, mediump> mediump_ivec3;
+
212  typedef vec<4, int, mediump> mediump_ivec4;
+
213 
+
214  typedef vec<1, int, highp> highp_ivec1;
+
215  typedef vec<2, int, highp> highp_ivec2;
+
216  typedef vec<3, int, highp> highp_ivec3;
+
217  typedef vec<4, int, highp> highp_ivec4;
+
218 
+
219  typedef vec<1, int, defaultp> ivec1;
+
220  typedef vec<2, int, defaultp> ivec2;
+
221  typedef vec<3, int, defaultp> ivec3;
+
222  typedef vec<4, int, defaultp> ivec4;
+
223 
+
224  typedef vec<1, i8, lowp> lowp_i8vec1;
+
225  typedef vec<2, i8, lowp> lowp_i8vec2;
+
226  typedef vec<3, i8, lowp> lowp_i8vec3;
+
227  typedef vec<4, i8, lowp> lowp_i8vec4;
+
228 
+
229  typedef vec<1, i8, mediump> mediump_i8vec1;
+
230  typedef vec<2, i8, mediump> mediump_i8vec2;
+
231  typedef vec<3, i8, mediump> mediump_i8vec3;
+
232  typedef vec<4, i8, mediump> mediump_i8vec4;
+
233 
+
234  typedef vec<1, i8, highp> highp_i8vec1;
+
235  typedef vec<2, i8, highp> highp_i8vec2;
+
236  typedef vec<3, i8, highp> highp_i8vec3;
+
237  typedef vec<4, i8, highp> highp_i8vec4;
+
238 
+
239  typedef vec<1, i8, defaultp> i8vec1;
+
240  typedef vec<2, i8, defaultp> i8vec2;
+
241  typedef vec<3, i8, defaultp> i8vec3;
+
242  typedef vec<4, i8, defaultp> i8vec4;
+
243 
+
244  typedef vec<1, i16, lowp> lowp_i16vec1;
+
245  typedef vec<2, i16, lowp> lowp_i16vec2;
+
246  typedef vec<3, i16, lowp> lowp_i16vec3;
+
247  typedef vec<4, i16, lowp> lowp_i16vec4;
+
248 
+
249  typedef vec<1, i16, mediump> mediump_i16vec1;
+
250  typedef vec<2, i16, mediump> mediump_i16vec2;
+
251  typedef vec<3, i16, mediump> mediump_i16vec3;
+
252  typedef vec<4, i16, mediump> mediump_i16vec4;
+
253 
+
254  typedef vec<1, i16, highp> highp_i16vec1;
+
255  typedef vec<2, i16, highp> highp_i16vec2;
+
256  typedef vec<3, i16, highp> highp_i16vec3;
+
257  typedef vec<4, i16, highp> highp_i16vec4;
+
258 
+
259  typedef vec<1, i16, defaultp> i16vec1;
+
260  typedef vec<2, i16, defaultp> i16vec2;
+
261  typedef vec<3, i16, defaultp> i16vec3;
+
262  typedef vec<4, i16, defaultp> i16vec4;
+
263 
+
264  typedef vec<1, i32, lowp> lowp_i32vec1;
+
265  typedef vec<2, i32, lowp> lowp_i32vec2;
+
266  typedef vec<3, i32, lowp> lowp_i32vec3;
+
267  typedef vec<4, i32, lowp> lowp_i32vec4;
+
268 
+
269  typedef vec<1, i32, mediump> mediump_i32vec1;
+
270  typedef vec<2, i32, mediump> mediump_i32vec2;
+
271  typedef vec<3, i32, mediump> mediump_i32vec3;
+
272  typedef vec<4, i32, mediump> mediump_i32vec4;
+
273 
+
274  typedef vec<1, i32, highp> highp_i32vec1;
+
275  typedef vec<2, i32, highp> highp_i32vec2;
+
276  typedef vec<3, i32, highp> highp_i32vec3;
+
277  typedef vec<4, i32, highp> highp_i32vec4;
+
278 
+
279  typedef vec<1, i32, defaultp> i32vec1;
+
280  typedef vec<2, i32, defaultp> i32vec2;
+
281  typedef vec<3, i32, defaultp> i32vec3;
+
282  typedef vec<4, i32, defaultp> i32vec4;
+
283 
+
284  typedef vec<1, i64, lowp> lowp_i64vec1;
+
285  typedef vec<2, i64, lowp> lowp_i64vec2;
+
286  typedef vec<3, i64, lowp> lowp_i64vec3;
+
287  typedef vec<4, i64, lowp> lowp_i64vec4;
+
288 
+
289  typedef vec<1, i64, mediump> mediump_i64vec1;
+
290  typedef vec<2, i64, mediump> mediump_i64vec2;
+
291  typedef vec<3, i64, mediump> mediump_i64vec3;
+
292  typedef vec<4, i64, mediump> mediump_i64vec4;
+
293 
+
294  typedef vec<1, i64, highp> highp_i64vec1;
+
295  typedef vec<2, i64, highp> highp_i64vec2;
+
296  typedef vec<3, i64, highp> highp_i64vec3;
+
297  typedef vec<4, i64, highp> highp_i64vec4;
+
298 
+
299  typedef vec<1, i64, defaultp> i64vec1;
+
300  typedef vec<2, i64, defaultp> i64vec2;
+
301  typedef vec<3, i64, defaultp> i64vec3;
+
302  typedef vec<4, i64, defaultp> i64vec4;
+
303 
+
304  // Vector uint
+
305 
+
306  typedef vec<1, uint, lowp> lowp_uvec1;
+
307  typedef vec<2, uint, lowp> lowp_uvec2;
+
308  typedef vec<3, uint, lowp> lowp_uvec3;
+
309  typedef vec<4, uint, lowp> lowp_uvec4;
+
310 
+
311  typedef vec<1, uint, mediump> mediump_uvec1;
+
312  typedef vec<2, uint, mediump> mediump_uvec2;
+
313  typedef vec<3, uint, mediump> mediump_uvec3;
+
314  typedef vec<4, uint, mediump> mediump_uvec4;
+
315 
+
316  typedef vec<1, uint, highp> highp_uvec1;
+
317  typedef vec<2, uint, highp> highp_uvec2;
+
318  typedef vec<3, uint, highp> highp_uvec3;
+
319  typedef vec<4, uint, highp> highp_uvec4;
+
320 
+
321  typedef vec<1, uint, defaultp> uvec1;
+
322  typedef vec<2, uint, defaultp> uvec2;
+
323  typedef vec<3, uint, defaultp> uvec3;
+
324  typedef vec<4, uint, defaultp> uvec4;
+
325 
+
326  typedef vec<1, u8, lowp> lowp_u8vec1;
+
327  typedef vec<2, u8, lowp> lowp_u8vec2;
+
328  typedef vec<3, u8, lowp> lowp_u8vec3;
+
329  typedef vec<4, u8, lowp> lowp_u8vec4;
+
330 
+
331  typedef vec<1, u8, mediump> mediump_u8vec1;
+
332  typedef vec<2, u8, mediump> mediump_u8vec2;
+
333  typedef vec<3, u8, mediump> mediump_u8vec3;
+
334  typedef vec<4, u8, mediump> mediump_u8vec4;
+
335 
+
336  typedef vec<1, u8, highp> highp_u8vec1;
+
337  typedef vec<2, u8, highp> highp_u8vec2;
+
338  typedef vec<3, u8, highp> highp_u8vec3;
+
339  typedef vec<4, u8, highp> highp_u8vec4;
+
340 
+
341  typedef vec<1, u8, defaultp> u8vec1;
+
342  typedef vec<2, u8, defaultp> u8vec2;
+
343  typedef vec<3, u8, defaultp> u8vec3;
+
344  typedef vec<4, u8, defaultp> u8vec4;
+
345 
+
346  typedef vec<1, u16, lowp> lowp_u16vec1;
+
347  typedef vec<2, u16, lowp> lowp_u16vec2;
+
348  typedef vec<3, u16, lowp> lowp_u16vec3;
+
349  typedef vec<4, u16, lowp> lowp_u16vec4;
+
350 
+
351  typedef vec<1, u16, mediump> mediump_u16vec1;
+
352  typedef vec<2, u16, mediump> mediump_u16vec2;
+
353  typedef vec<3, u16, mediump> mediump_u16vec3;
+
354  typedef vec<4, u16, mediump> mediump_u16vec4;
+
355 
+
356  typedef vec<1, u16, highp> highp_u16vec1;
+
357  typedef vec<2, u16, highp> highp_u16vec2;
+
358  typedef vec<3, u16, highp> highp_u16vec3;
+
359  typedef vec<4, u16, highp> highp_u16vec4;
+
360 
+
361  typedef vec<1, u16, defaultp> u16vec1;
+
362  typedef vec<2, u16, defaultp> u16vec2;
+
363  typedef vec<3, u16, defaultp> u16vec3;
+
364  typedef vec<4, u16, defaultp> u16vec4;
+
365 
+
366  typedef vec<1, u32, lowp> lowp_u32vec1;
+
367  typedef vec<2, u32, lowp> lowp_u32vec2;
+
368  typedef vec<3, u32, lowp> lowp_u32vec3;
+
369  typedef vec<4, u32, lowp> lowp_u32vec4;
+
370 
+
371  typedef vec<1, u32, mediump> mediump_u32vec1;
+
372  typedef vec<2, u32, mediump> mediump_u32vec2;
+
373  typedef vec<3, u32, mediump> mediump_u32vec3;
+
374  typedef vec<4, u32, mediump> mediump_u32vec4;
+
375 
+
376  typedef vec<1, u32, highp> highp_u32vec1;
+
377  typedef vec<2, u32, highp> highp_u32vec2;
+
378  typedef vec<3, u32, highp> highp_u32vec3;
+
379  typedef vec<4, u32, highp> highp_u32vec4;
+
380 
+
381  typedef vec<1, u32, defaultp> u32vec1;
+
382  typedef vec<2, u32, defaultp> u32vec2;
+
383  typedef vec<3, u32, defaultp> u32vec3;
+
384  typedef vec<4, u32, defaultp> u32vec4;
+
385 
+
386  typedef vec<1, u64, lowp> lowp_u64vec1;
+
387  typedef vec<2, u64, lowp> lowp_u64vec2;
+
388  typedef vec<3, u64, lowp> lowp_u64vec3;
+
389  typedef vec<4, u64, lowp> lowp_u64vec4;
+
390 
+
391  typedef vec<1, u64, mediump> mediump_u64vec1;
+
392  typedef vec<2, u64, mediump> mediump_u64vec2;
+
393  typedef vec<3, u64, mediump> mediump_u64vec3;
+
394  typedef vec<4, u64, mediump> mediump_u64vec4;
+
395 
+
396  typedef vec<1, u64, highp> highp_u64vec1;
+
397  typedef vec<2, u64, highp> highp_u64vec2;
+
398  typedef vec<3, u64, highp> highp_u64vec3;
+
399  typedef vec<4, u64, highp> highp_u64vec4;
+
400 
+
401  typedef vec<1, u64, defaultp> u64vec1;
+
402  typedef vec<2, u64, defaultp> u64vec2;
+
403  typedef vec<3, u64, defaultp> u64vec3;
+
404  typedef vec<4, u64, defaultp> u64vec4;
+
405 
+
406  // Vector float
+
407 
+
408  typedef vec<1, float, lowp> lowp_vec1;
+
409  typedef vec<2, float, lowp> lowp_vec2;
+
410  typedef vec<3, float, lowp> lowp_vec3;
+
411  typedef vec<4, float, lowp> lowp_vec4;
+
412 
+
413  typedef vec<1, float, mediump> mediump_vec1;
+
414  typedef vec<2, float, mediump> mediump_vec2;
+
415  typedef vec<3, float, mediump> mediump_vec3;
+
416  typedef vec<4, float, mediump> mediump_vec4;
+
417 
+
418  typedef vec<1, float, highp> highp_vec1;
+
419  typedef vec<2, float, highp> highp_vec2;
+
420  typedef vec<3, float, highp> highp_vec3;
+
421  typedef vec<4, float, highp> highp_vec4;
+
422 
+
423  typedef vec<1, float, defaultp> vec1;
+
424  typedef vec<2, float, defaultp> vec2;
+
425  typedef vec<3, float, defaultp> vec3;
+
426  typedef vec<4, float, defaultp> vec4;
+
427 
+
428  typedef vec<1, float, lowp> lowp_fvec1;
+
429  typedef vec<2, float, lowp> lowp_fvec2;
+
430  typedef vec<3, float, lowp> lowp_fvec3;
+
431  typedef vec<4, float, lowp> lowp_fvec4;
+
432 
+
433  typedef vec<1, float, mediump> mediump_fvec1;
+
434  typedef vec<2, float, mediump> mediump_fvec2;
+
435  typedef vec<3, float, mediump> mediump_fvec3;
+
436  typedef vec<4, float, mediump> mediump_fvec4;
+
437 
+
438  typedef vec<1, float, highp> highp_fvec1;
+
439  typedef vec<2, float, highp> highp_fvec2;
+
440  typedef vec<3, float, highp> highp_fvec3;
+
441  typedef vec<4, float, highp> highp_fvec4;
+
442 
+
443  typedef vec<1, f32, defaultp> fvec1;
+
444  typedef vec<2, f32, defaultp> fvec2;
+
445  typedef vec<3, f32, defaultp> fvec3;
+
446  typedef vec<4, f32, defaultp> fvec4;
+
447 
+
448  typedef vec<1, f32, lowp> lowp_f32vec1;
+
449  typedef vec<2, f32, lowp> lowp_f32vec2;
+
450  typedef vec<3, f32, lowp> lowp_f32vec3;
+
451  typedef vec<4, f32, lowp> lowp_f32vec4;
+
452 
+
453  typedef vec<1, f32, mediump> mediump_f32vec1;
+
454  typedef vec<2, f32, mediump> mediump_f32vec2;
+
455  typedef vec<3, f32, mediump> mediump_f32vec3;
+
456  typedef vec<4, f32, mediump> mediump_f32vec4;
+
457 
+
458  typedef vec<1, f32, highp> highp_f32vec1;
+
459  typedef vec<2, f32, highp> highp_f32vec2;
+
460  typedef vec<3, f32, highp> highp_f32vec3;
+
461  typedef vec<4, f32, highp> highp_f32vec4;
+
462 
+
463  typedef vec<1, f32, defaultp> f32vec1;
+
464  typedef vec<2, f32, defaultp> f32vec2;
+
465  typedef vec<3, f32, defaultp> f32vec3;
+
466  typedef vec<4, f32, defaultp> f32vec4;
+
467 
+
468  typedef vec<1, f64, lowp> lowp_dvec1;
+
469  typedef vec<2, f64, lowp> lowp_dvec2;
+
470  typedef vec<3, f64, lowp> lowp_dvec3;
+
471  typedef vec<4, f64, lowp> lowp_dvec4;
+
472 
+
473  typedef vec<1, f64, mediump> mediump_dvec1;
+
474  typedef vec<2, f64, mediump> mediump_dvec2;
+
475  typedef vec<3, f64, mediump> mediump_dvec3;
+
476  typedef vec<4, f64, mediump> mediump_dvec4;
+
477 
+
478  typedef vec<1, f64, highp> highp_dvec1;
+
479  typedef vec<2, f64, highp> highp_dvec2;
+
480  typedef vec<3, f64, highp> highp_dvec3;
+
481  typedef vec<4, f64, highp> highp_dvec4;
+
482 
+
483  typedef vec<1, f64, defaultp> dvec1;
+
484  typedef vec<2, f64, defaultp> dvec2;
+
485  typedef vec<3, f64, defaultp> dvec3;
+
486  typedef vec<4, f64, defaultp> dvec4;
+
487 
+
488  typedef vec<1, f64, lowp> lowp_f64vec1;
+
489  typedef vec<2, f64, lowp> lowp_f64vec2;
+
490  typedef vec<3, f64, lowp> lowp_f64vec3;
+
491  typedef vec<4, f64, lowp> lowp_f64vec4;
+
492 
+
493  typedef vec<1, f64, mediump> mediump_f64vec1;
+
494  typedef vec<2, f64, mediump> mediump_f64vec2;
+
495  typedef vec<3, f64, mediump> mediump_f64vec3;
+
496  typedef vec<4, f64, mediump> mediump_f64vec4;
+
497 
+
498  typedef vec<1, f64, highp> highp_f64vec1;
+
499  typedef vec<2, f64, highp> highp_f64vec2;
+
500  typedef vec<3, f64, highp> highp_f64vec3;
+
501  typedef vec<4, f64, highp> highp_f64vec4;
+
502 
+
503  typedef vec<1, f64, defaultp> f64vec1;
+
504  typedef vec<2, f64, defaultp> f64vec2;
+
505  typedef vec<3, f64, defaultp> f64vec3;
+
506  typedef vec<4, f64, defaultp> f64vec4;
+
507 
+
508  // Matrix NxN
+
509 
+
510  typedef mat<2, 2, f32, lowp> lowp_mat2;
+
511  typedef mat<3, 3, f32, lowp> lowp_mat3;
+
512  typedef mat<4, 4, f32, lowp> lowp_mat4;
+
513 
+
514  typedef mat<2, 2, f32, mediump> mediump_mat2;
+
515  typedef mat<3, 3, f32, mediump> mediump_mat3;
+
516  typedef mat<4, 4, f32, mediump> mediump_mat4;
+
517 
+
518  typedef mat<2, 2, f32, highp> highp_mat2;
+
519  typedef mat<3, 3, f32, highp> highp_mat3;
+
520  typedef mat<4, 4, f32, highp> highp_mat4;
+
521 
+
522  typedef mat<2, 2, f32, defaultp> mat2;
+
523  typedef mat<3, 3, f32, defaultp> mat3;
+
524  typedef mat<4, 4, f32, defaultp> mat4;
+
525 
+
526  typedef mat<2, 2, f32, lowp> lowp_fmat2;
+
527  typedef mat<3, 3, f32, lowp> lowp_fmat3;
+
528  typedef mat<4, 4, f32, lowp> lowp_fmat4;
+
529 
+
530  typedef mat<2, 2, f32, mediump> mediump_fmat2;
+
531  typedef mat<3, 3, f32, mediump> mediump_fmat3;
+
532  typedef mat<4, 4, f32, mediump> mediump_fmat4;
+
533 
+
534  typedef mat<2, 2, f32, highp> highp_fmat2;
+
535  typedef mat<3, 3, f32, highp> highp_fmat3;
+
536  typedef mat<4, 4, f32, highp> highp_fmat4;
+
537 
+
538  typedef mat<2, 2, f32, defaultp> fmat2;
+
539  typedef mat<3, 3, f32, defaultp> fmat3;
+
540  typedef mat<4, 4, f32, defaultp> fmat4;
+
541 
+
542  typedef mat<2, 2, f32, lowp> lowp_f32mat2;
+
543  typedef mat<3, 3, f32, lowp> lowp_f32mat3;
+
544  typedef mat<4, 4, f32, lowp> lowp_f32mat4;
+
545 
+
546  typedef mat<2, 2, f32, mediump> mediump_f32mat2;
+
547  typedef mat<3, 3, f32, mediump> mediump_f32mat3;
+
548  typedef mat<4, 4, f32, mediump> mediump_f32mat4;
+
549 
+
550  typedef mat<2, 2, f32, highp> highp_f32mat2;
+
551  typedef mat<3, 3, f32, highp> highp_f32mat3;
+
552  typedef mat<4, 4, f32, highp> highp_f32mat4;
+
553 
+
554  typedef mat<2, 2, f32, defaultp> f32mat2;
+
555  typedef mat<3, 3, f32, defaultp> f32mat3;
+
556  typedef mat<4, 4, f32, defaultp> f32mat4;
+
557 
+
558  typedef mat<2, 2, f64, lowp> lowp_dmat2;
+
559  typedef mat<3, 3, f64, lowp> lowp_dmat3;
+
560  typedef mat<4, 4, f64, lowp> lowp_dmat4;
+
561 
+
562  typedef mat<2, 2, f64, mediump> mediump_dmat2;
+
563  typedef mat<3, 3, f64, mediump> mediump_dmat3;
+
564  typedef mat<4, 4, f64, mediump> mediump_dmat4;
+
565 
+
566  typedef mat<2, 2, f64, highp> highp_dmat2;
+
567  typedef mat<3, 3, f64, highp> highp_dmat3;
+
568  typedef mat<4, 4, f64, highp> highp_dmat4;
+
569 
+
570  typedef mat<2, 2, f64, defaultp> dmat2;
+
571  typedef mat<3, 3, f64, defaultp> dmat3;
+
572  typedef mat<4, 4, f64, defaultp> dmat4;
+
573 
+
574  typedef mat<2, 2, f64, lowp> lowp_f64mat2;
+
575  typedef mat<3, 3, f64, lowp> lowp_f64mat3;
+
576  typedef mat<4, 4, f64, lowp> lowp_f64mat4;
+
577 
+
578  typedef mat<2, 2, f64, mediump> mediump_f64mat2;
+
579  typedef mat<3, 3, f64, mediump> mediump_f64mat3;
+
580  typedef mat<4, 4, f64, mediump> mediump_f64mat4;
+
581 
+
582  typedef mat<2, 2, f64, highp> highp_f64mat2;
+
583  typedef mat<3, 3, f64, highp> highp_f64mat3;
+
584  typedef mat<4, 4, f64, highp> highp_f64mat4;
+
585 
+
586  typedef mat<2, 2, f64, defaultp> f64mat2;
+
587  typedef mat<3, 3, f64, defaultp> f64mat3;
+
588  typedef mat<4, 4, f64, defaultp> f64mat4;
+
589 
+
590  // Matrix MxN
+
591 
+
592  typedef mat<2, 2, f32, lowp> lowp_mat2x2;
+
593  typedef mat<2, 3, f32, lowp> lowp_mat2x3;
+
594  typedef mat<2, 4, f32, lowp> lowp_mat2x4;
+
595  typedef mat<3, 2, f32, lowp> lowp_mat3x2;
+
596  typedef mat<3, 3, f32, lowp> lowp_mat3x3;
+
597  typedef mat<3, 4, f32, lowp> lowp_mat3x4;
+
598  typedef mat<4, 2, f32, lowp> lowp_mat4x2;
+
599  typedef mat<4, 3, f32, lowp> lowp_mat4x3;
+
600  typedef mat<4, 4, f32, lowp> lowp_mat4x4;
+
601 
+
602  typedef mat<2, 2, f32, mediump> mediump_mat2x2;
+
603  typedef mat<2, 3, f32, mediump> mediump_mat2x3;
+
604  typedef mat<2, 4, f32, mediump> mediump_mat2x4;
+
605  typedef mat<3, 2, f32, mediump> mediump_mat3x2;
+
606  typedef mat<3, 3, f32, mediump> mediump_mat3x3;
+
607  typedef mat<3, 4, f32, mediump> mediump_mat3x4;
+
608  typedef mat<4, 2, f32, mediump> mediump_mat4x2;
+
609  typedef mat<4, 3, f32, mediump> mediump_mat4x3;
+
610  typedef mat<4, 4, f32, mediump> mediump_mat4x4;
+
611 
+
612  typedef mat<2, 2, f32, highp> highp_mat2x2;
+
613  typedef mat<2, 3, f32, highp> highp_mat2x3;
+
614  typedef mat<2, 4, f32, highp> highp_mat2x4;
+
615  typedef mat<3, 2, f32, highp> highp_mat3x2;
+
616  typedef mat<3, 3, f32, highp> highp_mat3x3;
+
617  typedef mat<3, 4, f32, highp> highp_mat3x4;
+
618  typedef mat<4, 2, f32, highp> highp_mat4x2;
+
619  typedef mat<4, 3, f32, highp> highp_mat4x3;
+
620  typedef mat<4, 4, f32, highp> highp_mat4x4;
+
621 
+
622  typedef mat<2, 2, f32, defaultp> mat2x2;
+
623  typedef mat<2, 3, f32, defaultp> mat2x3;
+
624  typedef mat<2, 4, f32, defaultp> mat2x4;
+
625  typedef mat<3, 2, f32, defaultp> mat3x2;
+
626  typedef mat<3, 3, f32, defaultp> mat3x3;
+
627  typedef mat<3, 4, f32, defaultp> mat3x4;
+
628  typedef mat<4, 2, f32, defaultp> mat4x2;
+
629  typedef mat<4, 3, f32, defaultp> mat4x3;
+
630  typedef mat<4, 4, f32, defaultp> mat4x4;
+
631 
+
632  typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
+
633  typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
+
634  typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
+
635  typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
+
636  typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
+
637  typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
+
638  typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
+
639  typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
+
640  typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
+
641 
+
642  typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
+
643  typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
+
644  typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
+
645  typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
+
646  typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
+
647  typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
+
648  typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
+
649  typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
+
650  typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
+
651 
+
652  typedef mat<2, 2, f32, highp> highp_fmat2x2;
+
653  typedef mat<2, 3, f32, highp> highp_fmat2x3;
+
654  typedef mat<2, 4, f32, highp> highp_fmat2x4;
+
655  typedef mat<3, 2, f32, highp> highp_fmat3x2;
+
656  typedef mat<3, 3, f32, highp> highp_fmat3x3;
+
657  typedef mat<3, 4, f32, highp> highp_fmat3x4;
+
658  typedef mat<4, 2, f32, highp> highp_fmat4x2;
+
659  typedef mat<4, 3, f32, highp> highp_fmat4x3;
+
660  typedef mat<4, 4, f32, highp> highp_fmat4x4;
+
661 
+
662  typedef mat<2, 2, f32, defaultp> fmat2x2;
+
663  typedef mat<2, 3, f32, defaultp> fmat2x3;
+
664  typedef mat<2, 4, f32, defaultp> fmat2x4;
+
665  typedef mat<3, 2, f32, defaultp> fmat3x2;
+
666  typedef mat<3, 3, f32, defaultp> fmat3x3;
+
667  typedef mat<3, 4, f32, defaultp> fmat3x4;
+
668  typedef mat<4, 2, f32, defaultp> fmat4x2;
+
669  typedef mat<4, 3, f32, defaultp> fmat4x3;
+
670  typedef mat<4, 4, f32, defaultp> fmat4x4;
+
671 
+
672  typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
+
673  typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
+
674  typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
+
675  typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
+
676  typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
+
677  typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
+
678  typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
+
679  typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
+
680  typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
+
681 
+
682  typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
+
683  typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
+
684  typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
+
685  typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
+
686  typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
+
687  typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
+
688  typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
+
689  typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
+
690  typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
+
691 
+
692  typedef mat<2, 2, f32, highp> highp_f32mat2x2;
+
693  typedef mat<2, 3, f32, highp> highp_f32mat2x3;
+
694  typedef mat<2, 4, f32, highp> highp_f32mat2x4;
+
695  typedef mat<3, 2, f32, highp> highp_f32mat3x2;
+
696  typedef mat<3, 3, f32, highp> highp_f32mat3x3;
+
697  typedef mat<3, 4, f32, highp> highp_f32mat3x4;
+
698  typedef mat<4, 2, f32, highp> highp_f32mat4x2;
+
699  typedef mat<4, 3, f32, highp> highp_f32mat4x3;
+
700  typedef mat<4, 4, f32, highp> highp_f32mat4x4;
+
701 
+
702  typedef mat<2, 2, f32, defaultp> f32mat2x2;
+
703  typedef mat<2, 3, f32, defaultp> f32mat2x3;
+
704  typedef mat<2, 4, f32, defaultp> f32mat2x4;
+
705  typedef mat<3, 2, f32, defaultp> f32mat3x2;
+
706  typedef mat<3, 3, f32, defaultp> f32mat3x3;
+
707  typedef mat<3, 4, f32, defaultp> f32mat3x4;
+
708  typedef mat<4, 2, f32, defaultp> f32mat4x2;
+
709  typedef mat<4, 3, f32, defaultp> f32mat4x3;
+
710  typedef mat<4, 4, f32, defaultp> f32mat4x4;
+
711 
+
712  typedef mat<2, 2, double, lowp> lowp_dmat2x2;
+
713  typedef mat<2, 3, double, lowp> lowp_dmat2x3;
+
714  typedef mat<2, 4, double, lowp> lowp_dmat2x4;
+
715  typedef mat<3, 2, double, lowp> lowp_dmat3x2;
+
716  typedef mat<3, 3, double, lowp> lowp_dmat3x3;
+
717  typedef mat<3, 4, double, lowp> lowp_dmat3x4;
+
718  typedef mat<4, 2, double, lowp> lowp_dmat4x2;
+
719  typedef mat<4, 3, double, lowp> lowp_dmat4x3;
+
720  typedef mat<4, 4, double, lowp> lowp_dmat4x4;
+
721 
+
722  typedef mat<2, 2, double, mediump> mediump_dmat2x2;
+
723  typedef mat<2, 3, double, mediump> mediump_dmat2x3;
+
724  typedef mat<2, 4, double, mediump> mediump_dmat2x4;
+
725  typedef mat<3, 2, double, mediump> mediump_dmat3x2;
+
726  typedef mat<3, 3, double, mediump> mediump_dmat3x3;
+
727  typedef mat<3, 4, double, mediump> mediump_dmat3x4;
+
728  typedef mat<4, 2, double, mediump> mediump_dmat4x2;
+
729  typedef mat<4, 3, double, mediump> mediump_dmat4x3;
+
730  typedef mat<4, 4, double, mediump> mediump_dmat4x4;
+
731 
+
732  typedef mat<2, 2, double, highp> highp_dmat2x2;
+
733  typedef mat<2, 3, double, highp> highp_dmat2x3;
+
734  typedef mat<2, 4, double, highp> highp_dmat2x4;
+
735  typedef mat<3, 2, double, highp> highp_dmat3x2;
+
736  typedef mat<3, 3, double, highp> highp_dmat3x3;
+
737  typedef mat<3, 4, double, highp> highp_dmat3x4;
+
738  typedef mat<4, 2, double, highp> highp_dmat4x2;
+
739  typedef mat<4, 3, double, highp> highp_dmat4x3;
+
740  typedef mat<4, 4, double, highp> highp_dmat4x4;
+
741 
+
742  typedef mat<2, 2, double, defaultp> dmat2x2;
+
743  typedef mat<2, 3, double, defaultp> dmat2x3;
+
744  typedef mat<2, 4, double, defaultp> dmat2x4;
+
745  typedef mat<3, 2, double, defaultp> dmat3x2;
+
746  typedef mat<3, 3, double, defaultp> dmat3x3;
+
747  typedef mat<3, 4, double, defaultp> dmat3x4;
+
748  typedef mat<4, 2, double, defaultp> dmat4x2;
+
749  typedef mat<4, 3, double, defaultp> dmat4x3;
+
750  typedef mat<4, 4, double, defaultp> dmat4x4;
+
751 
+
752  typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
+
753  typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
+
754  typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
+
755  typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
+
756  typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
+
757  typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
+
758  typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
+
759  typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
+
760  typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
+
761 
+
762  typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
+
763  typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
+
764  typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
+
765  typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
+
766  typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
+
767  typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
+
768  typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
+
769  typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
+
770  typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
+
771 
+
772  typedef mat<2, 2, f64, highp> highp_f64mat2x2;
+
773  typedef mat<2, 3, f64, highp> highp_f64mat2x3;
+
774  typedef mat<2, 4, f64, highp> highp_f64mat2x4;
+
775  typedef mat<3, 2, f64, highp> highp_f64mat3x2;
+
776  typedef mat<3, 3, f64, highp> highp_f64mat3x3;
+
777  typedef mat<3, 4, f64, highp> highp_f64mat3x4;
+
778  typedef mat<4, 2, f64, highp> highp_f64mat4x2;
+
779  typedef mat<4, 3, f64, highp> highp_f64mat4x3;
+
780  typedef mat<4, 4, f64, highp> highp_f64mat4x4;
+
781 
+
782  typedef mat<2, 2, f64, defaultp> f64mat2x2;
+
783  typedef mat<2, 3, f64, defaultp> f64mat2x3;
+
784  typedef mat<2, 4, f64, defaultp> f64mat2x4;
+
785  typedef mat<3, 2, f64, defaultp> f64mat3x2;
+
786  typedef mat<3, 3, f64, defaultp> f64mat3x3;
+
787  typedef mat<3, 4, f64, defaultp> f64mat3x4;
+
788  typedef mat<4, 2, f64, defaultp> f64mat4x2;
+
789  typedef mat<4, 3, f64, defaultp> f64mat4x3;
+
790  typedef mat<4, 4, f64, defaultp> f64mat4x4;
+
791 
+
792  // Signed integer matrix MxN
+
793 
+
794  typedef mat<2, 2, int, lowp> lowp_imat2x2;
+
795  typedef mat<2, 3, int, lowp> lowp_imat2x3;
+
796  typedef mat<2, 4, int, lowp> lowp_imat2x4;
+
797  typedef mat<3, 2, int, lowp> lowp_imat3x2;
+
798  typedef mat<3, 3, int, lowp> lowp_imat3x3;
+
799  typedef mat<3, 4, int, lowp> lowp_imat3x4;
+
800  typedef mat<4, 2, int, lowp> lowp_imat4x2;
+
801  typedef mat<4, 3, int, lowp> lowp_imat4x3;
+
802  typedef mat<4, 4, int, lowp> lowp_imat4x4;
+
803 
+
804  typedef mat<2, 2, int, mediump> mediump_imat2x2;
+
805  typedef mat<2, 3, int, mediump> mediump_imat2x3;
+
806  typedef mat<2, 4, int, mediump> mediump_imat2x4;
+
807  typedef mat<3, 2, int, mediump> mediump_imat3x2;
+
808  typedef mat<3, 3, int, mediump> mediump_imat3x3;
+
809  typedef mat<3, 4, int, mediump> mediump_imat3x4;
+
810  typedef mat<4, 2, int, mediump> mediump_imat4x2;
+
811  typedef mat<4, 3, int, mediump> mediump_imat4x3;
+
812  typedef mat<4, 4, int, mediump> mediump_imat4x4;
+
813 
+
814  typedef mat<2, 2, int, highp> highp_imat2x2;
+
815  typedef mat<2, 3, int, highp> highp_imat2x3;
+
816  typedef mat<2, 4, int, highp> highp_imat2x4;
+
817  typedef mat<3, 2, int, highp> highp_imat3x2;
+
818  typedef mat<3, 3, int, highp> highp_imat3x3;
+
819  typedef mat<3, 4, int, highp> highp_imat3x4;
+
820  typedef mat<4, 2, int, highp> highp_imat4x2;
+
821  typedef mat<4, 3, int, highp> highp_imat4x3;
+
822  typedef mat<4, 4, int, highp> highp_imat4x4;
+
823 
+
824  typedef mat<2, 2, int, defaultp> imat2x2;
+
825  typedef mat<2, 3, int, defaultp> imat2x3;
+
826  typedef mat<2, 4, int, defaultp> imat2x4;
+
827  typedef mat<3, 2, int, defaultp> imat3x2;
+
828  typedef mat<3, 3, int, defaultp> imat3x3;
+
829  typedef mat<3, 4, int, defaultp> imat3x4;
+
830  typedef mat<4, 2, int, defaultp> imat4x2;
+
831  typedef mat<4, 3, int, defaultp> imat4x3;
+
832  typedef mat<4, 4, int, defaultp> imat4x4;
+
833 
+
834 
+
835  typedef mat<2, 2, int8, lowp> lowp_i8mat2x2;
+
836  typedef mat<2, 3, int8, lowp> lowp_i8mat2x3;
+
837  typedef mat<2, 4, int8, lowp> lowp_i8mat2x4;
+
838  typedef mat<3, 2, int8, lowp> lowp_i8mat3x2;
+
839  typedef mat<3, 3, int8, lowp> lowp_i8mat3x3;
+
840  typedef mat<3, 4, int8, lowp> lowp_i8mat3x4;
+
841  typedef mat<4, 2, int8, lowp> lowp_i8mat4x2;
+
842  typedef mat<4, 3, int8, lowp> lowp_i8mat4x3;
+
843  typedef mat<4, 4, int8, lowp> lowp_i8mat4x4;
+
844 
+
845  typedef mat<2, 2, int8, mediump> mediump_i8mat2x2;
+
846  typedef mat<2, 3, int8, mediump> mediump_i8mat2x3;
+
847  typedef mat<2, 4, int8, mediump> mediump_i8mat2x4;
+
848  typedef mat<3, 2, int8, mediump> mediump_i8mat3x2;
+
849  typedef mat<3, 3, int8, mediump> mediump_i8mat3x3;
+
850  typedef mat<3, 4, int8, mediump> mediump_i8mat3x4;
+
851  typedef mat<4, 2, int8, mediump> mediump_i8mat4x2;
+
852  typedef mat<4, 3, int8, mediump> mediump_i8mat4x3;
+
853  typedef mat<4, 4, int8, mediump> mediump_i8mat4x4;
+
854 
+
855  typedef mat<2, 2, int8, highp> highp_i8mat2x2;
+
856  typedef mat<2, 3, int8, highp> highp_i8mat2x3;
+
857  typedef mat<2, 4, int8, highp> highp_i8mat2x4;
+
858  typedef mat<3, 2, int8, highp> highp_i8mat3x2;
+
859  typedef mat<3, 3, int8, highp> highp_i8mat3x3;
+
860  typedef mat<3, 4, int8, highp> highp_i8mat3x4;
+
861  typedef mat<4, 2, int8, highp> highp_i8mat4x2;
+
862  typedef mat<4, 3, int8, highp> highp_i8mat4x3;
+
863  typedef mat<4, 4, int8, highp> highp_i8mat4x4;
+
864 
+
865  typedef mat<2, 2, int8, defaultp> i8mat2x2;
+
866  typedef mat<2, 3, int8, defaultp> i8mat2x3;
+
867  typedef mat<2, 4, int8, defaultp> i8mat2x4;
+
868  typedef mat<3, 2, int8, defaultp> i8mat3x2;
+
869  typedef mat<3, 3, int8, defaultp> i8mat3x3;
+
870  typedef mat<3, 4, int8, defaultp> i8mat3x4;
+
871  typedef mat<4, 2, int8, defaultp> i8mat4x2;
+
872  typedef mat<4, 3, int8, defaultp> i8mat4x3;
+
873  typedef mat<4, 4, int8, defaultp> i8mat4x4;
+
874 
+
875 
+
876  typedef mat<2, 2, int16, lowp> lowp_i16mat2x2;
+
877  typedef mat<2, 3, int16, lowp> lowp_i16mat2x3;
+
878  typedef mat<2, 4, int16, lowp> lowp_i16mat2x4;
+
879  typedef mat<3, 2, int16, lowp> lowp_i16mat3x2;
+
880  typedef mat<3, 3, int16, lowp> lowp_i16mat3x3;
+
881  typedef mat<3, 4, int16, lowp> lowp_i16mat3x4;
+
882  typedef mat<4, 2, int16, lowp> lowp_i16mat4x2;
+
883  typedef mat<4, 3, int16, lowp> lowp_i16mat4x3;
+
884  typedef mat<4, 4, int16, lowp> lowp_i16mat4x4;
+
885 
+
886  typedef mat<2, 2, int16, mediump> mediump_i16mat2x2;
+
887  typedef mat<2, 3, int16, mediump> mediump_i16mat2x3;
+
888  typedef mat<2, 4, int16, mediump> mediump_i16mat2x4;
+
889  typedef mat<3, 2, int16, mediump> mediump_i16mat3x2;
+
890  typedef mat<3, 3, int16, mediump> mediump_i16mat3x3;
+
891  typedef mat<3, 4, int16, mediump> mediump_i16mat3x4;
+
892  typedef mat<4, 2, int16, mediump> mediump_i16mat4x2;
+
893  typedef mat<4, 3, int16, mediump> mediump_i16mat4x3;
+
894  typedef mat<4, 4, int16, mediump> mediump_i16mat4x4;
+
895 
+
896  typedef mat<2, 2, int16, highp> highp_i16mat2x2;
+
897  typedef mat<2, 3, int16, highp> highp_i16mat2x3;
+
898  typedef mat<2, 4, int16, highp> highp_i16mat2x4;
+
899  typedef mat<3, 2, int16, highp> highp_i16mat3x2;
+
900  typedef mat<3, 3, int16, highp> highp_i16mat3x3;
+
901  typedef mat<3, 4, int16, highp> highp_i16mat3x4;
+
902  typedef mat<4, 2, int16, highp> highp_i16mat4x2;
+
903  typedef mat<4, 3, int16, highp> highp_i16mat4x3;
+
904  typedef mat<4, 4, int16, highp> highp_i16mat4x4;
+
905 
+
906  typedef mat<2, 2, int16, defaultp> i16mat2x2;
+
907  typedef mat<2, 3, int16, defaultp> i16mat2x3;
+
908  typedef mat<2, 4, int16, defaultp> i16mat2x4;
+
909  typedef mat<3, 2, int16, defaultp> i16mat3x2;
+
910  typedef mat<3, 3, int16, defaultp> i16mat3x3;
+
911  typedef mat<3, 4, int16, defaultp> i16mat3x4;
+
912  typedef mat<4, 2, int16, defaultp> i16mat4x2;
+
913  typedef mat<4, 3, int16, defaultp> i16mat4x3;
+
914  typedef mat<4, 4, int16, defaultp> i16mat4x4;
+
915 
+
916 
+
917  typedef mat<2, 2, int32, lowp> lowp_i32mat2x2;
+
918  typedef mat<2, 3, int32, lowp> lowp_i32mat2x3;
+
919  typedef mat<2, 4, int32, lowp> lowp_i32mat2x4;
+
920  typedef mat<3, 2, int32, lowp> lowp_i32mat3x2;
+
921  typedef mat<3, 3, int32, lowp> lowp_i32mat3x3;
+
922  typedef mat<3, 4, int32, lowp> lowp_i32mat3x4;
+
923  typedef mat<4, 2, int32, lowp> lowp_i32mat4x2;
+
924  typedef mat<4, 3, int32, lowp> lowp_i32mat4x3;
+
925  typedef mat<4, 4, int32, lowp> lowp_i32mat4x4;
+
926 
+
927  typedef mat<2, 2, int32, mediump> mediump_i32mat2x2;
+
928  typedef mat<2, 3, int32, mediump> mediump_i32mat2x3;
+
929  typedef mat<2, 4, int32, mediump> mediump_i32mat2x4;
+
930  typedef mat<3, 2, int32, mediump> mediump_i32mat3x2;
+
931  typedef mat<3, 3, int32, mediump> mediump_i32mat3x3;
+
932  typedef mat<3, 4, int32, mediump> mediump_i32mat3x4;
+
933  typedef mat<4, 2, int32, mediump> mediump_i32mat4x2;
+
934  typedef mat<4, 3, int32, mediump> mediump_i32mat4x3;
+
935  typedef mat<4, 4, int32, mediump> mediump_i32mat4x4;
+
936 
+
937  typedef mat<2, 2, int32, highp> highp_i32mat2x2;
+
938  typedef mat<2, 3, int32, highp> highp_i32mat2x3;
+
939  typedef mat<2, 4, int32, highp> highp_i32mat2x4;
+
940  typedef mat<3, 2, int32, highp> highp_i32mat3x2;
+
941  typedef mat<3, 3, int32, highp> highp_i32mat3x3;
+
942  typedef mat<3, 4, int32, highp> highp_i32mat3x4;
+
943  typedef mat<4, 2, int32, highp> highp_i32mat4x2;
+
944  typedef mat<4, 3, int32, highp> highp_i32mat4x3;
+
945  typedef mat<4, 4, int32, highp> highp_i32mat4x4;
+
946 
+
947  typedef mat<2, 2, int32, defaultp> i32mat2x2;
+
948  typedef mat<2, 3, int32, defaultp> i32mat2x3;
+
949  typedef mat<2, 4, int32, defaultp> i32mat2x4;
+
950  typedef mat<3, 2, int32, defaultp> i32mat3x2;
+
951  typedef mat<3, 3, int32, defaultp> i32mat3x3;
+
952  typedef mat<3, 4, int32, defaultp> i32mat3x4;
+
953  typedef mat<4, 2, int32, defaultp> i32mat4x2;
+
954  typedef mat<4, 3, int32, defaultp> i32mat4x3;
+
955  typedef mat<4, 4, int32, defaultp> i32mat4x4;
+
956 
+
957 
+
958  typedef mat<2, 2, int64, lowp> lowp_i64mat2x2;
+
959  typedef mat<2, 3, int64, lowp> lowp_i64mat2x3;
+
960  typedef mat<2, 4, int64, lowp> lowp_i64mat2x4;
+
961  typedef mat<3, 2, int64, lowp> lowp_i64mat3x2;
+
962  typedef mat<3, 3, int64, lowp> lowp_i64mat3x3;
+
963  typedef mat<3, 4, int64, lowp> lowp_i64mat3x4;
+
964  typedef mat<4, 2, int64, lowp> lowp_i64mat4x2;
+
965  typedef mat<4, 3, int64, lowp> lowp_i64mat4x3;
+
966  typedef mat<4, 4, int64, lowp> lowp_i64mat4x4;
+
967 
+
968  typedef mat<2, 2, int64, mediump> mediump_i64mat2x2;
+
969  typedef mat<2, 3, int64, mediump> mediump_i64mat2x3;
+
970  typedef mat<2, 4, int64, mediump> mediump_i64mat2x4;
+
971  typedef mat<3, 2, int64, mediump> mediump_i64mat3x2;
+
972  typedef mat<3, 3, int64, mediump> mediump_i64mat3x3;
+
973  typedef mat<3, 4, int64, mediump> mediump_i64mat3x4;
+
974  typedef mat<4, 2, int64, mediump> mediump_i64mat4x2;
+
975  typedef mat<4, 3, int64, mediump> mediump_i64mat4x3;
+
976  typedef mat<4, 4, int64, mediump> mediump_i64mat4x4;
+
977 
+
978  typedef mat<2, 2, int64, highp> highp_i64mat2x2;
+
979  typedef mat<2, 3, int64, highp> highp_i64mat2x3;
+
980  typedef mat<2, 4, int64, highp> highp_i64mat2x4;
+
981  typedef mat<3, 2, int64, highp> highp_i64mat3x2;
+
982  typedef mat<3, 3, int64, highp> highp_i64mat3x3;
+
983  typedef mat<3, 4, int64, highp> highp_i64mat3x4;
+
984  typedef mat<4, 2, int64, highp> highp_i64mat4x2;
+
985  typedef mat<4, 3, int64, highp> highp_i64mat4x3;
+
986  typedef mat<4, 4, int64, highp> highp_i64mat4x4;
+
987 
+
988  typedef mat<2, 2, int64, defaultp> i64mat2x2;
+
989  typedef mat<2, 3, int64, defaultp> i64mat2x3;
+
990  typedef mat<2, 4, int64, defaultp> i64mat2x4;
+
991  typedef mat<3, 2, int64, defaultp> i64mat3x2;
+
992  typedef mat<3, 3, int64, defaultp> i64mat3x3;
+
993  typedef mat<3, 4, int64, defaultp> i64mat3x4;
+
994  typedef mat<4, 2, int64, defaultp> i64mat4x2;
+
995  typedef mat<4, 3, int64, defaultp> i64mat4x3;
+
996  typedef mat<4, 4, int64, defaultp> i64mat4x4;
+
997 
+
998 
+
999  // Unsigned integer matrix MxN
+
1000 
+
1001  typedef mat<2, 2, uint, lowp> lowp_umat2x2;
+
1002  typedef mat<2, 3, uint, lowp> lowp_umat2x3;
+
1003  typedef mat<2, 4, uint, lowp> lowp_umat2x4;
+
1004  typedef mat<3, 2, uint, lowp> lowp_umat3x2;
+
1005  typedef mat<3, 3, uint, lowp> lowp_umat3x3;
+
1006  typedef mat<3, 4, uint, lowp> lowp_umat3x4;
+
1007  typedef mat<4, 2, uint, lowp> lowp_umat4x2;
+
1008  typedef mat<4, 3, uint, lowp> lowp_umat4x3;
+
1009  typedef mat<4, 4, uint, lowp> lowp_umat4x4;
+
1010 
+
1011  typedef mat<2, 2, uint, mediump> mediump_umat2x2;
+
1012  typedef mat<2, 3, uint, mediump> mediump_umat2x3;
+
1013  typedef mat<2, 4, uint, mediump> mediump_umat2x4;
+
1014  typedef mat<3, 2, uint, mediump> mediump_umat3x2;
+
1015  typedef mat<3, 3, uint, mediump> mediump_umat3x3;
+
1016  typedef mat<3, 4, uint, mediump> mediump_umat3x4;
+
1017  typedef mat<4, 2, uint, mediump> mediump_umat4x2;
+
1018  typedef mat<4, 3, uint, mediump> mediump_umat4x3;
+
1019  typedef mat<4, 4, uint, mediump> mediump_umat4x4;
+
1020 
+
1021  typedef mat<2, 2, uint, highp> highp_umat2x2;
+
1022  typedef mat<2, 3, uint, highp> highp_umat2x3;
+
1023  typedef mat<2, 4, uint, highp> highp_umat2x4;
+
1024  typedef mat<3, 2, uint, highp> highp_umat3x2;
+
1025  typedef mat<3, 3, uint, highp> highp_umat3x3;
+
1026  typedef mat<3, 4, uint, highp> highp_umat3x4;
+
1027  typedef mat<4, 2, uint, highp> highp_umat4x2;
+
1028  typedef mat<4, 3, uint, highp> highp_umat4x3;
+
1029  typedef mat<4, 4, uint, highp> highp_umat4x4;
+
1030 
+
1031  typedef mat<2, 2, uint, defaultp> umat2x2;
+
1032  typedef mat<2, 3, uint, defaultp> umat2x3;
+
1033  typedef mat<2, 4, uint, defaultp> umat2x4;
+
1034  typedef mat<3, 2, uint, defaultp> umat3x2;
+
1035  typedef mat<3, 3, uint, defaultp> umat3x3;
+
1036  typedef mat<3, 4, uint, defaultp> umat3x4;
+
1037  typedef mat<4, 2, uint, defaultp> umat4x2;
+
1038  typedef mat<4, 3, uint, defaultp> umat4x3;
+
1039  typedef mat<4, 4, uint, defaultp> umat4x4;
+
1040 
+
1041 
+
1042  typedef mat<2, 2, uint8, lowp> lowp_u8mat2x2;
+
1043  typedef mat<2, 3, uint8, lowp> lowp_u8mat2x3;
+
1044  typedef mat<2, 4, uint8, lowp> lowp_u8mat2x4;
+
1045  typedef mat<3, 2, uint8, lowp> lowp_u8mat3x2;
+
1046  typedef mat<3, 3, uint8, lowp> lowp_u8mat3x3;
+
1047  typedef mat<3, 4, uint8, lowp> lowp_u8mat3x4;
+
1048  typedef mat<4, 2, uint8, lowp> lowp_u8mat4x2;
+
1049  typedef mat<4, 3, uint8, lowp> lowp_u8mat4x3;
+
1050  typedef mat<4, 4, uint8, lowp> lowp_u8mat4x4;
+
1051 
+
1052  typedef mat<2, 2, uint8, mediump> mediump_u8mat2x2;
+
1053  typedef mat<2, 3, uint8, mediump> mediump_u8mat2x3;
+
1054  typedef mat<2, 4, uint8, mediump> mediump_u8mat2x4;
+
1055  typedef mat<3, 2, uint8, mediump> mediump_u8mat3x2;
+
1056  typedef mat<3, 3, uint8, mediump> mediump_u8mat3x3;
+
1057  typedef mat<3, 4, uint8, mediump> mediump_u8mat3x4;
+
1058  typedef mat<4, 2, uint8, mediump> mediump_u8mat4x2;
+
1059  typedef mat<4, 3, uint8, mediump> mediump_u8mat4x3;
+
1060  typedef mat<4, 4, uint8, mediump> mediump_u8mat4x4;
+
1061 
+
1062  typedef mat<2, 2, uint8, highp> highp_u8mat2x2;
+
1063  typedef mat<2, 3, uint8, highp> highp_u8mat2x3;
+
1064  typedef mat<2, 4, uint8, highp> highp_u8mat2x4;
+
1065  typedef mat<3, 2, uint8, highp> highp_u8mat3x2;
+
1066  typedef mat<3, 3, uint8, highp> highp_u8mat3x3;
+
1067  typedef mat<3, 4, uint8, highp> highp_u8mat3x4;
+
1068  typedef mat<4, 2, uint8, highp> highp_u8mat4x2;
+
1069  typedef mat<4, 3, uint8, highp> highp_u8mat4x3;
+
1070  typedef mat<4, 4, uint8, highp> highp_u8mat4x4;
+
1071 
+
1072  typedef mat<2, 2, uint8, defaultp> u8mat2x2;
+
1073  typedef mat<2, 3, uint8, defaultp> u8mat2x3;
+
1074  typedef mat<2, 4, uint8, defaultp> u8mat2x4;
+
1075  typedef mat<3, 2, uint8, defaultp> u8mat3x2;
+
1076  typedef mat<3, 3, uint8, defaultp> u8mat3x3;
+
1077  typedef mat<3, 4, uint8, defaultp> u8mat3x4;
+
1078  typedef mat<4, 2, uint8, defaultp> u8mat4x2;
+
1079  typedef mat<4, 3, uint8, defaultp> u8mat4x3;
+
1080  typedef mat<4, 4, uint8, defaultp> u8mat4x4;
+
1081 
+
1082 
+
1083  typedef mat<2, 2, uint16, lowp> lowp_u16mat2x2;
+
1084  typedef mat<2, 3, uint16, lowp> lowp_u16mat2x3;
+
1085  typedef mat<2, 4, uint16, lowp> lowp_u16mat2x4;
+
1086  typedef mat<3, 2, uint16, lowp> lowp_u16mat3x2;
+
1087  typedef mat<3, 3, uint16, lowp> lowp_u16mat3x3;
+
1088  typedef mat<3, 4, uint16, lowp> lowp_u16mat3x4;
+
1089  typedef mat<4, 2, uint16, lowp> lowp_u16mat4x2;
+
1090  typedef mat<4, 3, uint16, lowp> lowp_u16mat4x3;
+
1091  typedef mat<4, 4, uint16, lowp> lowp_u16mat4x4;
+
1092 
+
1093  typedef mat<2, 2, uint16, mediump> mediump_u16mat2x2;
+
1094  typedef mat<2, 3, uint16, mediump> mediump_u16mat2x3;
+
1095  typedef mat<2, 4, uint16, mediump> mediump_u16mat2x4;
+
1096  typedef mat<3, 2, uint16, mediump> mediump_u16mat3x2;
+
1097  typedef mat<3, 3, uint16, mediump> mediump_u16mat3x3;
+
1098  typedef mat<3, 4, uint16, mediump> mediump_u16mat3x4;
+
1099  typedef mat<4, 2, uint16, mediump> mediump_u16mat4x2;
+
1100  typedef mat<4, 3, uint16, mediump> mediump_u16mat4x3;
+
1101  typedef mat<4, 4, uint16, mediump> mediump_u16mat4x4;
+
1102 
+
1103  typedef mat<2, 2, uint16, highp> highp_u16mat2x2;
+
1104  typedef mat<2, 3, uint16, highp> highp_u16mat2x3;
+
1105  typedef mat<2, 4, uint16, highp> highp_u16mat2x4;
+
1106  typedef mat<3, 2, uint16, highp> highp_u16mat3x2;
+
1107  typedef mat<3, 3, uint16, highp> highp_u16mat3x3;
+
1108  typedef mat<3, 4, uint16, highp> highp_u16mat3x4;
+
1109  typedef mat<4, 2, uint16, highp> highp_u16mat4x2;
+
1110  typedef mat<4, 3, uint16, highp> highp_u16mat4x3;
+
1111  typedef mat<4, 4, uint16, highp> highp_u16mat4x4;
+
1112 
+
1113  typedef mat<2, 2, uint16, defaultp> u16mat2x2;
+
1114  typedef mat<2, 3, uint16, defaultp> u16mat2x3;
+
1115  typedef mat<2, 4, uint16, defaultp> u16mat2x4;
+
1116  typedef mat<3, 2, uint16, defaultp> u16mat3x2;
+
1117  typedef mat<3, 3, uint16, defaultp> u16mat3x3;
+
1118  typedef mat<3, 4, uint16, defaultp> u16mat3x4;
+
1119  typedef mat<4, 2, uint16, defaultp> u16mat4x2;
+
1120  typedef mat<4, 3, uint16, defaultp> u16mat4x3;
+
1121  typedef mat<4, 4, uint16, defaultp> u16mat4x4;
+
1122 
+
1123 
+
1124  typedef mat<2, 2, uint32, lowp> lowp_u32mat2x2;
+
1125  typedef mat<2, 3, uint32, lowp> lowp_u32mat2x3;
+
1126  typedef mat<2, 4, uint32, lowp> lowp_u32mat2x4;
+
1127  typedef mat<3, 2, uint32, lowp> lowp_u32mat3x2;
+
1128  typedef mat<3, 3, uint32, lowp> lowp_u32mat3x3;
+
1129  typedef mat<3, 4, uint32, lowp> lowp_u32mat3x4;
+
1130  typedef mat<4, 2, uint32, lowp> lowp_u32mat4x2;
+
1131  typedef mat<4, 3, uint32, lowp> lowp_u32mat4x3;
+
1132  typedef mat<4, 4, uint32, lowp> lowp_u32mat4x4;
+
1133 
+
1134  typedef mat<2, 2, uint32, mediump> mediump_u32mat2x2;
+
1135  typedef mat<2, 3, uint32, mediump> mediump_u32mat2x3;
+
1136  typedef mat<2, 4, uint32, mediump> mediump_u32mat2x4;
+
1137  typedef mat<3, 2, uint32, mediump> mediump_u32mat3x2;
+
1138  typedef mat<3, 3, uint32, mediump> mediump_u32mat3x3;
+
1139  typedef mat<3, 4, uint32, mediump> mediump_u32mat3x4;
+
1140  typedef mat<4, 2, uint32, mediump> mediump_u32mat4x2;
+
1141  typedef mat<4, 3, uint32, mediump> mediump_u32mat4x3;
+
1142  typedef mat<4, 4, uint32, mediump> mediump_u32mat4x4;
+
1143 
+
1144  typedef mat<2, 2, uint32, highp> highp_u32mat2x2;
+
1145  typedef mat<2, 3, uint32, highp> highp_u32mat2x3;
+
1146  typedef mat<2, 4, uint32, highp> highp_u32mat2x4;
+
1147  typedef mat<3, 2, uint32, highp> highp_u32mat3x2;
+
1148  typedef mat<3, 3, uint32, highp> highp_u32mat3x3;
+
1149  typedef mat<3, 4, uint32, highp> highp_u32mat3x4;
+
1150  typedef mat<4, 2, uint32, highp> highp_u32mat4x2;
+
1151  typedef mat<4, 3, uint32, highp> highp_u32mat4x3;
+
1152  typedef mat<4, 4, uint32, highp> highp_u32mat4x4;
+
1153 
+
1154  typedef mat<2, 2, uint32, defaultp> u32mat2x2;
+
1155  typedef mat<2, 3, uint32, defaultp> u32mat2x3;
+
1156  typedef mat<2, 4, uint32, defaultp> u32mat2x4;
+
1157  typedef mat<3, 2, uint32, defaultp> u32mat3x2;
+
1158  typedef mat<3, 3, uint32, defaultp> u32mat3x3;
+
1159  typedef mat<3, 4, uint32, defaultp> u32mat3x4;
+
1160  typedef mat<4, 2, uint32, defaultp> u32mat4x2;
+
1161  typedef mat<4, 3, uint32, defaultp> u32mat4x3;
+
1162  typedef mat<4, 4, uint32, defaultp> u32mat4x4;
+
1163 
+
1164 
+
1165  typedef mat<2, 2, uint64, lowp> lowp_u64mat2x2;
+
1166  typedef mat<2, 3, uint64, lowp> lowp_u64mat2x3;
+
1167  typedef mat<2, 4, uint64, lowp> lowp_u64mat2x4;
+
1168  typedef mat<3, 2, uint64, lowp> lowp_u64mat3x2;
+
1169  typedef mat<3, 3, uint64, lowp> lowp_u64mat3x3;
+
1170  typedef mat<3, 4, uint64, lowp> lowp_u64mat3x4;
+
1171  typedef mat<4, 2, uint64, lowp> lowp_u64mat4x2;
+
1172  typedef mat<4, 3, uint64, lowp> lowp_u64mat4x3;
+
1173  typedef mat<4, 4, uint64, lowp> lowp_u64mat4x4;
+
1174 
+
1175  typedef mat<2, 2, uint64, mediump> mediump_u64mat2x2;
+
1176  typedef mat<2, 3, uint64, mediump> mediump_u64mat2x3;
+
1177  typedef mat<2, 4, uint64, mediump> mediump_u64mat2x4;
+
1178  typedef mat<3, 2, uint64, mediump> mediump_u64mat3x2;
+
1179  typedef mat<3, 3, uint64, mediump> mediump_u64mat3x3;
+
1180  typedef mat<3, 4, uint64, mediump> mediump_u64mat3x4;
+
1181  typedef mat<4, 2, uint64, mediump> mediump_u64mat4x2;
+
1182  typedef mat<4, 3, uint64, mediump> mediump_u64mat4x3;
+
1183  typedef mat<4, 4, uint64, mediump> mediump_u64mat4x4;
+
1184 
+
1185  typedef mat<2, 2, uint64, highp> highp_u64mat2x2;
+
1186  typedef mat<2, 3, uint64, highp> highp_u64mat2x3;
+
1187  typedef mat<2, 4, uint64, highp> highp_u64mat2x4;
+
1188  typedef mat<3, 2, uint64, highp> highp_u64mat3x2;
+
1189  typedef mat<3, 3, uint64, highp> highp_u64mat3x3;
+
1190  typedef mat<3, 4, uint64, highp> highp_u64mat3x4;
+
1191  typedef mat<4, 2, uint64, highp> highp_u64mat4x2;
+
1192  typedef mat<4, 3, uint64, highp> highp_u64mat4x3;
+
1193  typedef mat<4, 4, uint64, highp> highp_u64mat4x4;
+
1194 
+
1195  typedef mat<2, 2, uint64, defaultp> u64mat2x2;
+
1196  typedef mat<2, 3, uint64, defaultp> u64mat2x3;
+
1197  typedef mat<2, 4, uint64, defaultp> u64mat2x4;
+
1198  typedef mat<3, 2, uint64, defaultp> u64mat3x2;
+
1199  typedef mat<3, 3, uint64, defaultp> u64mat3x3;
+
1200  typedef mat<3, 4, uint64, defaultp> u64mat3x4;
+
1201  typedef mat<4, 2, uint64, defaultp> u64mat4x2;
+
1202  typedef mat<4, 3, uint64, defaultp> u64mat4x3;
+
1203  typedef mat<4, 4, uint64, defaultp> u64mat4x4;
+
1204 
+
1205  // Quaternion
+
1206 
+
1207  typedef qua<float, lowp> lowp_quat;
+
1208  typedef qua<float, mediump> mediump_quat;
+
1209  typedef qua<float, highp> highp_quat;
+
1210  typedef qua<float, defaultp> quat;
+
1211 
+
1212  typedef qua<float, lowp> lowp_fquat;
+
1213  typedef qua<float, mediump> mediump_fquat;
+
1214  typedef qua<float, highp> highp_fquat;
+
1215  typedef qua<float, defaultp> fquat;
+
1216 
+
1217  typedef qua<f32, lowp> lowp_f32quat;
+
1218  typedef qua<f32, mediump> mediump_f32quat;
+
1219  typedef qua<f32, highp> highp_f32quat;
+
1220  typedef qua<f32, defaultp> f32quat;
+
1221 
+
1222  typedef qua<double, lowp> lowp_dquat;
+
1223  typedef qua<double, mediump> mediump_dquat;
+
1224  typedef qua<double, highp> highp_dquat;
+
1225  typedef qua<double, defaultp> dquat;
+
1226 
+
1227  typedef qua<f64, lowp> lowp_f64quat;
+
1228  typedef qua<f64, mediump> mediump_f64quat;
+
1229  typedef qua<f64, highp> highp_f64quat;
+
1230  typedef qua<f64, defaultp> f64quat;
+
1231 }//namespace glm
+
1232 
+
1233 
+
+
mat< 3, 4, uint, highp > highp_umat3x4
High-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1026
+
vec< 2, int16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
+
mat< 3, 3, f32, highp > highp_f32mat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:696
+
vec< 3, float, highp > highp_vec3
3 components vector of high single-qualifier floating-point numbers.
+
mat< 4, 3, float, lowp > lowp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 2, 2, int16, defaultp > i16mat2x2
16 bit signed integer 2x2 matrix.
+
mat< 3, 2, int, highp > highp_imat3x2
High-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:817
+
mat< 2, 4, int8, defaultp > i8mat2x4
8 bit signed integer 2x4 matrix.
+
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:145
+
mat< 3, 4, int, highp > highp_imat3x4
High-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:819
+
mat< 2, 2, int8, defaultp > i8mat2x2
8 bit signed integer 2x2 matrix.
+
mat< 4, 4, double, highp > highp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 1, i64, lowp > lowp_i64vec1
Low qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:284
+
mat< 3, 3, f32, mediump > mediump_fmat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:531
+
mat< 4, 4, f32, lowp > lowp_fmat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:640
+
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
+
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
+
vec< 1, double, mediump > mediump_dvec1
1 component vector of double-precision floating-point numbers using medium precision arithmetic in te...
+
mat< 3, 3, f32, highp > highp_fmat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:656
+
vec< 1, u16, mediump > mediump_u16vec1
Medium qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:351
+
mat< 2, 3, f32, mediump > mediump_f32mat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:683
+
mat< 4, 4, f64, highp > highp_f64mat4x4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:780
+
mat< 2, 4, double, highp > highp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 2, double, mediump > mediump_dvec2
2 components vector of medium double-qualifier floating-point numbers.
+
mat< 3, 2, int, defaultp > imat3x2
Signed integer 3x2 matrix.
+
vec< 3, double, highp > highp_dvec3
3 components vector of high double-qualifier floating-point numbers.
+
mat< 3, 2, int32, defaultp > i32mat3x2
32 bit signed integer 3x2 matrix.
+
mat< 3, 4, int, lowp > lowp_imat3x4
Low-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:799
+
vec< 4, float, mediump > mediump_fvec4
Medium Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:436
+
mat< 2, 3, f32, highp > highp_fmat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:653
+
vec< 2, i16, highp > highp_i16vec2
High qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:255
+
mat< 4, 3, int, lowp > lowp_imat4x3
Low-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:801
+
mat< 2, 4, int, defaultp > imat2x4
Signed integer 2x4 matrix.
+
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
+
mat< 2, 4, f64, lowp > lowp_f64mat2x4
Low double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:754
+
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:782
+
mat< 4, 4, float, highp > highp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
+
vec< 4, u8, mediump > mediump_u8vec4
Medium qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:334
+
vec< 4, f32, mediump > mediump_f32vec4
Medium single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:456
+
mat< 2, 3, int, highp > highp_imat2x3
High-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:815
+
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:708
+
vec< 2, u64, highp > highp_u64vec2
High qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:397
+
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
+
mat< 4, 4, uint8, defaultp > u8mat4x4
8 bit unsigned integer 4x4 matrix.
+
vec< 3, u16, highp > highp_u16vec3
High qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:358
+
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
+
float mediump_float32_t
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:160
+
double lowp_float64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:170
+
vec< 1, int, mediump > mediump_ivec1
Medium qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:209
+
mat< 4, 3, int, mediump > mediump_imat4x3
Medium-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:811
+
mat< 3, 3, float, lowp > lowp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
vec< 2, int, highp > highp_ivec2
High qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:215
+
mat< 2, 2, f32, lowp > lowp_fmat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:632
+
mat< 3, 4, float, mediump > mediump_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
vec< 2, int, mediump > mediump_ivec2
Medium qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:210
+
mat< 3, 4, double, mediump > mediump_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
+
mat< 2, 3, float, mediump > mediump_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
vec< 4, i16, lowp > lowp_i16vec4
Low qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:247
+
mat< 2, 2, f32, highp > highp_f32mat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:550
+
vec< 2, float, mediump > mediump_vec2
2 components vector of medium single-qualifier floating-point numbers.
+
mat< 3, 4, int32, defaultp > i32mat3x4
32 bit signed integer 3x4 matrix.
+
mat< 2, 2, f64, mediump > mediump_f64mat2x2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:762
+
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
+
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
+
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
+
mat< 4, 4, uint, lowp > lowp_umat4x4
Low-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1009
+
mat< 3, 2, f32, highp > highp_f32mat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:695
+
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
+
vec< 1, i16, highp > highp_i16vec1
High qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:254
+
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
+
mat< 4, 3, f64, highp > highp_f64mat4x3
High double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:779
+
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:669
+
mat< 4, 2, f32, lowp > lowp_fmat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:638
+
mat< 2, 4, f32, lowp > lowp_fmat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:634
+
vec< 2, i16, mediump > mediump_i16vec2
Medium qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:250
+
mat< 3, 2, int64, defaultp > i64mat3x2
64 bit signed integer 3x2 matrix.
+
detail::uint32 uint32
32 bit unsigned integer type.
+
vec< 2, f64, highp > highp_f64vec2
High double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:499
+
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:125
+
vec< 4, i32, mediump > mediump_i32vec4
Medium qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:272
+
vec< 1, float, lowp > lowp_fvec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:428
+
vec< 4, u64, highp > highp_u64vec4
High qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:399
+
vec< 3, double, lowp > lowp_dvec3
3 components vector of low double-qualifier floating-point numbers.
+
mat< 2, 2, uint32, defaultp > u32mat2x2
32 bit unsigned integer 2x2 matrix.
+
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
+
vec< 3, i16, lowp > lowp_i16vec3
Low qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:246
+
vec< 1, float, mediump > mediump_fvec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:433
+
mat< 3, 3, int32, defaultp > i32mat3x3
32 bit signed integer 3x3 matrix.
+
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
+
mat< 3, 3, f32, mediump > mediump_fmat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:646
+
vec< 1, u32, mediump > mediump_u32vec1
Medium qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:371
+
mat< 3, 3, double, lowp > lowp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
+
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:505
+
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
+
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
+
vec< 1, int, highp > highp_ivec1
High qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:214
+
mat< 4, 2, f64, lowp > lowp_f64mat4x2
Low double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:758
+
vec< 4, float, highp > highp_vec4
4 components vector of high single-qualifier floating-point numbers.
+
mat< 2, 2, double, highp > highp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
+
mat< 3, 3, f32, mediump > mediump_f32mat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:547
+
mat< 3, 2, int16, defaultp > i16mat3x2
16 bit signed integer 3x2 matrix.
+
mat< 3, 3, f32, defaultp > f32mat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:555
+
float highp_f32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:151
+
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
+
mat< 3, 4, uint, mediump > mediump_umat3x4
Medium-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1016
+
mat< 4, 3, int, highp > highp_imat4x3
High-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:821
+
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
+
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
+
vec< 2, uint16, defaultp > u16vec2
16 bit unsigned integer vector of 2 components type.
+
vec< 4, f32, highp > highp_f32vec4
High single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:461
+
vec< 2, int64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
+
vec< 4, uint8, defaultp > u8vec4
8 bit unsigned integer vector of 4 components type.
+
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 2, 2, f64, defaultp > f64mat2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:586
+
vec< 2, i32, mediump > mediump_i32vec2
Medium qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:270
+
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
+
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
+
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:173
+
mat< 2, 2, f64, highp > highp_f64mat2x2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:772
+
vec< 2, u32, mediump > mediump_u32vec2
Medium qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:372
+
mat< 3, 4, f64, lowp > lowp_f64mat3x4
Low double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:757
+
mat< 4, 4, int, defaultp > imat4x4
Signed integer 4x4 matrix.
+
mat< 2, 2, int, defaultp > imat2x2
Signed integer 2x2 matrix.
+
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
+
vec< 3, int8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
+
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
+
vec< 4, float, lowp > lowp_fvec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:431
+
mat< 4, 3, int, defaultp > imat4x3
Signed integer 4x3 matrix.
+
mat< 4, 4, f32, lowp > lowp_fmat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:528
+
mat< 3, 4, f32, highp > highp_f32mat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:697
+
double highp_float64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:172
+
mat< 4, 4, int, lowp > lowp_imat4x4
Low-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:802
+
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:130
+
mat< 4, 4, uint16, defaultp > u16mat4x4
16 bit unsigned integer 4x4 matrix.
+
float mediump_f32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:150
+
vec< 3, i8, highp > highp_i8vec3
High qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:236
+
vec< 2, int32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
+
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:664
+
mat< 2, 2, f32, highp > highp_fmat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:652
+
mat< 3, 3, f64, highp > highp_f64mat3x3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:776
+
vec< 4, int, highp > highp_ivec4
High qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:217
+
mat< 2, 4, uint8, defaultp > u8mat2x4
8 bit unsigned integer 2x4 matrix.
+
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:152
+
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
+
vec< 4, double, mediump > mediump_dvec4
4 components vector of medium double-qualifier floating-point numbers.
+
mat< 3, 4, double, highp > highp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 2, uint, defaultp > umat3x2
Unsigned integer 3x2 matrix.
+
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:117
+
mat< 3, 4, int8, defaultp > i8mat3x4
8 bit signed integer 3x4 matrix.
+
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
+
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:1230
+
mat< 3, 3, f32, mediump > mediump_f32mat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:686
+
mat< 3, 3, uint, mediump > mediump_umat3x3
Medium-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1015
+
vec< 1, f32, highp > highp_f32vec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:458
+
mat< 2, 4, uint, lowp > lowp_umat2x4
Low-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1003
+
mat< 4, 2, uint, mediump > mediump_umat4x2
Medium-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1017
+
mat< 4, 3, double, highp > highp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
+
mat< 4, 2, f32, mediump > mediump_f32mat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:688
+
mat< 3, 4, uint8, defaultp > u8mat3x4
8 bit unsigned integer 3x4 matrix.
+
mat< 2, 4, double, mediump > mediump_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
+
mat< 3, 3, float, mediump > mediump_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 2, int, mediump > mediump_imat4x2
Medium-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:810
+
mat< 3, 3, double, mediump > mediump_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:709
+
mat< 4, 4, f32, mediump > mediump_f32mat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:548
+
mat< 2, 2, f32, mediump > mediump_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:682
+
vec< 4, double, highp > highp_dvec4
4 components vector of high double-qualifier floating-point numbers.
+
vec< 3, u32, mediump > mediump_u32vec3
Medium qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:373
+
vec< 1, double, lowp > lowp_dvec1
1 component vector of double-precision floating-point numbers using low precision arithmetic in term ...
+
mat< 2, 2, f32, highp > highp_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:692
+
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
+
vec< 2, u8, highp > highp_u8vec2
High qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:337
+
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
+
mat< 4, 4, f32, mediump > mediump_f32mat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:690
+
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
+
vec< 1, uint8, defaultp > u8vec1
8 bit unsigned integer vector of 1 component type.
+
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
+
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:139
+
detail::int16 int16
16 bit signed integer type.
+
mat< 3, 4, uint, defaultp > umat3x4
Signed integer 3x4 matrix.
+
vec< 1, int16, defaultp > i16vec1
16 bit signed integer vector of 1 component type.
+
mat< 4, 2, int16, defaultp > i16mat4x2
16 bit signed integer 4x2 matrix.
+
mat< 2, 4, uint, defaultp > umat2x4
Unsigned integer 2x4 matrix.
+
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:705
+
vec< 1, bool, defaultp > bvec1
1 components vector of boolean.
+
mat< 3, 4, int, defaultp > imat3x4
Signed integer 3x4 matrix.
+
mat< 3, 3, double, defaultp > dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers.
+
mat< 2, 2, f32, lowp > lowp_f32mat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:542
+
vec< 4, f64, lowp > lowp_f64vec4
Low double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:491
+
vec< 1, u16, lowp > lowp_u16vec1
Low qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:346
+
vec< 4, u16, mediump > mediump_u16vec4
Medium qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:354
+
mat< 4, 4, uint, mediump > mediump_umat4x4
Medium-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1019
+
mat< 3, 4, float, highp > highp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 2, i8, highp > highp_i8vec2
High qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:235
+
mat< 3, 4, uint16, defaultp > u16mat3x4
16 bit unsigned integer 3x4 matrix.
+
detail::uint64 uint64
64 bit unsigned integer type.
+
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
+
vec< 4, f64, mediump > mediump_f64vec4
Medium double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:496
+
mat< 2, 4, uint16, defaultp > u16mat2x4
16 bit unsigned integer 2x4 matrix.
+
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
+
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
+
vec< 1, u16, highp > highp_u16vec1
High qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:356
+
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:786
+
vec< 4, i8, lowp > lowp_i8vec4
Low qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:227
+
mat< 3, 4, f64, mediump > mediump_f64mat3x4
Medium double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:767
+
mat< 4, 4, uint, highp > highp_umat4x4
High-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1029
+
mat< 4, 3, uint8, defaultp > u8mat4x3
8 bit unsigned integer 4x3 matrix.
+
mat< 2, 3, f32, lowp > lowp_fmat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:633
+
mat< 3, 4, int, mediump > mediump_imat3x4
Medium-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:809
+
vec< 1, f64, lowp > lowp_f64vec1
Low double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:488
+
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
+
vec< 2, bool, lowp > lowp_bvec2
2 components vector of low qualifier bool numbers.
+
mat< 4, 2, double, lowp > lowp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 3, 3, double, mediump > mediump_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
+
vec< 2, bool, highp > highp_bvec2
2 components vector of high qualifier bool numbers.
+
vec< 4, int, mediump > mediump_ivec4
Medium qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:212
+
mat< 2, 2, uint16, defaultp > u16mat2x2
16 bit unsigned integer 2x2 matrix.
+
vec< 4, int32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
+
mat< 2, 2, int32, defaultp > i32mat2x2
32 bit signed integer 2x2 matrix.
+
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:788
+
vec< 2, float, lowp > lowp_vec2
2 components vector of low single-qualifier floating-point numbers.
+
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
+
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:706
+
mat< 3, 3, float, mediump > mediump_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
vec< 2, int8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
+
mat< 3, 3, double, lowp > lowp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 3, 2, uint, lowp > lowp_umat3x2
Low-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1004
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+
mat< 2, 2, int, highp > highp_imat2x2
High-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:814
+
mat< 4, 3, double, lowp > lowp_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
vec< 2, f32, highp > highp_f32vec2
High single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:459
+
mat< 3, 2, int8, defaultp > i8mat3x2
8 bit signed integer 3x2 matrix.
+
vec< 2, f32, lowp > lowp_f32vec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:449
+
mat< 4, 4, f32, defaultp > f32mat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:556
+
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:789
+
vec< 3, i64, lowp > lowp_i64vec3
Low qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:286
+
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:464
+
mat< 2, 2, double, lowp > lowp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 3, double, lowp > lowp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 4, 4, f64, defaultp > f64mat4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:588
+
vec< 2, i64, mediump > mediump_i64vec2
Medium qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:290
+
mat< 3, 4, int64, defaultp > i64mat3x4
64 bit signed integer 3x4 matrix.
+
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:784
+
vec< 4, bool, mediump > mediump_bvec4
4 components vector of medium qualifier bool numbers.
+
double mediump_float64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:171
+
double lowp_float64_t
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:175
+
mat< 3, 2, double, highp > highp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:178
+
mat< 2, 4, f32, highp > highp_f32mat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:694
+
mat< 4, 4, f32, highp > highp_f32mat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:552
+
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
+
vec< 3, int, highp > highp_ivec3
High qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:216
+
qua< double, highp > highp_dquat
Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of...
+
vec< 4, uint32, defaultp > u32vec4
32 bit unsigned integer vector of 4 components type.
+
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
+
vec< 1, u64, highp > highp_u64vec1
High qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:396
+
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
+
mat< 4, 4, int64, defaultp > i64mat4x4
64 bit signed integer 4x4 matrix.
+
vec< 3, u32, lowp > lowp_u32vec3
Low qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:368
+
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
+
mat< 2, 4, float, highp > highp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 3, 2, f32, lowp > lowp_fmat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:635
+
mat< 3, 3, f32, lowp > lowp_f32mat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:676
+
mat< 4, 4, f32, highp > highp_fmat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:536
+
mat< 4, 2, int64, defaultp > i64mat4x2
64 bit signed integer 4x2 matrix.
+
mat< 4, 2, uint16, defaultp > u16mat4x2
16 bit unsigned integer 4x2 matrix.
+
mat< 2, 3, double, highp > highp_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 2, uint, lowp > lowp_umat4x2
Low-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1007
+
mat< 2, 3, f64, mediump > mediump_f64mat2x3
Medium double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:763
+
vec< 1, int8, defaultp > i8vec1
8 bit signed integer vector of 1 component type.
+
mat< 4, 4, f64, highp > highp_f64mat4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:584
+
vec< 1, i8, lowp > lowp_i8vec1
Low qualifier 8 bit signed integer vector of 1 component type.
Definition: fwd.hpp:224
+
vec< 3, i32, highp > highp_i32vec3
High qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:276
+
mat< 2, 2, f32, highp > highp_fmat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:534
+
mat< 2, 2, f64, mediump > mediump_f64mat2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:578
+
mat< 3, 2, f64, mediump > mediump_f64mat3x2
Medium double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:765
+
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
+
mat< 4, 2, int8, defaultp > i8mat4x2
8 bit signed integer 4x2 matrix.
+
vec< 4, int, lowp > lowp_ivec4
Low qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:207
+
vec< 3, uint16, defaultp > u16vec3
16 bit unsigned integer vector of 3 components type.
+
double mediump_float64_t
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:176
+
mat< 3, 3, f32, highp > highp_fmat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:535
+
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:445
+
mat< 2, 3, uint16, defaultp > u16mat2x3
16 bit unsigned integer 2x3 matrix.
+
vec< 1, uint, mediump > mediump_uvec1
Medium qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:311
+
vec< 1, u64, lowp > lowp_u64vec1
Low qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:386
+
mat< 4, 4, uint32, defaultp > u32mat4x4
32 bit unsigned integer 4x4 matrix.
+
mat< 4, 2, f32, highp > highp_f32mat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:698
+
mat< 2, 4, double, lowp > lowp_dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+
vec< 4, int16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
+
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
+
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:503
+
vec< 3, float, mediump > mediump_vec3
3 components vector of medium single-qualifier floating-point numbers.
+
qua< float, lowp > lowp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
vec< 1, i16, mediump > mediump_i16vec1
Medium qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:249
+
mat< 3, 4, uint, lowp > lowp_umat3x4
Low-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1006
+
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:665
+
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
+
mat< 4, 4, float, lowp > lowp_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 4, 3, f32, mediump > mediump_f32mat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:689
+
mat< 3, 3, uint64, defaultp > u64mat3x3
64 bit unsigned integer 3x3 matrix.
+
qua< f32, lowp > lowp_f32quat
Low single-qualifier floating-point quaternion.
Definition: fwd.hpp:1217
+
mat< 4, 3, float, highp > highp_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 3, int32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
+
detail::uint8 uint8
8 bit unsigned integer type.
+
qua< f32, highp > highp_f32quat
High single-qualifier floating-point quaternion.
Definition: fwd.hpp:1219
+
mat< 2, 4, f32, highp > highp_fmat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:654
+
mat< 2, 2, f32, mediump > mediump_fmat2x2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:642
+
mat< 3, 3, double, highp > highp_dmat3x3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 3, f32, mediump > mediump_f32vec3
Medium single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:455
+
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
+
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:785
+
mat< 2, 3, uint, defaultp > umat2x3
Unsigned integer 2x3 matrix.
+
mat< 4, 2, float, mediump > mediump_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
+
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:162
+
vec< 4, double, lowp > lowp_dvec4
4 components vector of low double-qualifier floating-point numbers.
+
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:666
+
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
+
mat< 4, 2, uint64, defaultp > u64mat4x2
64 bit unsigned integer 4x2 matrix.
+
mat< 2, 4, float, mediump > mediump_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, float, mediump > mediump_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
+
vec< 4, uint64, defaultp > u64vec4
64 bit unsigned integer vector of 4 components type.
+
mat< 2, 2, int, mediump > mediump_imat2x2
Medium-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:804
+
vec< 4, int64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
+
vec< 1, float, mediump > mediump_vec1
1 component vector of single-precision floating-point numbers using medium precision arithmetic in te...
+
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:157
+
qua< f64, highp > highp_f64quat
High double-qualifier floating-point quaternion.
Definition: fwd.hpp:1229
+
mat< 4, 3, double, defaultp > dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers.
+
mat< 2, 2, uint, highp > highp_umat2x2
High-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1021
+
mat< 4, 2, float, highp > highp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 3, f64, mediump > mediump_f64mat4x3
Medium double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:769
+
vec< 4, u32, highp > highp_u32vec4
High qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:379
+
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
+
vec< 4, bool, defaultp > bvec4
4 components vector of boolean.
+
mat< 3, 4, float, lowp > lowp_mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
+
mat< 2, 4, int, mediump > mediump_imat2x4
Medium-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:806
+
vec< 4, i64, lowp > lowp_i64vec4
Low qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:287
+
mat< 2, 4, uint, mediump > mediump_umat2x4
Medium-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1013
+
vec< 4, uint16, defaultp > u16vec4
16 bit unsigned integer vector of 4 components type.
+
mat< 4, 2, uint8, defaultp > u8mat4x2
8 bit unsigned integer 4x2 matrix.
+
vec< 1, i8, mediump > mediump_i8vec1
Medium qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:229
+
vec< 2, u32, highp > highp_u32vec2
High qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:377
+
mat< 4, 4, double, mediump > mediump_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 2, u16, lowp > lowp_u16vec2
Low qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:347
+
mat< 4, 4, float, highp > highp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 2, float, lowp > lowp_fvec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:429
+
float lowp_float32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:154
+
mat< 4, 2, uint, highp > highp_umat4x2
High-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1027
+
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:102
+
mat< 2, 2, f32, lowp > lowp_f32mat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:672
+
vec< 1, double, highp > highp_dvec1
1 component vector of double-precision floating-point numbers using high precision arithmetic in term...
+
vec< 2, float, mediump > mediump_fvec2
Medium Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:434
+
mat< 2, 4, uint32, defaultp > u32mat2x4
32 bit unsigned integer 2x4 matrix.
+
vec< 2, float, highp > highp_fvec2
High Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:439
+
mat< 4, 4, f32, lowp > lowp_f32mat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:680
+
vec< 2, u8, lowp > lowp_u8vec2
Low qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:327
+
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
+
mat< 2, 2, f64, lowp > lowp_f64mat2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:574
+
vec< 4, uint, lowp > lowp_uvec4
Low qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:309
+
mat< 2, 3, uint8, defaultp > u8mat2x3
8 bit unsigned integer 2x3 matrix.
+
vec< 3, i16, highp > highp_i16vec3
High qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:256
+
vec< 3, int, lowp > lowp_ivec3
Low qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:206
+
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
+
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
+
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
+
vec< 4, u64, lowp > lowp_u64vec4
Low qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:389
+
mat< 2, 3, float, lowp > lowp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
+
mat< 2, 2, double, defaultp > dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers.
+
vec< 3, bool, mediump > mediump_bvec3
3 components vector of medium qualifier bool numbers.
+
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
+
vec< 4, u16, lowp > lowp_u16vec4
Low qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:349
+
mat< 4, 3, f32, lowp > lowp_fmat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:639
+
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:465
+
mat< 4, 4, f64, mediump > mediump_f64mat4x4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:770
+
vec< 1, u8, mediump > mediump_u8vec1
Medium qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:331
+
mat< 4, 4, int16, defaultp > i16mat4x4
16 bit signed integer 4x4 matrix.
+
mat< 3, 2, float, mediump > mediump_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 2, 3, double, defaultp > dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers.
+
double mediump_f64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:166
+
vec< 3, bool, highp > highp_bvec3
3 components vector of high qualifier bool numbers.
+
mat< 2, 2, double, highp > highp_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
+
mat< 4, 2, uint, defaultp > umat4x2
Unsigned integer 4x2 matrix.
+
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
+
mat< 3, 3, f64, defaultp > f64mat3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:587
+
vec< 3, i64, highp > highp_i64vec3
High qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:296
+
mat< 3, 3, uint, lowp > lowp_umat3x3
Low-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1005
+
mat< 3, 2, int, lowp > lowp_imat3x2
Low-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:797
+
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
+
vec< 1, float, lowp > lowp_vec1
1 component vector of single-precision floating-point numbers using low precision arithmetic in term ...
+
mat< 2, 2, float, highp > highp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
+
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:710
+
mat< 3, 2, uint8, defaultp > u8mat3x2
8 bit signed integer 3x2 matrix.
+
mat< 2, 2, float, lowp > lowp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+
vec< 4, i8, highp > highp_i8vec4
High qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:237
+
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
+
vec< 3, int64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
+
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
+
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
+
vec< 3, u8, mediump > mediump_u8vec3
Medium qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:333
+
mat< 4, 3, f32, mediump > mediump_fmat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:649
+
mat< 2, 3, uint, lowp > lowp_umat2x3
Low-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1002
+
vec< 4, i8, mediump > mediump_i8vec4
Medium qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:232
+
vec< 1, int32, defaultp > i32vec1
32 bit signed integer vector of 1 component type.
+
mat< 4, 4, int8, defaultp > i8mat4x4
8 bit signed integer 4x4 matrix.
+
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
+
float highp_float32_t
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:161
+
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
+
mat< 4, 2, uint32, defaultp > u32mat4x2
32 bit unsigned integer 4x2 matrix.
+
mat< 2, 2, f32, defaultp > f32mat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:554
+
mat< 3, 3, f64, highp > highp_f64mat3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:583
+
vec< 4, float, mediump > mediump_vec4
4 components vector of medium single-qualifier floating-point numbers.
+
mat< 3, 3, f64, mediump > mediump_f64mat3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:579
+
mat< 2, 3, int64, defaultp > i64mat2x3
64 bit signed integer 2x3 matrix.
+
vec< 1, u8, highp > highp_u8vec1
High qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:336
+
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
+
vec< 1, int, lowp > lowp_ivec1
Low qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:204
+
qua< f64, lowp > lowp_f64quat
Low double-qualifier floating-point quaternion.
Definition: fwd.hpp:1227
+
mat< 4, 3, double, mediump > mediump_dmat4x3
4 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 1, bool, lowp > lowp_bvec1
1 component vector of bool values.
+
float highp_float32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:156
+
mat< 4, 4, f64, lowp > lowp_f64mat4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:576
+
mat< 3, 4, f32, highp > highp_fmat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:657
+
mat< 2, 3, uint, highp > highp_umat2x3
High-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1022
+
vec< 4, i64, highp > highp_i64vec4
High qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:297
+
mat< 4, 2, f32, mediump > mediump_fmat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:648
+
mat< 2, 2, uint, lowp > lowp_umat2x2
Low-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1001
+
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
+
mat< 3, 2, uint, mediump > mediump_umat3x2
Medium-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1014
+
mat< 4, 3, f32, highp > highp_fmat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:659
+
mat< 4, 4, float, mediump > mediump_mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, double, lowp > lowp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+
vec< 4, u32, lowp > lowp_u32vec4
Low qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:369
+
vec< 2, f32, mediump > mediump_f32vec2
Medium single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:454
+
vec< 3, f64, highp > highp_f64vec3
High double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:500
+
vec< 2, i32, highp > highp_i32vec2
High qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:275
+
vec< 1, f32, lowp > lowp_f32vec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:448
+
mat< 4, 3, uint, lowp > lowp_umat4x3
Low-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1008
+
mat< 2, 3, uint, mediump > mediump_umat2x3
Medium-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1012
+
mat< 3, 4, uint32, defaultp > u32mat3x4
32 bit unsigned integer 3x4 matrix.
+
mat< 3, 4, int16, defaultp > i16mat3x4
16 bit signed integer 3x4 matrix.
+
vec< 3, u64, mediump > mediump_u64vec3
Medium qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:393
+
vec< 1, uint, lowp > lowp_uvec1
Low qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:306
+
mat< 2, 4, f64, highp > highp_f64mat2x4
High double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:774
+
mat< 2, 3, f32, highp > highp_f32mat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:693
+
mat< 2, 2, uint8, defaultp > u8mat2x2
8 bit unsigned integer 2x2 matrix.
+
mat< 3, 3, uint32, defaultp > u32mat3x3
32 bit unsigned integer 3x3 matrix.
+
vec< 3, u16, lowp > lowp_u16vec3
Low qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:348
+
vec< 3, double, mediump > mediump_dvec3
3 components vector of medium double-qualifier floating-point numbers.
+
vec< 1, u64, mediump > mediump_u64vec1
Medium qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:391
+
mat< 4, 2, int32, defaultp > i32mat4x2
32 bit signed integer 4x2 matrix.
+
vec< 2, u32, lowp > lowp_u32vec2
Low qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:367
+
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:131
+
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:662
+
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
+
vec< 4, u8, highp > highp_u8vec4
High qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:339
+
mat< 4, 2, f32, lowp > lowp_f32mat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:678
+
mat< 3, 2, f32, highp > highp_fmat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:655
+
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
+
vec< 4, f64, highp > highp_f64vec4
High double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:501
+
mat< 4, 2, int, highp > highp_imat4x2
High-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:820
+
mat< 2, 2, int64, defaultp > i64mat2x2
64 bit signed integer 2x2 matrix.
+
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
double highp_float64_t
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:177
+
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
+
vec< 4, bool, lowp > lowp_bvec4
4 components vector of low qualifier bool numbers.
+
qua< float, mediump > mediump_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
qua< f32, mediump > mediump_f32quat
Medium single-qualifier floating-point quaternion.
Definition: fwd.hpp:1218
+
vec< 4, uint, mediump > mediump_uvec4
Medium qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:314
+
vec< 2, f64, mediump > mediump_f64vec2
Medium double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:494
+
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:103
+
vec< 1, u8, lowp > lowp_u8vec1
Low qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:326
+
vec< 1, i32, lowp > lowp_i32vec1
Low qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:264
+
mat< 4, 3, f64, lowp > lowp_f64mat4x3
Low double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:759
+
vec< 1, float, highp > highp_fvec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:438
+
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
+
mat< 4, 3, int32, defaultp > i32mat4x3
32 bit signed integer 4x3 matrix.
+
mat< 2, 2, float, highp > highp_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:670
+
vec< 2, u64, mediump > mediump_u64vec2
Medium qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:392
+
mat< 2, 2, uint, defaultp > umat2x2
Unsigned integer 2x2 matrix.
+
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:111
+
mat< 3, 3, double, highp > highp_dmat3
3 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
vec< 4, i16, highp > highp_i16vec4
High qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:257
+
mat< 3, 3, float, lowp > lowp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using low precision arith...
+
float lowp_float32_t
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:159
+
vec< 4, f32, lowp > lowp_f32vec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:451
+
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:1220
+
mat< 2, 2, float, mediump > mediump_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
vec< 3, u8, highp > highp_u8vec3
High qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:338
+
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
+
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:463
+
vec< 3, uint, lowp > lowp_uvec3
Low qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:308
+
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:506
+
mat< 2, 4, float, lowp > lowp_mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:443
+
mat< 4, 3, int16, defaultp > i16mat4x3
16 bit signed integer 4x3 matrix.
+
mat< 3, 2, uint64, defaultp > u64mat3x2
64 bit signed integer 3x2 matrix.
+
mat< 2, 3, int16, defaultp > i16mat2x3
16 bit signed integer 2x3 matrix.
+
mat< 4, 4, f32, mediump > mediump_fmat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:650
+
mat< 4, 4, float, lowp > lowp_mat4
4 columns of 4 components matrix of single-precision floating-point numbers using low precision arith...
+
vec< 2, uint, highp > highp_uvec2
High qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:317
+
vec< 1, i64, mediump > mediump_i64vec1
Medium qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:289
+
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:135
+
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
+
mat< 2, 3, int, defaultp > imat2x3
Signed integer 2x3 matrix.
+
vec< 4, u32, mediump > mediump_u32vec4
Medium qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:374
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
vec< 3, u8, lowp > lowp_u8vec3
Low qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:328
+
vec< 2, int, lowp > lowp_ivec2
Low qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:205
+
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
+
mat< 2, 4, int32, defaultp > i32mat2x4
32 bit signed integer 2x4 matrix.
+
vec< 4, i32, lowp > lowp_i32vec4
Low qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:267
+
vec< 1, f32, mediump > mediump_f32vec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:453
+
mat< 2, 4, f32, lowp > lowp_f32mat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:674
+
mat< 3, 3, f64, mediump > mediump_f64mat3x3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:766
+
mat< 2, 2, f32, defaultp > fmat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:538
+
vec< 2, uint, mediump > mediump_uvec2
Medium qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:312
+
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:466
+
mat< 2, 3, f64, highp > highp_f64mat2x3
High double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:773
+
mat< 4, 2, f64, mediump > mediump_f64mat4x2
Medium double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:768
+
mat< 4, 2, int, defaultp > imat4x2
Signed integer 4x2 matrix.
+
vec< 1, i16, lowp > lowp_i16vec1
Low qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:244
+
vec< 3, u16, mediump > mediump_u16vec3
Medium qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:353
+
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
+
mat< 2, 2, double, defaultp > dmat2
2 columns of 2 components matrix of double-precision floating-point numbers.
+
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
+
mat< 2, 4, int64, defaultp > i64mat2x4
64 bit signed integer 2x4 matrix.
+
mat< 3, 3, uint8, defaultp > u8mat3x3
8 bit unsigned integer 3x3 matrix.
+
vec< 2, u64, lowp > lowp_u64vec2
Low qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:387
+
mat< 3, 3, float, highp > highp_mat3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 3, u64, highp > highp_u64vec3
High qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:398
+
vec< 2, i32, lowp > lowp_i32vec2
Low qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:265
+
vec< 2, double, lowp > lowp_dvec2
2 components vector of low double-qualifier floating-point numbers.
+
mat< 2, 3, int8, defaultp > i8mat2x3
8 bit signed integer 2x3 matrix.
+
mat< 4, 4, f64, lowp > lowp_f64mat4x4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:760
+
vec< 2, i64, highp > highp_i64vec2
High qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:295
+
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
+
detail::int8 int8
8 bit signed integer type.
+
mat< 4, 3, int64, defaultp > i64mat4x3
64 bit signed integer 4x3 matrix.
+
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:668
+
mat< 3, 2, uint, highp > highp_umat3x2
High-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1024
+
vec< 4, u8, lowp > lowp_u8vec4
Low qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:329
+
vec< 4, float, lowp > lowp_vec4
4 components vector of low single-qualifier floating-point numbers.
+
mat< 3, 2, f32, mediump > mediump_f32mat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:685
+
mat< 4, 2, int, lowp > lowp_imat4x2
Low-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:800
+
mat< 2, 4, f32, mediump > mediump_f32mat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:684
+
mat< 4, 2, float, lowp > lowp_mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 4, 4, uint64, defaultp > u64mat4x4
64 bit unsigned integer 4x4 matrix.
+
mat< 3, 4, f32, lowp > lowp_f32mat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:677
+
vec< 3, float, highp > highp_fvec3
High Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:440
+
vec< 3, bool, lowp > lowp_bvec3
3 components vector of low qualifier bool numbers.
+
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
+
double highp_f64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:167
+
mat< 3, 3, f32, lowp > lowp_fmat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:636
+
vec< 4, u16, highp > highp_u16vec4
High qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:359
+
vec< 2, bool, defaultp > bvec2
2 components vector of boolean.
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+
vec< 3, uint, mediump > mediump_uvec3
Medium qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:313
+
vec< 2, f64, lowp > lowp_f64vec2
Low double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:489
+
mat< 3, 2, f64, lowp > lowp_f64mat3x2
Low double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:755
+
vec< 3, uint, highp > highp_uvec3
High qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:318
+
mat< 3, 3, uint16, defaultp > u16mat3x3
16 bit unsigned integer 3x3 matrix.
+
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:107
+
mat< 4, 4, int, highp > highp_imat4x4
High-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:822
+
vec< 2, uint, lowp > lowp_uvec2
Low qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:307
+
vec< 4, uint, highp > highp_uvec4
High qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:319
+
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
mat< 2, 3, float, highp > highp_mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 2, 2, double, mediump > mediump_dmat2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
+
mat< 4, 4, double, mediump > mediump_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 3, u64, lowp > lowp_u64vec3
Low qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:388
+
mat< 4, 3, f32, highp > highp_f32mat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:699
+
vec< 1, i64, highp > highp_i64vec1
High qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:294
+
mat< 4, 3, uint32, defaultp > u32mat4x3
32 bit unsigned integer 4x3 matrix.
+
mat< 2, 3, f32, mediump > mediump_fmat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:643
+
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
+
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 3, 2, f32, mediump > mediump_fmat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:645
+
vec< 3, i16, mediump > mediump_i16vec3
Medium qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:251
+
mat< 3, 2, float, highp > highp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using high precision arit...
+
vec< 1, u32, highp > highp_u32vec1
High qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:376
+
mat< 3, 4, double, lowp > lowp_dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 2, float, mediump > mediump_mat2
2 columns of 2 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 3, 2, double, lowp > lowp_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 2, 3, int, lowp > lowp_imat2x3
Low-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:795
+
mat< 3, 3, int64, defaultp > i64mat3x3
64 bit signed integer 3x3 matrix.
+
vec< 2, uint32, defaultp > u32vec2
32 bit unsigned integer vector of 2 components type.
+
vec< 1, bool, highp > highp_bvec1
1 component vector of bool values.
+
mat< 2, 3, int32, defaultp > i32mat2x3
32 bit signed integer 2x3 matrix.
+
vec< 1, uint16, defaultp > u16vec1
16 bit unsigned integer vector of 1 component type.
+
mat< 3, 3, int, lowp > lowp_imat3x3
Low-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:798
+
mat< 4, 3, uint16, defaultp > u16mat4x3
16 bit unsigned integer 4x3 matrix.
+
vec< 2, i8, lowp > lowp_i8vec2
Low qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:225
+
mat< 4, 4, f32, lowp > lowp_f32mat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:544
+
mat< 2, 4, f64, mediump > mediump_f64mat2x4
Medium double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:764
+
mat< 4, 3, int8, defaultp > i8mat4x3
8 bit signed integer 4x3 matrix.
+
mat< 4, 4, double, defaultp > dmat4
4 columns of 4 components matrix of double-precision floating-point numbers.
+
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
+
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:97
+
mat< 3, 2, f32, lowp > lowp_f32mat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:675
+
mat< 4, 4, f32, highp > highp_f32mat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:700
+
mat< 2, 2, f32, mediump > mediump_f32mat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:546
+
mat< 3, 4, f64, highp > highp_f64mat3x4
High double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:777
+
float mediump_float32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:155
+
mat< 3, 3, uint, highp > highp_umat3x3
High-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1025
+
mat< 4, 4, f32, mediump > mediump_fmat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:532
+
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:702
+
mat< 3, 2, uint16, defaultp > u16mat3x2
16 bit signed integer 3x2 matrix.
+
vec< 1, i8, highp > highp_i8vec1
High qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:234
+
mat< 2, 4, uint64, defaultp > u64mat2x4
64 bit unsigned integer 2x4 matrix.
+
mat< 3, 2, int, mediump > mediump_imat3x2
Medium-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:807
+
mat< 4, 4, uint, defaultp > umat4x4
Unsigned integer 4x4 matrix.
+
mat< 3, 3, int16, defaultp > i16mat3x3
16 bit signed integer 3x3 matrix.
+
mat< 2, 3, int, mediump > mediump_imat2x3
Medium-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:805
+
vec< 2, uint8, defaultp > u8vec2
8 bit unsigned integer vector of 2 components type.
+
vec< 3, uint32, defaultp > u32vec3
32 bit unsigned integer vector of 3 components type.
+
mat< 4, 2, double, highp > highp_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 4, float, highp > highp_fvec4
High Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:441
+
mat< 3, 4, double, defaultp > dmat3x4
3 columns of 4 components matrix of double-precision floating-point numbers.
+
vec< 3, f32, lowp > lowp_f32vec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:450
+
vec< 2, u16, highp > highp_u16vec2
High qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:357
+
vec< 3, bool, defaultp > bvec3
3 components vector of boolean.
+
mat< 2, 3, double, mediump > mediump_dmat2x3
2 columns of 3 components matrix of double-precision floating-point numbers using medium precision ar...
+
vec< 3, i8, mediump > mediump_i8vec3
Medium qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:231
+
mat< 4, 4, double, highp > highp_dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 2, 3, f32, lowp > lowp_f32mat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:673
+
vec< 3, f64, mediump > mediump_f64vec3
Medium double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:495
+
vec< 3, f32, highp > highp_f32vec3
High single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:460
+
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
+
mat< 4, 2, f32, highp > highp_fmat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:658
+
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
+
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:144
+
vec< 1, int64, defaultp > i64vec1
64 bit signed integer vector of 1 component type.
+
vec< 2, double, highp > highp_dvec2
2 components vector of high double-qualifier floating-point numbers.
+
mat< 3, 2, uint32, defaultp > u32mat3x2
32 bit signed integer 3x2 matrix.
+
mat< 2, 4, double, defaultp > dmat2x4
2 columns of 4 components matrix of double-precision floating-point numbers.
+
mat< 2, 4, f32, mediump > mediump_fmat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:644
+
vec< 2, u16, mediump > mediump_u16vec2
Medium qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:352
+
mat< 2, 4, int, lowp > lowp_imat2x4
Low-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:796
+
mat< 4, 3, f32, lowp > lowp_f32mat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:679
+
mat< 4, 4, f32, defaultp > fmat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:540
+
vec< 1, uint64, defaultp > u64vec1
64 bit unsigned integer vector of 1 component type.
+
mat< 2, 3, uint64, defaultp > u64mat2x3
64 bit unsigned integer 2x3 matrix.
+
vec< 3, i32, mediump > mediump_i32vec3
Medium qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:271
+
vec< 2, u8, mediump > mediump_u8vec2
Medium qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:332
+
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
+
mat< 2, 2, uint64, defaultp > u64mat2x2
64 bit unsigned integer 2x2 matrix.
+
mat< 4, 3, uint64, defaultp > u64mat4x3
64 bit unsigned integer 4x3 matrix.
+
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
+
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
+
mat< 3, 3, f32, defaultp > fmat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:539
+
mat< 3, 4, f32, mediump > mediump_fmat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:647
+
vec< 3, int, mediump > mediump_ivec3
Medium qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:211
+
qua< float, highp > highp_quat
Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
mat< 2, 2, int, lowp > lowp_imat2x2
Low-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:794
+
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
+
mat< 3, 2, double, mediump > mediump_dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 3, 3, uint, defaultp > umat3x3
Unsigned integer 3x3 matrix.
+
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:121
+
mat< 3, 3, f64, lowp > lowp_f64mat3x3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:756
+
vec< 1, f64, highp > highp_f64vec1
High double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:498
+
mat< 3, 3, f32, lowp > lowp_fmat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:527
+
mat< 3, 3, f32, lowp > lowp_f32mat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:543
+
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:444
+
vec< 2, bool, mediump > mediump_bvec2
2 components vector of medium qualifier bool numbers.
+
mat< 3, 3, f32, highp > highp_f32mat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:551
+
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:116
+
mat< 3, 2, float, lowp > lowp_mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:446
+
vec< 4, int8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
+
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:704
+
mat< 2, 2, uint, mediump > mediump_umat2x2
Medium-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1011
+
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:93
+
mat< 2, 2, double, lowp > lowp_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using low precision arith...
+
mat< 4, 4, int, mediump > mediump_imat4x4
Medium-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:812
+
qua< f64, mediump > mediump_f64quat
Medium double-qualifier floating-point quaternion.
Definition: fwd.hpp:1228
+
mat< 3, 4, f32, lowp > lowp_fmat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:637
+
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
+
mat< 3, 4, uint64, defaultp > u64mat3x4
64 bit unsigned integer 3x4 matrix.
+
vec< 4, bool, highp > highp_bvec4
4 components vector of high qualifier bool numbers.
+
vec< 2, float, highp > highp_vec2
2 components vector of high single-qualifier floating-point numbers.
+
mat< 2, 3, uint32, defaultp > u32mat2x3
32 bit unsigned integer 2x3 matrix.
+
mat< 2, 2, f32, lowp > lowp_fmat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:526
+
mat< 3, 3, double, defaultp > dmat3
3 columns of 3 components matrix of double-precision floating-point numbers.
+
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:504
+
mat< 2, 2, f64, lowp > lowp_f64mat2x2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:752
+
vec< 1, u32, lowp > lowp_u32vec1
Low qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:366
+
detail::int64 int64
64 bit signed integer type.
+
mat< 2, 4, int, highp > highp_imat2x4
High-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:816
+
qua< double, mediump > mediump_dquat
Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term ...
+
mat< 3, 2, double, defaultp > dmat3x2
3 columns of 2 components matrix of double-precision floating-point numbers.
+
vec< 2, i64, lowp > lowp_i64vec2
Low qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:285
+
vec< 4, u64, mediump > mediump_u64vec4
Medium qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:394
+
detail::uint16 uint16
16 bit unsigned integer type.
+
mat< 2, 4, uint, highp > highp_umat2x4
High-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1023
+
vec< 1, f64, mediump > mediump_f64vec1
Medium double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:493
+
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
+
vec< 3, i64, mediump > mediump_i64vec3
Medium qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:291
+
mat< 2, 2, f32, mediump > mediump_fmat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:530
+
vec< 1, i32, highp > highp_i32vec1
High qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:274
+
vec< 4, i64, mediump > mediump_i64vec4
Medium qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:292
+
mat< 3, 3, int, mediump > mediump_imat3x3
Medium-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:808
+
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
+
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
+
mat< 3, 4, f32, mediump > mediump_f32mat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:687
+
vec< 1, uint32, defaultp > u32vec1
32 bit unsigned integer vector of 1 component type.
+
mat< 4, 4, double, lowp > lowp_dmat4
4 columns of 4 components matrix of double-precision floating-point numbers using low precision arith...
+
vec< 3, uint64, defaultp > u64vec3
64 bit unsigned integer vector of 3 components type.
+
mat< 4, 3, uint, highp > highp_umat4x3
High-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1028
+
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:790
+
float lowp_f32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:149
+
vec< 3, int16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
+
vec< 2, uint64, defaultp > u64vec2
64 bit unsigned integer vector of 2 components type.
+
mat< 3, 3, int, highp > highp_imat3x3
High-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:818
+
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
+
vec< 3, i32, lowp > lowp_i32vec3
Low qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:266
+
vec< 1, bool, mediump > mediump_bvec1
1 component vector of bool values.
+
mat< 2, 2, float, lowp > lowp_mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers using low precision arith...
+
mat< 4, 3, float, mediump > mediump_mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers using medium precision ar...
+
mat< 4, 4, f32, highp > highp_fmat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:660
+
vec< 2, i8, mediump > mediump_i8vec2
Medium qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:230
+
vec< 4, i32, highp > highp_i32vec4
High qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:277
+
mat< 4, 3, uint, mediump > mediump_umat4x3
Medium-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1018
+
mat< 2, 2, double, mediump > mediump_dmat2x2
2 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 3, uint, defaultp > umat4x3
Unsigned integer 4x3 matrix.
+
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
+
mat< 3, 3, float, highp > highp_mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers using high precision arit...
+
mat< 2, 3, f64, lowp > lowp_f64mat2x3
Low double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:753
+
vec< 3, float, lowp > lowp_vec3
3 components vector of low single-qualifier floating-point numbers.
+
mat< 4, 4, int32, defaultp > i32mat4x4
32 bit signed integer 4x4 matrix.
+
vec< 3, u32, highp > highp_u32vec3
High qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:378
+
vec< 1, uint, highp > highp_uvec1
High qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:316
+
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
+
mat< 2, 4, int16, defaultp > i16mat2x4
16 bit signed integer 2x4 matrix.
+
mat< 3, 3, int8, defaultp > i8mat3x3
8 bit signed integer 3x3 matrix.
+
mat< 4, 2, double, mediump > mediump_dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers using medium precision ar...
+
mat< 4, 2, f64, highp > highp_f64mat4x2
High double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:778
+
vec< 1, float, highp > highp_vec1
1 component vector of single-precision floating-point numbers using high precision arithmetic in term...
+
qua< double, lowp > lowp_dquat
Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs...
+
vec< 4, i16, mediump > mediump_i16vec4
Medium qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:252
+
vec< 3, float, mediump > mediump_fvec3
Medium Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:435
+
mat< 3, 3, f64, lowp > lowp_f64mat3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:575
+
vec< 1, i32, mediump > mediump_i32vec1
Medium qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:269
+
mat< 3, 3, int, defaultp > imat3x3
Signed integer 3x3 matrix.
+
mat< 4, 2, double, defaultp > dmat4x2
4 columns of 2 components matrix of double-precision floating-point numbers.
+
vec< 2, i16, lowp > lowp_i16vec2
Low qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:245
+
mat< 4, 4, f64, mediump > mediump_f64mat4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:580
+
double lowp_f64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:165
+
vec< 3, i8, lowp > lowp_i8vec3
Low qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:226
+
detail::int32 int32
32 bit signed integer type.
+
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
+
mat< 4, 4, double, defaultp > dmat4x4
4 columns of 4 components matrix of double-precision floating-point numbers.
+
vec< 3, uint8, defaultp > u8vec3
8 bit unsigned integer vector of 3 components type.
+
mat< 2, 2, f64, highp > highp_f64mat2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:582
+
vec< 3, float, lowp > lowp_fvec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:430
+
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
+
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:168
+
mat< 3, 2, f64, highp > highp_f64mat3x2
High double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:775
+
vec< 3, f64, lowp > lowp_f64vec3
Low double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:490
+ + + + diff --git a/include/glm/doc/api/a00527.html b/include/glm/doc/api/a00527.html new file mode 100644 index 0000000..64d84f4 --- /dev/null +++ b/include/glm/doc/api/a00527.html @@ -0,0 +1,129 @@ + + + + + + + +1.0.2 API documentation: geometric.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
geometric.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the cross product of x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T distance (vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
 Returns the distance between p0 and p1, i.e., length(p0 - p1). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T dot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the dot product of x and y, i.e., result = x * y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > faceforward (vec< L, T, Q > const &N, vec< L, T, Q > const &I, vec< L, T, Q > const &Nref)
 If dot(Nref, I) < 0.0, return N, otherwise, return -N. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T length (vec< L, T, Q > const &x)
 Returns the length of x, i.e., sqrt(x * x). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > normalize (vec< L, T, Q > const &x)
 Returns a vector in the same direction as x but with length of 1. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > reflect (vec< L, T, Q > const &I, vec< L, T, Q > const &N)
 For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > refract (vec< L, T, Q > const &I, vec< L, T, Q > const &N, T eta)
 For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00527_source.html b/include/glm/doc/api/a00527_source.html new file mode 100644 index 0000000..9b372b1 --- /dev/null +++ b/include/glm/doc/api/a00527_source.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: geometric.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
geometric.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "detail/type_vec3.hpp"
+
16 
+
17 namespace glm
+
18 {
+
21 
+
29  template<length_t L, typename T, qualifier Q>
+
30  GLM_FUNC_DECL T length(vec<L, T, Q> const& x);
+
31 
+
39  template<length_t L, typename T, qualifier Q>
+
40  GLM_FUNC_DECL T distance(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);
+
41 
+
49  template<length_t L, typename T, qualifier Q>
+
50  GLM_FUNC_DECL GLM_CONSTEXPR T dot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
51 
+
58  template<typename T, qualifier Q>
+
59  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> cross(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
+
60 
+
69  template<length_t L, typename T, qualifier Q>
+
70  GLM_FUNC_DECL vec<L, T, Q> normalize(vec<L, T, Q> const& x);
+
71 
+
79  template<length_t L, typename T, qualifier Q>
+
80  GLM_FUNC_DECL vec<L, T, Q> faceforward(
+
81  vec<L, T, Q> const& N,
+
82  vec<L, T, Q> const& I,
+
83  vec<L, T, Q> const& Nref);
+
84 
+
93  template<length_t L, typename T, qualifier Q>
+
94  GLM_FUNC_DECL vec<L, T, Q> reflect(
+
95  vec<L, T, Q> const& I,
+
96  vec<L, T, Q> const& N);
+
97 
+
107  template<length_t L, typename T, qualifier Q>
+
108  GLM_FUNC_DECL vec<L, T, Q> refract(
+
109  vec<L, T, Q> const& I,
+
110  vec<L, T, Q> const& N,
+
111  T eta);
+
112 
+
114 }//namespace glm
+
115 
+
116 #include "detail/func_geometric.inl"
+
+
GLM_FUNC_DECL T length(vec< L, T, Q > const &x)
Returns the length of x, i.e., sqrt(x * x).
+
Core features
+
GLM_FUNC_DECL vec< L, T, Q > normalize(vec< L, T, Q > const &x)
Returns a vector in the same direction as x but with length of 1.
+
GLM_FUNC_DECL T distance(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the distance between p0 and p1, i.e., length(p0 - p1).
+
GLM_FUNC_DECL vec< L, T, Q > refract(vec< L, T, Q > const &I, vec< L, T, Q > const &N, T eta)
For the incident vector I and surface normal N, and the ratio of indices of refraction eta,...
+
GLM_FUNC_DECL vec< L, T, Q > reflect(vec< L, T, Q > const &I, vec< L, T, Q > const &N)
For the incident vector I and surface orientation N, returns the reflection direction : result = I - ...
+
GLM_FUNC_DECL vec< L, T, Q > faceforward(vec< L, T, Q > const &N, vec< L, T, Q > const &I, vec< L, T, Q > const &Nref)
If dot(Nref, I) < 0.0, return N, otherwise, return -N.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
Returns the cross product of x and y.
+
GLM_FUNC_DECL GLM_CONSTEXPR T dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the dot product of x and y, i.e., result = x * y.
+ + + + diff --git a/include/glm/doc/api/a00530_source.html b/include/glm/doc/api/a00530_source.html new file mode 100644 index 0000000..ae40954 --- /dev/null +++ b/include/glm/doc/api/a00530_source.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: glm.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glm.hpp
+
+
+
1 
+
104 #include "detail/_fixes.hpp"
+
105 
+
106 #include "detail/setup.hpp"
+
107 
+
108 #pragma once
+
109 
+
110 #include <cmath>
+
111 #include <climits>
+
112 #include <cfloat>
+
113 #include <limits>
+
114 #include <cassert>
+
115 #include "fwd.hpp"
+
116 
+
117 #include "vec2.hpp"
+
118 #include "vec3.hpp"
+
119 #include "vec4.hpp"
+
120 #include "mat2x2.hpp"
+
121 #include "mat2x3.hpp"
+
122 #include "mat2x4.hpp"
+
123 #include "mat3x2.hpp"
+
124 #include "mat3x3.hpp"
+
125 #include "mat3x4.hpp"
+
126 #include "mat4x2.hpp"
+
127 #include "mat4x3.hpp"
+
128 #include "mat4x4.hpp"
+
129 
+
130 #include "trigonometric.hpp"
+
131 #include "exponential.hpp"
+
132 #include "common.hpp"
+
133 #include "packing.hpp"
+
134 #include "geometric.hpp"
+
135 #include "matrix.hpp"
+
136 #include "vector_relational.hpp"
+
137 #include "integer.hpp"
+
+
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+
GLM_GTX_common
+
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+ +
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00533.html b/include/glm/doc/api/a00533.html new file mode 100644 index 0000000..341d116 --- /dev/null +++ b/include/glm/doc/api/a00533.html @@ -0,0 +1,205 @@ + + + + + + + +1.0.2 API documentation: bitfield.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
bitfield.hpp File Reference
+
+
+ +

GLM_GTC_bitfield +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL glm::u8vec2 bitfieldDeinterleave (glm::uint16 x)
 Deinterleaves the bits of x. More...
 
GLM_FUNC_DECL glm::u16vec2 bitfieldDeinterleave (glm::uint32 x)
 Deinterleaves the bits of x. More...
 
GLM_FUNC_DECL glm::u32vec2 bitfieldDeinterleave (glm::uint64 x)
 Deinterleaves the bits of x. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillOne (genIUType Value, int FirstBit, int BitCount)
 Set to 1 a range of bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillOne (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
 Set to 1 a range of bits. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillZero (genIUType Value, int FirstBit, int BitCount)
 Set to 0 a range of bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillZero (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
 Set to 0 a range of bits. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int16 x, int16 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z, int16 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y, int32 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int16 bitfieldInterleave (int8 x, int8 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z, int8 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (u16vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (u32vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint16 bitfieldInterleave (u8vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint16 x, uint16 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z, uint16 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y, uint32 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint16 bitfieldInterleave (uint8 x, uint8 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z, uint8 w)
 Interleaves the bits of x, y, z and w. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateLeft (genIUType In, int Shift)
 Rotate all bits to the left. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateLeft (vec< L, T, Q > const &In, int Shift)
 Rotate all bits to the left. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateRight (genIUType In, int Shift)
 Rotate all bits to the right. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateRight (vec< L, T, Q > const &In, int Shift)
 Rotate all bits to the right. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mask (genIUType Bits)
 Build a mask of 'count' bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mask (vec< L, T, Q > const &v)
 Build a mask of 'count' bits. More...
 
+

Detailed Description

+

GLM_GTC_bitfield

+
See also
Core features (dependence)
+
+GLM_GTC_bitfield (dependence)
+ +

Definition in file bitfield.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00533_source.html b/include/glm/doc/api/a00533_source.html new file mode 100644 index 0000000..346dc95 --- /dev/null +++ b/include/glm/doc/api/a00533_source.html @@ -0,0 +1,197 @@ + + + + + + + +1.0.2 API documentation: bitfield.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bitfield.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #include "../detail/setup.hpp"
+
15 
+
16 #pragma once
+
17 
+
18 // Dependencies
+
19 #include "../ext/scalar_int_sized.hpp"
+
20 #include "../ext/scalar_uint_sized.hpp"
+
21 #include "../detail/qualifier.hpp"
+
22 #include "../detail/_vectorize.hpp"
+
23 #include "type_precision.hpp"
+
24 #include <limits>
+
25 
+
26 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
27 # pragma message("GLM: GLM_GTC_bitfield extension included")
+
28 #endif
+
29 
+
30 namespace glm
+
31 {
+
34 
+
38  template<typename genIUType>
+
39  GLM_FUNC_DECL genIUType mask(genIUType Bits);
+
40 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL vec<L, T, Q> mask(vec<L, T, Q> const& v);
+
50 
+
54  template<typename genIUType>
+
55  GLM_FUNC_DECL genIUType bitfieldRotateRight(genIUType In, int Shift);
+
56 
+
64  template<length_t L, typename T, qualifier Q>
+
65  GLM_FUNC_DECL vec<L, T, Q> bitfieldRotateRight(vec<L, T, Q> const& In, int Shift);
+
66 
+
70  template<typename genIUType>
+
71  GLM_FUNC_DECL genIUType bitfieldRotateLeft(genIUType In, int Shift);
+
72 
+
80  template<length_t L, typename T, qualifier Q>
+
81  GLM_FUNC_DECL vec<L, T, Q> bitfieldRotateLeft(vec<L, T, Q> const& In, int Shift);
+
82 
+
86  template<typename genIUType>
+
87  GLM_FUNC_DECL genIUType bitfieldFillOne(genIUType Value, int FirstBit, int BitCount);
+
88 
+
96  template<length_t L, typename T, qualifier Q>
+
97  GLM_FUNC_DECL vec<L, T, Q> bitfieldFillOne(vec<L, T, Q> const& Value, int FirstBit, int BitCount);
+
98 
+
102  template<typename genIUType>
+
103  GLM_FUNC_DECL genIUType bitfieldFillZero(genIUType Value, int FirstBit, int BitCount);
+
104 
+
112  template<length_t L, typename T, qualifier Q>
+
113  GLM_FUNC_DECL vec<L, T, Q> bitfieldFillZero(vec<L, T, Q> const& Value, int FirstBit, int BitCount);
+
114 
+
120  GLM_FUNC_DECL int16 bitfieldInterleave(int8 x, int8 y);
+
121 
+
127  GLM_FUNC_DECL uint16 bitfieldInterleave(uint8 x, uint8 y);
+
128 
+
134  GLM_FUNC_DECL uint16 bitfieldInterleave(u8vec2 const& v);
+
135 
+ +
140 
+
146  GLM_FUNC_DECL int32 bitfieldInterleave(int16 x, int16 y);
+
147 
+
153  GLM_FUNC_DECL uint32 bitfieldInterleave(uint16 x, uint16 y);
+
154 
+
160  GLM_FUNC_DECL uint32 bitfieldInterleave(u16vec2 const& v);
+
161 
+ +
166 
+
172  GLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y);
+
173 
+
179  GLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y);
+
180 
+
186  GLM_FUNC_DECL uint64 bitfieldInterleave(u32vec2 const& v);
+
187 
+ +
192 
+
198  GLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z);
+
199 
+
205  GLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z);
+
206 
+
212  GLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z);
+
213 
+
219  GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z);
+
220 
+
226  GLM_FUNC_DECL int64 bitfieldInterleave(int32 x, int32 y, int32 z);
+
227 
+
233  GLM_FUNC_DECL uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z);
+
234 
+
240  GLM_FUNC_DECL int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w);
+
241 
+
247  GLM_FUNC_DECL uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w);
+
248 
+
254  GLM_FUNC_DECL int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w);
+
255 
+
261  GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w);
+
262 
+
264 } //namespace glm
+
265 
+
266 #include "bitfield.inl"
+
+
detail::uint32 uint32
32 bit unsigned integer type.
+
vec< 2, uint16, defaultp > u16vec2
16 bit unsigned integer vector of 2 components type.
+
detail::int16 int16
16 bit signed integer type.
+
GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)
Interleaves the bits of x, y, z and w.
+
detail::uint64 uint64
64 bit unsigned integer type.
+
GLM_GTC_type_precision
+
detail::uint8 uint8
8 bit unsigned integer type.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)
Set to 1 a range of bits.
+
GLM_FUNC_DECL vec< L, T, Q > mask(vec< L, T, Q > const &v)
Build a mask of 'count' bits.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)
Set to 0 a range of bits.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)
Rotate all bits to the right.
+
detail::int8 int8
8 bit signed integer type.
+
vec< 2, uint32, defaultp > u32vec2
32 bit unsigned integer vector of 2 components type.
+
vec< 2, uint8, defaultp > u8vec2
8 bit unsigned integer vector of 2 components type.
+
detail::int64 int64
64 bit signed integer type.
+
detail::uint16 uint16
16 bit unsigned integer type.
+
GLM_FUNC_DECL glm::u32vec2 bitfieldDeinterleave(glm::uint64 x)
Deinterleaves the bits of x.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)
Rotate all bits to the left.
+
detail::int32 int32
32 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00539.html b/include/glm/doc/api/a00539.html new file mode 100644 index 0000000..2f37798 --- /dev/null +++ b/include/glm/doc/api/a00539.html @@ -0,0 +1,209 @@ + + + + + + + +1.0.2 API documentation: constants.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
constants.hpp File Reference
+
+
+ +

GLM_GTC_constants +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType e ()
 Return e constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType euler ()
 Return Euler's constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi ()
 Return 4 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio ()
 Return the golden ratio constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType half_pi ()
 Return pi / 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two ()
 Return ln(ln(2)). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten ()
 Return ln(10). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_two ()
 Return ln(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one ()
 Return 1. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi ()
 Return 1 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two ()
 Return 1 / sqrt(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi ()
 Return 1 / (pi * 2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi ()
 Return pi / 4. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_five ()
 Return sqrt(5). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi ()
 Return sqrt(pi / 2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four ()
 Return sqrt(ln(4)). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_pi ()
 Return square root of pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_three ()
 Return sqrt(3). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two ()
 Return sqrt(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi ()
 Return sqrt(2 * pi). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType tau ()
 Return unit-circle circumference, or pi * 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType third ()
 Return 1 / 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi ()
 Return pi / 2 * 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi ()
 Return 2 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi ()
 Return 2 / sqrt(pi). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_pi ()
 Return pi * 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds ()
 Return 2 / 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType zero ()
 Return 0. More...
 
+

Detailed Description

+

GLM_GTC_constants

+
See also
Core features (dependence)
+ +

Definition in file constants.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00539_source.html b/include/glm/doc/api/a00539_source.html new file mode 100644 index 0000000..4e7acfe --- /dev/null +++ b/include/glm/doc/api/a00539_source.html @@ -0,0 +1,209 @@ + + + + + + + +1.0.2 API documentation: constants.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
constants.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../ext/scalar_constants.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_GTC_constants extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
29  template<typename genType>
+
30  GLM_FUNC_DECL GLM_CONSTEXPR genType zero();
+
31 
+
34  template<typename genType>
+
35  GLM_FUNC_DECL GLM_CONSTEXPR genType one();
+
36 
+
39  template<typename genType>
+
40  GLM_FUNC_DECL GLM_CONSTEXPR genType two_pi();
+
41 
+
44  template<typename genType>
+
45  GLM_FUNC_DECL GLM_CONSTEXPR genType tau();
+
46 
+
49  template<typename genType>
+
50  GLM_FUNC_DECL GLM_CONSTEXPR genType root_pi();
+
51 
+
54  template<typename genType>
+
55  GLM_FUNC_DECL GLM_CONSTEXPR genType half_pi();
+
56 
+
59  template<typename genType>
+
60  GLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi();
+
61 
+
64  template<typename genType>
+
65  GLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi();
+
66 
+
69  template<typename genType>
+
70  GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi();
+
71 
+
74  template<typename genType>
+
75  GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi();
+
76 
+
79  template<typename genType>
+
80  GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi();
+
81 
+
84  template<typename genType>
+
85  GLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi();
+
86 
+
89  template<typename genType>
+
90  GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi();
+
91 
+
94  template<typename genType>
+
95  GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two();
+
96 
+
99  template<typename genType>
+
100  GLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi();
+
101 
+
104  template<typename genType>
+
105  GLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi();
+
106 
+
109  template<typename genType>
+
110  GLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four();
+
111 
+
114  template<typename genType>
+
115  GLM_FUNC_DECL GLM_CONSTEXPR genType e();
+
116 
+
119  template<typename genType>
+
120  GLM_FUNC_DECL GLM_CONSTEXPR genType euler();
+
121 
+
124  template<typename genType>
+
125  GLM_FUNC_DECL GLM_CONSTEXPR genType root_two();
+
126 
+
129  template<typename genType>
+
130  GLM_FUNC_DECL GLM_CONSTEXPR genType root_three();
+
131 
+
134  template<typename genType>
+
135  GLM_FUNC_DECL GLM_CONSTEXPR genType root_five();
+
136 
+
139  template<typename genType>
+
140  GLM_FUNC_DECL GLM_CONSTEXPR genType ln_two();
+
141 
+
144  template<typename genType>
+
145  GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten();
+
146 
+
149  template<typename genType>
+
150  GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two();
+
151 
+
154  template<typename genType>
+
155  GLM_FUNC_DECL GLM_CONSTEXPR genType third();
+
156 
+
159  template<typename genType>
+
160  GLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds();
+
161 
+
164  template<typename genType>
+
165  GLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio();
+
166 
+
168 } //namespace glm
+
169 
+
170 #include "constants.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio()
Return the golden ratio constant.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType two_pi()
Return pi * 2.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two()
Return sqrt(2).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi()
Return 1 / (pi * 2).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi()
Return 1 / pi.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two()
Return ln(ln(2)).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType half_pi()
Return pi / 2.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType third()
Return 1 / 3.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType one()
Return 1.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi()
Return 2 / sqrt(pi).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_three()
Return sqrt(3).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi()
Return sqrt(pi / 2).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi()
Return pi / 2 * 3.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi()
Return pi / 4.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_pi()
Return square root of pi.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_five()
Return sqrt(5).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType e()
Return e constant.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi()
Return sqrt(2 * pi).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType zero()
Return 0.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four()
Return sqrt(ln(4)).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_two()
Return ln(2).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi()
Return 2 / pi.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType euler()
Return Euler's constant.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten()
Return ln(10).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi()
Return 4 / pi.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two()
Return 1 / sqrt(2).
+
GLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds()
Return 2 / 3.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType tau()
Return unit-circle circumference, or pi * 2.
+ + + + diff --git a/include/glm/doc/api/a00542.html b/include/glm/doc/api/a00542.html new file mode 100644 index 0000000..9390508 --- /dev/null +++ b/include/glm/doc/api/a00542.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: epsilon.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
epsilon.hpp File Reference
+
+
+ +

GLM_GTC_epsilon +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool epsilonEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > epsilonEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL bool epsilonNotEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > epsilonNotEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
+

Detailed Description

+

GLM_GTC_epsilon

+
See also
Core features (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file epsilon.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00542_source.html b/include/glm/doc/api/a00542_source.html new file mode 100644 index 0000000..1fbdf58 --- /dev/null +++ b/include/glm/doc/api/a00542_source.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: epsilon.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
epsilon.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 
+
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTC_epsilon extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
33  template<length_t L, typename T, qualifier Q>
+
34  GLM_FUNC_DECL vec<L, bool, Q> epsilonEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon);
+
35 
+
40  template<typename genType>
+
41  GLM_FUNC_DECL bool epsilonEqual(genType const& x, genType const& y, genType const& epsilon);
+
42 
+
47  template<length_t L, typename T, qualifier Q>
+
48  GLM_FUNC_DECL vec<L, bool, Q> epsilonNotEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T const& epsilon);
+
49 
+
54  template<typename genType>
+
55  GLM_FUNC_DECL bool epsilonNotEqual(genType const& x, genType const& y, genType const& epsilon);
+
56 
+
58 }//namespace glm
+
59 
+
60 #include "epsilon.inl"
+
+
GLM_FUNC_DECL bool epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)
Returns the component-wise comparison of |x - y| >= epsilon.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+
GLM_FUNC_DECL bool epsilonEqual(genType const &x, genType const &y, genType const &epsilon)
Returns the component-wise comparison of |x - y| < epsilon.
+ + + + diff --git a/include/glm/doc/api/a00545.html b/include/glm/doc/api/a00545.html new file mode 100644 index 0000000..4c1c1c4 --- /dev/null +++ b/include/glm/doc/api/a00545.html @@ -0,0 +1,149 @@ + + + + + + + +1.0.2 API documentation: integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
integer.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL int bitCount (genType v)
 Returns the number of bits set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > bitCount (vec< L, T, Q > const &v)
 Returns the number of bits set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldExtract (vec< L, T, Q > const &Value, int Offset, int Bits)
 Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldInsert (vec< L, T, Q > const &Base, vec< L, T, Q > const &Insert, int Offset, int Bits)
 Returns the insertion the bits least-significant bits of insert into base. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldReverse (vec< L, T, Q > const &v)
 Returns the reversal of the bits of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL int findLSB (genIUType x)
 Returns the bit number of the least significant bit set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findLSB (vec< L, T, Q > const &v)
 Returns the bit number of the least significant bit set to 1 in the binary representation of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL int findMSB (genIUType x)
 Returns the bit number of the most significant bit in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findMSB (vec< L, T, Q > const &v)
 Returns the bit number of the most significant bit in the binary representation of value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DISCARD_DECL void imulExtended (vec< L, int, Q > const &x, vec< L, int, Q > const &y, vec< L, int, Q > &msb, vec< L, int, Q > &lsb)
 Multiplies 32-bit integers x and y, producing a 64-bit result. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uaddCarry (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &carry)
 Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32). More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DISCARD_DECL void umulExtended (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &msb, vec< L, uint, Q > &lsb)
 Multiplies 32-bit integers x and y, producing a 64-bit result. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > usubBorrow (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &borrow)
 Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00545_source.html b/include/glm/doc/api/a00545_source.html new file mode 100644 index 0000000..8863b12 --- /dev/null +++ b/include/glm/doc/api/a00545_source.html @@ -0,0 +1,166 @@ + + + + + + + +1.0.2 API documentation: integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
integer.hpp
+
+
+Go to the documentation of this file.
1 
+
17 #pragma once
+
18 
+
19 #include "detail/qualifier.hpp"
+
20 #include "common.hpp"
+
21 #include "vector_relational.hpp"
+
22 
+
23 namespace glm
+
24 {
+
27 
+
36  template<length_t L, qualifier Q>
+
37  GLM_FUNC_DECL vec<L, uint, Q> uaddCarry(
+
38  vec<L, uint, Q> const& x,
+
39  vec<L, uint, Q> const& y,
+
40  vec<L, uint, Q> & carry);
+
41 
+
50  template<length_t L, qualifier Q>
+
51  GLM_FUNC_DECL vec<L, uint, Q> usubBorrow(
+
52  vec<L, uint, Q> const& x,
+
53  vec<L, uint, Q> const& y,
+
54  vec<L, uint, Q> & borrow);
+
55 
+
64  template<length_t L, qualifier Q>
+
65  GLM_FUNC_DISCARD_DECL void umulExtended(
+
66  vec<L, uint, Q> const& x,
+
67  vec<L, uint, Q> const& y,
+
68  vec<L, uint, Q> & msb,
+
69  vec<L, uint, Q> & lsb);
+
70 
+
79  template<length_t L, qualifier Q>
+
80  GLM_FUNC_DISCARD_DECL void imulExtended(
+
81  vec<L, int, Q> const& x,
+
82  vec<L, int, Q> const& y,
+
83  vec<L, int, Q> & msb,
+
84  vec<L, int, Q> & lsb);
+
85 
+
102  template<length_t L, typename T, qualifier Q>
+
103  GLM_FUNC_DECL vec<L, T, Q> bitfieldExtract(
+
104  vec<L, T, Q> const& Value,
+
105  int Offset,
+
106  int Bits);
+
107 
+
123  template<length_t L, typename T, qualifier Q>
+
124  GLM_FUNC_DECL vec<L, T, Q> bitfieldInsert(
+
125  vec<L, T, Q> const& Base,
+
126  vec<L, T, Q> const& Insert,
+
127  int Offset,
+
128  int Bits);
+
129 
+
139  template<length_t L, typename T, qualifier Q>
+
140  GLM_FUNC_DECL vec<L, T, Q> bitfieldReverse(vec<L, T, Q> const& v);
+
141 
+
148  template<typename genType>
+
149  GLM_FUNC_DECL int bitCount(genType v);
+
150 
+
158  template<length_t L, typename T, qualifier Q>
+
159  GLM_FUNC_DECL vec<L, int, Q> bitCount(vec<L, T, Q> const& v);
+
160 
+
169  template<typename genIUType>
+
170  GLM_FUNC_DECL int findLSB(genIUType x);
+
171 
+
181  template<length_t L, typename T, qualifier Q>
+
182  GLM_FUNC_DECL vec<L, int, Q> findLSB(vec<L, T, Q> const& v);
+
183 
+
193  template<typename genIUType>
+
194  GLM_FUNC_DECL int findMSB(genIUType x);
+
195 
+
206  template<length_t L, typename T, qualifier Q>
+
207  GLM_FUNC_DECL vec<L, int, Q> findMSB(vec<L, T, Q> const& v);
+
208 
+
210 }//namespace glm
+
211 
+
212 #include "detail/func_integer.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldExtract(vec< L, T, Q > const &Value, int Offset, int Bits)
Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of...
+
GLM_FUNC_DISCARD_DECL void umulExtended(vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &msb, vec< L, uint, Q > &lsb)
Multiplies 32-bit integers x and y, producing a 64-bit result.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldInsert(vec< L, T, Q > const &Base, vec< L, T, Q > const &Insert, int Offset, int Bits)
Returns the insertion the bits least-significant bits of insert into base.
+
GLM_GTX_common
+
GLM_FUNC_DECL vec< L, int, Q > bitCount(vec< L, T, Q > const &v)
Returns the number of bits set to 1 in the binary representation of value.
+
GLM_FUNC_DISCARD_DECL void imulExtended(vec< L, int, Q > const &x, vec< L, int, Q > const &y, vec< L, int, Q > &msb, vec< L, int, Q > &lsb)
Multiplies 32-bit integers x and y, producing a 64-bit result.
+
GLM_FUNC_DECL vec< L, int, Q > findMSB(vec< L, T, Q > const &v)
Returns the bit number of the most significant bit in the binary representation of value.
+
GLM_FUNC_DECL vec< L, T, Q > bitfieldReverse(vec< L, T, Q > const &v)
Returns the reversal of the bits of value.
+
GLM_FUNC_DECL vec< L, int, Q > findLSB(vec< L, T, Q > const &v)
Returns the bit number of the least significant bit set to 1 in the binary representation of value.
+
GLM_FUNC_DECL vec< L, uint, Q > uaddCarry(vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &carry)
Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).
+
GLM_FUNC_DECL vec< L, uint, Q > usubBorrow(vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &borrow)
Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative,...
+ + + + + diff --git a/include/glm/doc/api/a00548.html b/include/glm/doc/api/a00548.html new file mode 100644 index 0000000..d2fa160 --- /dev/null +++ b/include/glm/doc/api/a00548.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: matrix_access.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_access.hpp File Reference
+
+
+ +

GLM_GTC_matrix_access +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::col_type column (genType const &m, length_t index)
 Get a specific column of a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType column (genType const &m, length_t index, typename genType::col_type const &x)
 Set a specific column to a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType::row_type row (genType const &m, length_t index)
 Get a specific row of a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType row (genType const &m, length_t index, typename genType::row_type const &x)
 Set a specific row to a matrix. More...
 
+

Detailed Description

+

GLM_GTC_matrix_access

+
See also
Core features (dependence)
+ +

Definition in file matrix_access.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00548_source.html b/include/glm/doc/api/a00548_source.html new file mode 100644 index 0000000..fce056f --- /dev/null +++ b/include/glm/doc/api/a00548_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_access.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_access.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../detail/setup.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_GTC_matrix_access extension included")
+
20 #endif
+
21 
+
22 namespace glm
+
23 {
+
26 
+
29  template<typename genType>
+
30  GLM_FUNC_DECL typename genType::row_type row(
+
31  genType const& m,
+
32  length_t index);
+
33 
+
36  template<typename genType>
+
37  GLM_FUNC_DECL genType row(
+
38  genType const& m,
+
39  length_t index,
+
40  typename genType::row_type const& x);
+
41 
+
44  template<typename genType>
+
45  GLM_FUNC_DECL typename genType::col_type column(
+
46  genType const& m,
+
47  length_t index);
+
48 
+
51  template<typename genType>
+
52  GLM_FUNC_DECL genType column(
+
53  genType const& m,
+
54  length_t index,
+
55  typename genType::col_type const& x);
+
56 
+
58 }//namespace glm
+
59 
+
60 #include "matrix_access.inl"
+
+
GLM_FUNC_DECL genType column(genType const &m, length_t index, typename genType::col_type const &x)
Set a specific column to a matrix.
+
GLM_FUNC_DECL genType row(genType const &m, length_t index, typename genType::row_type const &x)
Set a specific row to a matrix.
+ + + + diff --git a/include/glm/doc/api/a00551.html b/include/glm/doc/api/a00551.html new file mode 100644 index 0000000..4b62681 --- /dev/null +++ b/include/glm/doc/api/a00551.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: matrix_inverse.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_inverse.hpp File Reference
+
+
+ +

GLM_GTC_matrix_inverse +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType affineInverse (genType const &m)
 Fast matrix inverse for affine matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType inverseTranspose (genType const &m)
 Compute the inverse transpose of a matrix. More...
 
+

Detailed Description

+

GLM_GTC_matrix_inverse

+
See also
Core features (dependence)
+ +

Definition in file matrix_inverse.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00551_source.html b/include/glm/doc/api/a00551_source.html new file mode 100644 index 0000000..fe211cc --- /dev/null +++ b/include/glm/doc/api/a00551_source.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_inverse.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_inverse.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../detail/setup.hpp"
+
17 #include "../matrix.hpp"
+
18 #include "../mat2x2.hpp"
+
19 #include "../mat3x3.hpp"
+
20 #include "../mat4x4.hpp"
+
21 
+
22 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTC_matrix_inverse extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
36  template<typename genType>
+
37  GLM_FUNC_DECL genType affineInverse(genType const& m);
+
38 
+
44  template<typename genType>
+
45  GLM_FUNC_DECL genType inverseTranspose(genType const& m);
+
46 
+
48 }//namespace glm
+
49 
+
50 #include "matrix_inverse.inl"
+
+
GLM_FUNC_DECL genType inverseTranspose(genType const &m)
Compute the inverse transpose of a matrix.
+
GLM_FUNC_DECL genType affineInverse(genType const &m)
Fast matrix inverse for affine matrix.
+ + + + diff --git a/include/glm/doc/api/a00554.html b/include/glm/doc/api/a00554.html new file mode 100644 index 0000000..0eecfe0 --- /dev/null +++ b/include/glm/doc/api/a00554.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: noise.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
noise.hpp File Reference
+
+
+ +

GLM_GTC_noise +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T perlin (vec< L, T, Q > const &p)
 Classic perlin noise. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T perlin (vec< L, T, Q > const &p, vec< L, T, Q > const &rep)
 Periodic perlin noise. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T simplex (vec< L, T, Q > const &p)
 Simplex noise. More...
 
+

Detailed Description

+

GLM_GTC_noise

+
See also
Core features (dependence)
+ +

Definition in file noise.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00554_source.html b/include/glm/doc/api/a00554_source.html new file mode 100644 index 0000000..b660c8a --- /dev/null +++ b/include/glm/doc/api/a00554_source.html @@ -0,0 +1,120 @@ + + + + + + + +1.0.2 API documentation: noise.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
noise.hpp
+
+
+Go to the documentation of this file.
1 
+
17 #pragma once
+
18 
+
19 // Dependencies
+
20 #include "../detail/setup.hpp"
+
21 #include "../detail/qualifier.hpp"
+
22 #include "../detail/_noise.hpp"
+
23 #include "../geometric.hpp"
+
24 #include "../common.hpp"
+
25 #include "../vector_relational.hpp"
+
26 #include "../vec2.hpp"
+
27 #include "../vec3.hpp"
+
28 #include "../vec4.hpp"
+
29 
+
30 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
31 # pragma message("GLM: GLM_GTC_noise extension included")
+
32 #endif
+
33 
+
34 namespace glm
+
35 {
+
38 
+
41  template<length_t L, typename T, qualifier Q>
+
42  GLM_FUNC_DECL T perlin(
+
43  vec<L, T, Q> const& p);
+
44 
+
47  template<length_t L, typename T, qualifier Q>
+
48  GLM_FUNC_DECL T perlin(
+
49  vec<L, T, Q> const& p,
+
50  vec<L, T, Q> const& rep);
+
51 
+
54  template<length_t L, typename T, qualifier Q>
+
55  GLM_FUNC_DECL T simplex(
+
56  vec<L, T, Q> const& p);
+
57 
+
59 }//namespace glm
+
60 
+
61 #include "noise.inl"
+
+
GLM_FUNC_DECL T perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)
Periodic perlin noise.
+
GLM_FUNC_DECL T simplex(vec< L, T, Q > const &p)
Simplex noise.
+ + + + diff --git a/include/glm/doc/api/a00557.html b/include/glm/doc/api/a00557.html new file mode 100644 index 0000000..4f37cf5 --- /dev/null +++ b/include/glm/doc/api/a00557.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: packing.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
packing.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL double packDouble2x32 (uvec2 const &v)
 Returns a double-qualifier value obtained by packing the components of v into a 64-bit value. More...
 
GLM_FUNC_DECL uint packHalf2x16 (vec2 const &v)
 Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packSnorm2x16 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packSnorm4x8 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packUnorm2x16 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packUnorm4x8 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uvec2 unpackDouble2x32 (double v)
 Returns a two-component unsigned integer vector representation of v. More...
 
GLM_FUNC_DECL vec2 unpackHalf2x16 (uint v)
 Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x16 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x8 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x16 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x8 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00557_source.html b/include/glm/doc/api/a00557_source.html new file mode 100644 index 0000000..fc0f17c --- /dev/null +++ b/include/glm/doc/api/a00557_source.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: packing.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
packing.hpp
+
+
+Go to the documentation of this file.
1 
+
16 #pragma once
+
17 
+
18 #include "./ext/vector_uint2.hpp"
+
19 #include "./ext/vector_float2.hpp"
+
20 #include "./ext/vector_float4.hpp"
+
21 
+
22 namespace glm
+
23 {
+
26 
+
38  GLM_FUNC_DECL uint packUnorm2x16(vec2 const& v);
+
39 
+
51  GLM_FUNC_DECL uint packSnorm2x16(vec2 const& v);
+
52 
+
64  GLM_FUNC_DECL uint packUnorm4x8(vec4 const& v);
+
65 
+
77  GLM_FUNC_DECL uint packSnorm4x8(vec4 const& v);
+
78 
+
90  GLM_FUNC_DECL vec2 unpackUnorm2x16(uint p);
+
91 
+
103  GLM_FUNC_DECL vec2 unpackSnorm2x16(uint p);
+
104 
+
116  GLM_FUNC_DECL vec4 unpackUnorm4x8(uint p);
+
117 
+
129  GLM_FUNC_DECL vec4 unpackSnorm4x8(uint p);
+
130 
+
139  GLM_FUNC_DECL double packDouble2x32(uvec2 const& v);
+
140 
+
148  GLM_FUNC_DECL uvec2 unpackDouble2x32(double v);
+
149 
+
158  GLM_FUNC_DECL uint packHalf2x16(vec2 const& v);
+
159 
+
168  GLM_FUNC_DECL vec2 unpackHalf2x16(uint v);
+
169 
+
171 }//namespace glm
+
172 
+
173 #include "detail/func_packing.inl"
+
+
GLM_FUNC_DECL vec4 unpackUnorm4x8(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers,...
+
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
+
GLM_FUNC_DECL uvec2 unpackDouble2x32(double v)
Returns a two-component unsigned integer vector representation of v.
+
Core features
+
GLM_FUNC_DECL uint packSnorm4x8(vec4 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
GLM_FUNC_DECL uint packUnorm4x8(vec4 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+
GLM_FUNC_DECL vec2 unpackUnorm2x16(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers,...
+
GLM_FUNC_DECL vec2 unpackSnorm2x16(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers,...
+
GLM_FUNC_DECL uint packSnorm2x16(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
GLM_FUNC_DECL uint packUnorm2x16(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8- or 16-bit integer val...
+
Core features
+
GLM_FUNC_DECL double packDouble2x32(uvec2 const &v)
Returns a double-qualifier value obtained by packing the components of v into a 64-bit value.
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+
GLM_FUNC_DECL uint packHalf2x16(vec2 const &v)
Returns an unsigned integer obtained by converting the components of a two-component floating-point v...
+
Core features
+
GLM_FUNC_DECL vec2 unpackHalf2x16(uint v)
Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned...
+
GLM_FUNC_DECL vec4 unpackSnorm4x8(uint p)
First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers,...
+ + + + diff --git a/include/glm/doc/api/a00563.html b/include/glm/doc/api/a00563.html new file mode 100644 index 0000000..56d693f --- /dev/null +++ b/include/glm/doc/api/a00563.html @@ -0,0 +1,127 @@ + + + + + + + +1.0.2 API documentation: random.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
random.hpp File Reference
+
+
+ +

GLM_GTC_random +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > ballRand (T Radius)
 Generate a random 3D vector which coordinates are regularly distributed within the volume of a ball of a given radius. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > circularRand (T Radius)
 Generate a random 2D vector which coordinates are regularly distributed on a circle of a given radius. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > diskRand (T Radius)
 Generate a random 2D vector which coordinates are regularly distributed within the area of a disk of a given radius. More...
 
template<typename genType >
GLM_FUNC_DECL genType gaussRand (genType Mean, genType Deviation)
 Generate random numbers in the interval [Min, Max], according a gaussian distribution. More...
 
template<typename genType >
GLM_FUNC_DECL genType linearRand (genType Min, genType Max)
 Generate random numbers in the interval [Min, Max], according a linear distribution. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > linearRand (vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Generate random numbers in the interval [Min, Max], according a linear distribution. More...
 
template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > sphericalRand (T Radius)
 Generate a random 3D vector which coordinates are regularly distributed on a sphere of a given radius. More...
 
+

Detailed Description

+

GLM_GTC_random

+
See also
Core features (dependence)
+
+gtx_random (extended)
+ +

Definition in file random.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00563_source.html b/include/glm/doc/api/a00563_source.html new file mode 100644 index 0000000..6105633 --- /dev/null +++ b/include/glm/doc/api/a00563_source.html @@ -0,0 +1,126 @@ + + + + + + + +1.0.2 API documentation: random.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
random.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../ext/scalar_int_sized.hpp"
+
18 #include "../ext/scalar_uint_sized.hpp"
+
19 #include "../detail/qualifier.hpp"
+
20 
+
21 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTC_random extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
36  template<typename genType>
+
37  GLM_FUNC_DECL genType linearRand(genType Min, genType Max);
+
38 
+
46  template<length_t L, typename T, qualifier Q>
+
47  GLM_FUNC_DECL vec<L, T, Q> linearRand(vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);
+
48 
+
52  template<typename genType>
+
53  GLM_FUNC_DECL genType gaussRand(genType Mean, genType Deviation);
+
54 
+
58  template<typename T>
+
59  GLM_FUNC_DECL vec<2, T, defaultp> circularRand(T Radius);
+
60 
+
64  template<typename T>
+
65  GLM_FUNC_DECL vec<3, T, defaultp> sphericalRand(T Radius);
+
66 
+
70  template<typename T>
+
71  GLM_FUNC_DECL vec<2, T, defaultp> diskRand(T Radius);
+
72 
+
76  template<typename T>
+
77  GLM_FUNC_DECL vec<3, T, defaultp> ballRand(T Radius);
+
78 
+
80 }//namespace glm
+
81 
+
82 #include "random.inl"
+
+
GLM_FUNC_DECL vec< 2, T, defaultp > diskRand(T Radius)
Generate a random 2D vector which coordinates are regularly distributed within the area of a disk of ...
+
GLM_FUNC_DECL vec< 2, T, defaultp > circularRand(T Radius)
Generate a random 2D vector which coordinates are regularly distributed on a circle of a given radius...
+
GLM_FUNC_DECL vec< 3, T, defaultp > sphericalRand(T Radius)
Generate a random 3D vector which coordinates are regularly distributed on a sphere of a given radius...
+
GLM_FUNC_DECL genType gaussRand(genType Mean, genType Deviation)
Generate random numbers in the interval [Min, Max], according a gaussian distribution.
+
GLM_FUNC_DECL vec< L, T, Q > linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
Generate random numbers in the interval [Min, Max], according a linear distribution.
+
GLM_FUNC_DECL vec< 3, T, defaultp > ballRand(T Radius)
Generate a random 3D vector which coordinates are regularly distributed within the volume of a ball o...
+ + + + diff --git a/include/glm/doc/api/a00566.html b/include/glm/doc/api/a00566.html new file mode 100644 index 0000000..40b93b0 --- /dev/null +++ b/include/glm/doc/api/a00566.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: reciprocal.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
reciprocal.hpp File Reference
+
+
+ +

GLM_GTC_reciprocal +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTC_reciprocal

+
See also
Core features (dependence)
+ +

Definition in file reciprocal.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00566_source.html b/include/glm/doc/api/a00566_source.html new file mode 100644 index 0000000..e98920d --- /dev/null +++ b/include/glm/doc/api/a00566_source.html @@ -0,0 +1,94 @@ + + + + + + + +1.0.2 API documentation: reciprocal.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
reciprocal.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../detail/setup.hpp"
+
17 
+
18 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
19 # pragma message("GLM: GLM_GTC_reciprocal extension included")
+
20 #endif
+
21 
+
22 #include "../ext/scalar_reciprocal.hpp"
+
23 #include "../ext/vector_reciprocal.hpp"
+
24 
+
+ + + + diff --git a/include/glm/doc/api/a00569.html b/include/glm/doc/api/a00569.html new file mode 100644 index 0000000..0fc3558 --- /dev/null +++ b/include/glm/doc/api/a00569.html @@ -0,0 +1,147 @@ + + + + + + + +1.0.2 API documentation: round.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
round.hpp File Reference
+
+
+ +

GLM_GTC_round +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType ceilMultiple (genType v, genType Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceilMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Higher multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType ceilPowerOfTwo (genIUType v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceilPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<typename genType >
GLM_FUNC_DECL genType floorMultiple (genType v, genType Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floorMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType floorPowerOfTwo (genIUType v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floorPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
template<typename genType >
GLM_FUNC_DECL genType roundMultiple (genType v, genType Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType roundPowerOfTwo (genIUType v)
 Return the power of two number which value is the closet to the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is the closet to the input value. More...
 
+

Detailed Description

+

GLM_GTC_round

+
See also
Core features (dependence)
+
+GLM_GTC_round (dependence)
+ +

Definition in file round.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00569_source.html b/include/glm/doc/api/a00569_source.html new file mode 100644 index 0000000..c170591 --- /dev/null +++ b/include/glm/doc/api/a00569_source.html @@ -0,0 +1,144 @@ + + + + + + + +1.0.2 API documentation: round.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
round.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 #include "../detail/_vectorize.hpp"
+
20 #include "../vector_relational.hpp"
+
21 #include "../common.hpp"
+
22 #include <limits>
+
23 
+
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTC_round extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
37  template<typename genIUType>
+
38  GLM_FUNC_DECL genIUType ceilPowerOfTwo(genIUType v);
+
39 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL vec<L, T, Q> ceilPowerOfTwo(vec<L, T, Q> const& v);
+
50 
+
55  template<typename genIUType>
+
56  GLM_FUNC_DECL genIUType floorPowerOfTwo(genIUType v);
+
57 
+
66  template<length_t L, typename T, qualifier Q>
+
67  GLM_FUNC_DECL vec<L, T, Q> floorPowerOfTwo(vec<L, T, Q> const& v);
+
68 
+
72  template<typename genIUType>
+
73  GLM_FUNC_DECL genIUType roundPowerOfTwo(genIUType v);
+
74 
+
82  template<length_t L, typename T, qualifier Q>
+
83  GLM_FUNC_DECL vec<L, T, Q> roundPowerOfTwo(vec<L, T, Q> const& v);
+
84 
+
93  template<typename genType>
+
94  GLM_FUNC_DECL genType ceilMultiple(genType v, genType Multiple);
+
95 
+
106  template<length_t L, typename T, qualifier Q>
+
107  GLM_FUNC_DECL vec<L, T, Q> ceilMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
108 
+
117  template<typename genType>
+
118  GLM_FUNC_DECL genType floorMultiple(genType v, genType Multiple);
+
119 
+
130  template<length_t L, typename T, qualifier Q>
+
131  GLM_FUNC_DECL vec<L, T, Q> floorMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
132 
+
141  template<typename genType>
+
142  GLM_FUNC_DECL genType roundMultiple(genType v, genType Multiple);
+
143 
+
154  template<length_t L, typename T, qualifier Q>
+
155  GLM_FUNC_DECL vec<L, T, Q> roundMultiple(vec<L, T, Q> const& v, vec<L, T, Q> const& Multiple);
+
156 
+
158 } //namespace glm
+
159 
+
160 #include "round.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > floorPowerOfTwo(vec< L, T, Q > const &v)
Return the power of two number which value is just lower the input value, round down to a power of tw...
+
GLM_FUNC_DECL vec< L, T, Q > ceilPowerOfTwo(vec< L, T, Q > const &v)
Return the power of two number which value is just higher the input value, round up to a power of two...
+
GLM_FUNC_DECL vec< L, T, Q > roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Lower multiple number of Source.
+
GLM_FUNC_DECL vec< L, T, Q > floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Lower multiple number of Source.
+
GLM_FUNC_DECL vec< L, T, Q > ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
Higher multiple number of Source.
+
GLM_FUNC_DECL vec< L, T, Q > roundPowerOfTwo(vec< L, T, Q > const &v)
Return the power of two number which value is the closet to the input value.
+ + + + diff --git a/include/glm/doc/api/a00575.html b/include/glm/doc/api/a00575.html new file mode 100644 index 0000000..d624a29 --- /dev/null +++ b/include/glm/doc/api/a00575.html @@ -0,0 +1,93 @@ + + + + + + + +1.0.2 API documentation: type_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_precision.hpp File Reference
+
+
+ +

GLM_GTC_type_precision +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTC_type_precision

+
See also
Core features (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file type_precision.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00575_source.html b/include/glm/doc/api/a00575_source.html new file mode 100644 index 0000000..cb039e0 --- /dev/null +++ b/include/glm/doc/api/a00575_source.html @@ -0,0 +1,1625 @@ + + + + + + + +1.0.2 API documentation: type_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../gtc/quaternion.hpp"
+
18 #include "../gtc/vec1.hpp"
+
19 #include "../ext/vector_int1_sized.hpp"
+
20 #include "../ext/vector_int2_sized.hpp"
+
21 #include "../ext/vector_int3_sized.hpp"
+
22 #include "../ext/vector_int4_sized.hpp"
+
23 #include "../ext/scalar_int_sized.hpp"
+
24 #include "../ext/vector_uint1_sized.hpp"
+
25 #include "../ext/vector_uint2_sized.hpp"
+
26 #include "../ext/vector_uint3_sized.hpp"
+
27 #include "../ext/vector_uint4_sized.hpp"
+
28 #include "../ext/scalar_uint_sized.hpp"
+
29 #include "../detail/type_vec2.hpp"
+
30 #include "../detail/type_vec3.hpp"
+
31 #include "../detail/type_vec4.hpp"
+
32 #include "../detail/type_mat2x2.hpp"
+
33 #include "../detail/type_mat2x3.hpp"
+
34 #include "../detail/type_mat2x4.hpp"
+
35 #include "../detail/type_mat3x2.hpp"
+
36 #include "../detail/type_mat3x3.hpp"
+
37 #include "../detail/type_mat3x4.hpp"
+
38 #include "../detail/type_mat4x2.hpp"
+
39 #include "../detail/type_mat4x3.hpp"
+
40 #include "../detail/type_mat4x4.hpp"
+
41 
+
42 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
43 # pragma message("GLM: GLM_GTC_type_precision extension included")
+
44 #endif
+
45 
+
46 namespace glm
+
47 {
+
49  // Signed int vector types
+
50 
+
53 
+
56  typedef detail::int8 lowp_int8;
+
57 
+
60  typedef detail::int16 lowp_int16;
+
61 
+
64  typedef detail::int32 lowp_int32;
+
65 
+
68  typedef detail::int64 lowp_int64;
+
69 
+
72  typedef detail::int8 lowp_int8_t;
+
73 
+
76  typedef detail::int16 lowp_int16_t;
+
77 
+
80  typedef detail::int32 lowp_int32_t;
+
81 
+ +
85 
+
88  typedef detail::int8 lowp_i8;
+
89 
+
92  typedef detail::int16 lowp_i16;
+
93 
+
96  typedef detail::int32 lowp_i32;
+
97 
+
100  typedef detail::int64 lowp_i64;
+
101 
+
104  typedef detail::int8 mediump_int8;
+
105 
+
108  typedef detail::int16 mediump_int16;
+
109 
+
112  typedef detail::int32 mediump_int32;
+
113 
+ +
117 
+
120  typedef detail::int8 mediump_int8_t;
+
121 
+
124  typedef detail::int16 mediump_int16_t;
+
125 
+
128  typedef detail::int32 mediump_int32_t;
+
129 
+ +
133 
+
136  typedef detail::int8 mediump_i8;
+
137 
+
140  typedef detail::int16 mediump_i16;
+
141 
+
144  typedef detail::int32 mediump_i32;
+
145 
+
148  typedef detail::int64 mediump_i64;
+
149 
+
152  typedef detail::int8 highp_int8;
+
153 
+
156  typedef detail::int16 highp_int16;
+
157 
+
160  typedef detail::int32 highp_int32;
+
161 
+
164  typedef detail::int64 highp_int64;
+
165 
+
168  typedef detail::int8 highp_int8_t;
+
169 
+
172  typedef detail::int16 highp_int16_t;
+
173 
+
176  typedef detail::int32 highp_int32_t;
+
177 
+ +
181 
+
184  typedef detail::int8 highp_i8;
+
185 
+
188  typedef detail::int16 highp_i16;
+
189 
+
192  typedef detail::int32 highp_i32;
+
193 
+
196  typedef detail::int64 highp_i64;
+
197 
+
198 
+
199 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
200  using std::int8_t;
+
201  using std::int16_t;
+
202  using std::int32_t;
+
203  using std::int64_t;
+
204 #else
+
205  typedef detail::int8 int8_t;
+
208 
+
211  typedef detail::int16 int16_t;
+
212 
+
215  typedef detail::int32 int32_t;
+
216 
+
219  typedef detail::int64 int64_t;
+
220 #endif
+
221 
+
224  typedef detail::int8 i8;
+
225 
+
228  typedef detail::int16 i16;
+
229 
+
232  typedef detail::int32 i32;
+
233 
+
236  typedef detail::int64 i64;
+
237 
+
239  // Unsigned int vector types
+
240 
+
243  typedef detail::uint8 lowp_uint8;
+
244 
+
247  typedef detail::uint16 lowp_uint16;
+
248 
+
251  typedef detail::uint32 lowp_uint32;
+
252 
+
255  typedef detail::uint64 lowp_uint64;
+
256 
+
259  typedef detail::uint8 lowp_uint8_t;
+
260 
+
263  typedef detail::uint16 lowp_uint16_t;
+
264 
+
267  typedef detail::uint32 lowp_uint32_t;
+
268 
+ +
272 
+
275  typedef detail::uint8 lowp_u8;
+
276 
+
279  typedef detail::uint16 lowp_u16;
+
280 
+
283  typedef detail::uint32 lowp_u32;
+
284 
+
287  typedef detail::uint64 lowp_u64;
+
288 
+
291  typedef detail::uint8 mediump_uint8;
+
292 
+
295  typedef detail::uint16 mediump_uint16;
+
296 
+
299  typedef detail::uint32 mediump_uint32;
+
300 
+ +
304 
+
307  typedef detail::uint8 mediump_uint8_t;
+
308 
+
311  typedef detail::uint16 mediump_uint16_t;
+
312 
+
315  typedef detail::uint32 mediump_uint32_t;
+
316 
+ +
320 
+
323  typedef detail::uint8 mediump_u8;
+
324 
+
327  typedef detail::uint16 mediump_u16;
+
328 
+
331  typedef detail::uint32 mediump_u32;
+
332 
+
335  typedef detail::uint64 mediump_u64;
+
336 
+
339  typedef detail::uint8 highp_uint8;
+
340 
+
343  typedef detail::uint16 highp_uint16;
+
344 
+
347  typedef detail::uint32 highp_uint32;
+
348 
+ +
352 
+
355  typedef detail::uint8 highp_uint8_t;
+
356 
+
359  typedef detail::uint16 highp_uint16_t;
+
360 
+
363  typedef detail::uint32 highp_uint32_t;
+
364 
+ +
368 
+
371  typedef detail::uint8 highp_u8;
+
372 
+
375  typedef detail::uint16 highp_u16;
+
376 
+
379  typedef detail::uint32 highp_u32;
+
380 
+
383  typedef detail::uint64 highp_u64;
+
384 
+
385 #if GLM_HAS_EXTENDED_INTEGER_TYPE
+
386  using std::uint8_t;
+
387  using std::uint16_t;
+
388  using std::uint32_t;
+
389  using std::uint64_t;
+
390 #else
+
391  typedef detail::uint8 uint8_t;
+
394 
+
397  typedef detail::uint16 uint16_t;
+
398 
+
401  typedef detail::uint32 uint32_t;
+
402 
+
405  typedef detail::uint64 uint64_t;
+
406 #endif
+
407 
+
410  typedef detail::uint8 u8;
+
411 
+
414  typedef detail::uint16 u16;
+
415 
+
418  typedef detail::uint32 u32;
+
419 
+
422  typedef detail::uint64 u64;
+
423 
+
424 
+
425 
+
426 
+
427 
+
429  // Float vector types
+
430 
+
433  typedef float float32;
+
434 
+
437  typedef double float64;
+
438 
+
441  typedef float32 lowp_float32;
+
442 
+
445  typedef float64 lowp_float64;
+
446 
+
449  typedef float32 lowp_float32_t;
+
450 
+
453  typedef float64 lowp_float64_t;
+
454 
+
457  typedef float32 lowp_f32;
+
458 
+
461  typedef float64 lowp_f64;
+
462 
+
465  typedef float32 lowp_float32;
+
466 
+
469  typedef float64 lowp_float64;
+
470 
+
473  typedef float32 lowp_float32_t;
+
474 
+
477  typedef float64 lowp_float64_t;
+
478 
+
481  typedef float32 lowp_f32;
+
482 
+
485  typedef float64 lowp_f64;
+
486 
+
487 
+
490  typedef float32 lowp_float32;
+
491 
+
494  typedef float64 lowp_float64;
+
495 
+
498  typedef float32 lowp_float32_t;
+
499 
+
502  typedef float64 lowp_float64_t;
+
503 
+
506  typedef float32 lowp_f32;
+
507 
+
510  typedef float64 lowp_f64;
+
511 
+
512 
+
515  typedef float32 mediump_float32;
+
516 
+
519  typedef float64 mediump_float64;
+
520 
+
523  typedef float32 mediump_float32_t;
+
524 
+
527  typedef float64 mediump_float64_t;
+
528 
+
531  typedef float32 mediump_f32;
+
532 
+
535  typedef float64 mediump_f64;
+
536 
+
537 
+
540  typedef float32 highp_float32;
+
541 
+
544  typedef float64 highp_float64;
+
545 
+
548  typedef float32 highp_float32_t;
+
549 
+
552  typedef float64 highp_float64_t;
+
553 
+
556  typedef float32 highp_f32;
+
557 
+
560  typedef float64 highp_f64;
+
561 
+
562 
+
563 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+
564  typedef lowp_float32_t float32_t;
+
567 
+
570  typedef lowp_float64_t float64_t;
+
571 
+
574  typedef lowp_f32 f32;
+
575 
+
578  typedef lowp_f64 f64;
+
579 
+
580 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+
581  typedef mediump_float32 float32_t;
+
584 
+
587  typedef mediump_float64 float64_t;
+
588 
+
591  typedef mediump_float32 f32;
+
592 
+
595  typedef mediump_float64 f64;
+
596 
+
597 #else//(defined(GLM_PRECISION_HIGHP_FLOAT))
+
598 
+
601  typedef highp_float32_t float32_t;
+
602 
+
605  typedef highp_float64_t float64_t;
+
606 
+
609  typedef highp_float32_t f32;
+
610 
+
613  typedef highp_float64_t f64;
+
614 #endif
+
615 
+
616 
+
619  typedef vec<1, float, lowp> lowp_fvec1;
+
620 
+
623  typedef vec<2, float, lowp> lowp_fvec2;
+
624 
+
627  typedef vec<3, float, lowp> lowp_fvec3;
+
628 
+
631  typedef vec<4, float, lowp> lowp_fvec4;
+
632 
+
633 
+
636  typedef vec<1, float, mediump> mediump_fvec1;
+
637 
+
640  typedef vec<2, float, mediump> mediump_fvec2;
+
641 
+
644  typedef vec<3, float, mediump> mediump_fvec3;
+
645 
+
648  typedef vec<4, float, mediump> mediump_fvec4;
+
649 
+
650 
+
653  typedef vec<1, float, highp> highp_fvec1;
+
654 
+
657  typedef vec<2, float, highp> highp_fvec2;
+
658 
+
661  typedef vec<3, float, highp> highp_fvec3;
+
662 
+
665  typedef vec<4, float, highp> highp_fvec4;
+
666 
+
667 
+
670  typedef vec<1, f32, lowp> lowp_f32vec1;
+
671 
+
674  typedef vec<2, f32, lowp> lowp_f32vec2;
+
675 
+
678  typedef vec<3, f32, lowp> lowp_f32vec3;
+
679 
+
682  typedef vec<4, f32, lowp> lowp_f32vec4;
+
683 
+
686  typedef vec<1, f32, mediump> mediump_f32vec1;
+
687 
+
690  typedef vec<2, f32, mediump> mediump_f32vec2;
+
691 
+
694  typedef vec<3, f32, mediump> mediump_f32vec3;
+
695 
+
698  typedef vec<4, f32, mediump> mediump_f32vec4;
+
699 
+
702  typedef vec<1, f32, highp> highp_f32vec1;
+
703 
+
706  typedef vec<2, f32, highp> highp_f32vec2;
+
707 
+
710  typedef vec<3, f32, highp> highp_f32vec3;
+
711 
+
714  typedef vec<4, f32, highp> highp_f32vec4;
+
715 
+
716 
+
719  typedef vec<1, f64, lowp> lowp_f64vec1;
+
720 
+
723  typedef vec<2, f64, lowp> lowp_f64vec2;
+
724 
+
727  typedef vec<3, f64, lowp> lowp_f64vec3;
+
728 
+
731  typedef vec<4, f64, lowp> lowp_f64vec4;
+
732 
+
735  typedef vec<1, f64, mediump> mediump_f64vec1;
+
736 
+
739  typedef vec<2, f64, mediump> mediump_f64vec2;
+
740 
+
743  typedef vec<3, f64, mediump> mediump_f64vec3;
+
744 
+
747  typedef vec<4, f64, mediump> mediump_f64vec4;
+
748 
+
751  typedef vec<1, f64, highp> highp_f64vec1;
+
752 
+
755  typedef vec<2, f64, highp> highp_f64vec2;
+
756 
+
759  typedef vec<3, f64, highp> highp_f64vec3;
+
760 
+
763  typedef vec<4, f64, highp> highp_f64vec4;
+
764 
+
765 
+
766 
+
768  // Float matrix types
+
769 
+
772  //typedef lowp_f32 lowp_fmat1x1;
+
773 
+
776  typedef mat<2, 2, f32, lowp> lowp_fmat2x2;
+
777 
+
780  typedef mat<2, 3, f32, lowp> lowp_fmat2x3;
+
781 
+
784  typedef mat<2, 4, f32, lowp> lowp_fmat2x4;
+
785 
+
788  typedef mat<3, 2, f32, lowp> lowp_fmat3x2;
+
789 
+
792  typedef mat<3, 3, f32, lowp> lowp_fmat3x3;
+
793 
+
796  typedef mat<3, 4, f32, lowp> lowp_fmat3x4;
+
797 
+
800  typedef mat<4, 2, f32, lowp> lowp_fmat4x2;
+
801 
+
804  typedef mat<4, 3, f32, lowp> lowp_fmat4x3;
+
805 
+
808  typedef mat<4, 4, f32, lowp> lowp_fmat4x4;
+
809 
+
812  //typedef lowp_fmat1x1 lowp_fmat1;
+
813 
+
816  typedef lowp_fmat2x2 lowp_fmat2;
+
817 
+
820  typedef lowp_fmat3x3 lowp_fmat3;
+
821 
+
824  typedef lowp_fmat4x4 lowp_fmat4;
+
825 
+
826 
+
829  //typedef mediump_f32 mediump_fmat1x1;
+
830 
+
833  typedef mat<2, 2, f32, mediump> mediump_fmat2x2;
+
834 
+
837  typedef mat<2, 3, f32, mediump> mediump_fmat2x3;
+
838 
+
841  typedef mat<2, 4, f32, mediump> mediump_fmat2x4;
+
842 
+
845  typedef mat<3, 2, f32, mediump> mediump_fmat3x2;
+
846 
+
849  typedef mat<3, 3, f32, mediump> mediump_fmat3x3;
+
850 
+
853  typedef mat<3, 4, f32, mediump> mediump_fmat3x4;
+
854 
+
857  typedef mat<4, 2, f32, mediump> mediump_fmat4x2;
+
858 
+
861  typedef mat<4, 3, f32, mediump> mediump_fmat4x3;
+
862 
+
865  typedef mat<4, 4, f32, mediump> mediump_fmat4x4;
+
866 
+
869  //typedef mediump_fmat1x1 mediump_fmat1;
+
870 
+ +
874 
+ +
878 
+ +
882 
+
883 
+
886  //typedef highp_f32 highp_fmat1x1;
+
887 
+
890  typedef mat<2, 2, f32, highp> highp_fmat2x2;
+
891 
+
894  typedef mat<2, 3, f32, highp> highp_fmat2x3;
+
895 
+
898  typedef mat<2, 4, f32, highp> highp_fmat2x4;
+
899 
+
902  typedef mat<3, 2, f32, highp> highp_fmat3x2;
+
903 
+
906  typedef mat<3, 3, f32, highp> highp_fmat3x3;
+
907 
+
910  typedef mat<3, 4, f32, highp> highp_fmat3x4;
+
911 
+
914  typedef mat<4, 2, f32, highp> highp_fmat4x2;
+
915 
+
918  typedef mat<4, 3, f32, highp> highp_fmat4x3;
+
919 
+
922  typedef mat<4, 4, f32, highp> highp_fmat4x4;
+
923 
+
926  //typedef highp_fmat1x1 highp_fmat1;
+
927 
+
930  typedef highp_fmat2x2 highp_fmat2;
+
931 
+
934  typedef highp_fmat3x3 highp_fmat3;
+
935 
+
938  typedef highp_fmat4x4 highp_fmat4;
+
939 
+
940 
+
943  //typedef f32 lowp_f32mat1x1;
+
944 
+
947  typedef mat<2, 2, f32, lowp> lowp_f32mat2x2;
+
948 
+
951  typedef mat<2, 3, f32, lowp> lowp_f32mat2x3;
+
952 
+
955  typedef mat<2, 4, f32, lowp> lowp_f32mat2x4;
+
956 
+
959  typedef mat<3, 2, f32, lowp> lowp_f32mat3x2;
+
960 
+
963  typedef mat<3, 3, f32, lowp> lowp_f32mat3x3;
+
964 
+
967  typedef mat<3, 4, f32, lowp> lowp_f32mat3x4;
+
968 
+
971  typedef mat<4, 2, f32, lowp> lowp_f32mat4x2;
+
972 
+
975  typedef mat<4, 3, f32, lowp> lowp_f32mat4x3;
+
976 
+
979  typedef mat<4, 4, f32, lowp> lowp_f32mat4x4;
+
980 
+
983  //typedef detail::tmat1x1<f32, lowp> lowp_f32mat1;
+
984 
+ +
988 
+ +
992 
+ +
996 
+
997 
+
1000  //typedef f32 mediump_f32mat1x1;
+
1001 
+
1004  typedef mat<2, 2, f32, mediump> mediump_f32mat2x2;
+
1005 
+
1008  typedef mat<2, 3, f32, mediump> mediump_f32mat2x3;
+
1009 
+
1012  typedef mat<2, 4, f32, mediump> mediump_f32mat2x4;
+
1013 
+
1016  typedef mat<3, 2, f32, mediump> mediump_f32mat3x2;
+
1017 
+
1020  typedef mat<3, 3, f32, mediump> mediump_f32mat3x3;
+
1021 
+
1024  typedef mat<3, 4, f32, mediump> mediump_f32mat3x4;
+
1025 
+
1028  typedef mat<4, 2, f32, mediump> mediump_f32mat4x2;
+
1029 
+
1032  typedef mat<4, 3, f32, mediump> mediump_f32mat4x3;
+
1033 
+
1036  typedef mat<4, 4, f32, mediump> mediump_f32mat4x4;
+
1037 
+
1040  //typedef detail::tmat1x1<f32, mediump> f32mat1;
+
1041 
+ +
1045 
+ +
1049 
+ +
1053 
+
1054 
+
1057  //typedef f32 highp_f32mat1x1;
+
1058 
+
1061  typedef mat<2, 2, f32, highp> highp_f32mat2x2;
+
1062 
+
1065  typedef mat<2, 3, f32, highp> highp_f32mat2x3;
+
1066 
+
1069  typedef mat<2, 4, f32, highp> highp_f32mat2x4;
+
1070 
+
1073  typedef mat<3, 2, f32, highp> highp_f32mat3x2;
+
1074 
+
1077  typedef mat<3, 3, f32, highp> highp_f32mat3x3;
+
1078 
+
1081  typedef mat<3, 4, f32, highp> highp_f32mat3x4;
+
1082 
+
1085  typedef mat<4, 2, f32, highp> highp_f32mat4x2;
+
1086 
+
1089  typedef mat<4, 3, f32, highp> highp_f32mat4x3;
+
1090 
+
1093  typedef mat<4, 4, f32, highp> highp_f32mat4x4;
+
1094 
+
1097  //typedef detail::tmat1x1<f32, highp> f32mat1;
+
1098 
+ +
1102 
+ +
1106 
+ +
1110 
+
1111 
+
1114  //typedef f64 lowp_f64mat1x1;
+
1115 
+
1118  typedef mat<2, 2, f64, lowp> lowp_f64mat2x2;
+
1119 
+
1122  typedef mat<2, 3, f64, lowp> lowp_f64mat2x3;
+
1123 
+
1126  typedef mat<2, 4, f64, lowp> lowp_f64mat2x4;
+
1127 
+
1130  typedef mat<3, 2, f64, lowp> lowp_f64mat3x2;
+
1131 
+
1134  typedef mat<3, 3, f64, lowp> lowp_f64mat3x3;
+
1135 
+
1138  typedef mat<3, 4, f64, lowp> lowp_f64mat3x4;
+
1139 
+
1142  typedef mat<4, 2, f64, lowp> lowp_f64mat4x2;
+
1143 
+
1146  typedef mat<4, 3, f64, lowp> lowp_f64mat4x3;
+
1147 
+
1150  typedef mat<4, 4, f64, lowp> lowp_f64mat4x4;
+
1151 
+
1154  //typedef lowp_f64mat1x1 lowp_f64mat1;
+
1155 
+
1158  typedef lowp_f64mat2x2 lowp_f64mat2;
+
1159 
+
1162  typedef lowp_f64mat3x3 lowp_f64mat3;
+
1163 
+
1166  typedef lowp_f64mat4x4 lowp_f64mat4;
+
1167 
+
1168 
+
1171  //typedef f64 Highp_f64mat1x1;
+
1172 
+
1175  typedef mat<2, 2, f64, mediump> mediump_f64mat2x2;
+
1176 
+
1179  typedef mat<2, 3, f64, mediump> mediump_f64mat2x3;
+
1180 
+
1183  typedef mat<2, 4, f64, mediump> mediump_f64mat2x4;
+
1184 
+
1187  typedef mat<3, 2, f64, mediump> mediump_f64mat3x2;
+
1188 
+
1191  typedef mat<3, 3, f64, mediump> mediump_f64mat3x3;
+
1192 
+
1195  typedef mat<3, 4, f64, mediump> mediump_f64mat3x4;
+
1196 
+
1199  typedef mat<4, 2, f64, mediump> mediump_f64mat4x2;
+
1200 
+
1203  typedef mat<4, 3, f64, mediump> mediump_f64mat4x3;
+
1204 
+
1207  typedef mat<4, 4, f64, mediump> mediump_f64mat4x4;
+
1208 
+
1211  //typedef mediump_f64mat1x1 mediump_f64mat1;
+
1212 
+ +
1216 
+ +
1220 
+ +
1224 
+
1227  //typedef f64 highp_f64mat1x1;
+
1228 
+
1231  typedef mat<2, 2, f64, highp> highp_f64mat2x2;
+
1232 
+
1235  typedef mat<2, 3, f64, highp> highp_f64mat2x3;
+
1236 
+
1239  typedef mat<2, 4, f64, highp> highp_f64mat2x4;
+
1240 
+
1243  typedef mat<3, 2, f64, highp> highp_f64mat3x2;
+
1244 
+
1247  typedef mat<3, 3, f64, highp> highp_f64mat3x3;
+
1248 
+
1251  typedef mat<3, 4, f64, highp> highp_f64mat3x4;
+
1252 
+
1255  typedef mat<4, 2, f64, highp> highp_f64mat4x2;
+
1256 
+
1259  typedef mat<4, 3, f64, highp> highp_f64mat4x3;
+
1260 
+
1263  typedef mat<4, 4, f64, highp> highp_f64mat4x4;
+
1264 
+
1267  //typedef highp_f64mat1x1 highp_f64mat1;
+
1268 
+ +
1272 
+ +
1276 
+ +
1280 
+
1281 
+
1283  // Signed int vector types
+
1284 
+
1287  typedef vec<1, int, lowp> lowp_ivec1;
+
1288 
+
1291  typedef vec<2, int, lowp> lowp_ivec2;
+
1292 
+
1295  typedef vec<3, int, lowp> lowp_ivec3;
+
1296 
+
1299  typedef vec<4, int, lowp> lowp_ivec4;
+
1300 
+
1301 
+
1304  typedef vec<1, int, mediump> mediump_ivec1;
+
1305 
+
1308  typedef vec<2, int, mediump> mediump_ivec2;
+
1309 
+
1312  typedef vec<3, int, mediump> mediump_ivec3;
+
1313 
+
1316  typedef vec<4, int, mediump> mediump_ivec4;
+
1317 
+
1318 
+
1321  typedef vec<1, int, highp> highp_ivec1;
+
1322 
+
1325  typedef vec<2, int, highp> highp_ivec2;
+
1326 
+
1329  typedef vec<3, int, highp> highp_ivec3;
+
1330 
+
1333  typedef vec<4, int, highp> highp_ivec4;
+
1334 
+
1335 
+
1338  typedef vec<1, i8, lowp> lowp_i8vec1;
+
1339 
+
1342  typedef vec<2, i8, lowp> lowp_i8vec2;
+
1343 
+
1346  typedef vec<3, i8, lowp> lowp_i8vec3;
+
1347 
+
1350  typedef vec<4, i8, lowp> lowp_i8vec4;
+
1351 
+
1352 
+
1355  typedef vec<1, i8, mediump> mediump_i8vec1;
+
1356 
+
1359  typedef vec<2, i8, mediump> mediump_i8vec2;
+
1360 
+
1363  typedef vec<3, i8, mediump> mediump_i8vec3;
+
1364 
+
1367  typedef vec<4, i8, mediump> mediump_i8vec4;
+
1368 
+
1369 
+
1372  typedef vec<1, i8, highp> highp_i8vec1;
+
1373 
+
1376  typedef vec<2, i8, highp> highp_i8vec2;
+
1377 
+
1380  typedef vec<3, i8, highp> highp_i8vec3;
+
1381 
+
1384  typedef vec<4, i8, highp> highp_i8vec4;
+
1385 
+
1386 
+
1389  typedef vec<1, i16, lowp> lowp_i16vec1;
+
1390 
+
1393  typedef vec<2, i16, lowp> lowp_i16vec2;
+
1394 
+
1397  typedef vec<3, i16, lowp> lowp_i16vec3;
+
1398 
+
1401  typedef vec<4, i16, lowp> lowp_i16vec4;
+
1402 
+
1403 
+
1406  typedef vec<1, i16, mediump> mediump_i16vec1;
+
1407 
+
1410  typedef vec<2, i16, mediump> mediump_i16vec2;
+
1411 
+
1414  typedef vec<3, i16, mediump> mediump_i16vec3;
+
1415 
+
1418  typedef vec<4, i16, mediump> mediump_i16vec4;
+
1419 
+
1420 
+
1423  typedef vec<1, i16, highp> highp_i16vec1;
+
1424 
+
1427  typedef vec<2, i16, highp> highp_i16vec2;
+
1428 
+
1431  typedef vec<3, i16, highp> highp_i16vec3;
+
1432 
+
1435  typedef vec<4, i16, highp> highp_i16vec4;
+
1436 
+
1437 
+
1440  typedef vec<1, i32, lowp> lowp_i32vec1;
+
1441 
+
1444  typedef vec<2, i32, lowp> lowp_i32vec2;
+
1445 
+
1448  typedef vec<3, i32, lowp> lowp_i32vec3;
+
1449 
+
1452  typedef vec<4, i32, lowp> lowp_i32vec4;
+
1453 
+
1454 
+
1457  typedef vec<1, i32, mediump> mediump_i32vec1;
+
1458 
+
1461  typedef vec<2, i32, mediump> mediump_i32vec2;
+
1462 
+
1465  typedef vec<3, i32, mediump> mediump_i32vec3;
+
1466 
+
1469  typedef vec<4, i32, mediump> mediump_i32vec4;
+
1470 
+
1471 
+
1474  typedef vec<1, i32, highp> highp_i32vec1;
+
1475 
+
1478  typedef vec<2, i32, highp> highp_i32vec2;
+
1479 
+
1482  typedef vec<3, i32, highp> highp_i32vec3;
+
1483 
+
1486  typedef vec<4, i32, highp> highp_i32vec4;
+
1487 
+
1488 
+
1491  typedef vec<1, i64, lowp> lowp_i64vec1;
+
1492 
+
1495  typedef vec<2, i64, lowp> lowp_i64vec2;
+
1496 
+
1499  typedef vec<3, i64, lowp> lowp_i64vec3;
+
1500 
+
1503  typedef vec<4, i64, lowp> lowp_i64vec4;
+
1504 
+
1505 
+
1508  typedef vec<1, i64, mediump> mediump_i64vec1;
+
1509 
+
1512  typedef vec<2, i64, mediump> mediump_i64vec2;
+
1513 
+
1516  typedef vec<3, i64, mediump> mediump_i64vec3;
+
1517 
+
1520  typedef vec<4, i64, mediump> mediump_i64vec4;
+
1521 
+
1522 
+
1525  typedef vec<1, i64, highp> highp_i64vec1;
+
1526 
+
1529  typedef vec<2, i64, highp> highp_i64vec2;
+
1530 
+
1533  typedef vec<3, i64, highp> highp_i64vec3;
+
1534 
+
1537  typedef vec<4, i64, highp> highp_i64vec4;
+
1538 
+
1539 
+
1541  // Unsigned int vector types
+
1542 
+
1545  typedef vec<1, uint, lowp> lowp_uvec1;
+
1546 
+
1549  typedef vec<2, uint, lowp> lowp_uvec2;
+
1550 
+
1553  typedef vec<3, uint, lowp> lowp_uvec3;
+
1554 
+
1557  typedef vec<4, uint, lowp> lowp_uvec4;
+
1558 
+
1559 
+
1562  typedef vec<1, uint, mediump> mediump_uvec1;
+
1563 
+
1566  typedef vec<2, uint, mediump> mediump_uvec2;
+
1567 
+
1570  typedef vec<3, uint, mediump> mediump_uvec3;
+
1571 
+
1574  typedef vec<4, uint, mediump> mediump_uvec4;
+
1575 
+
1576 
+
1579  typedef vec<1, uint, highp> highp_uvec1;
+
1580 
+
1583  typedef vec<2, uint, highp> highp_uvec2;
+
1584 
+
1587  typedef vec<3, uint, highp> highp_uvec3;
+
1588 
+
1591  typedef vec<4, uint, highp> highp_uvec4;
+
1592 
+
1593 
+
1596  typedef vec<1, u8, lowp> lowp_u8vec1;
+
1597 
+
1600  typedef vec<2, u8, lowp> lowp_u8vec2;
+
1601 
+
1604  typedef vec<3, u8, lowp> lowp_u8vec3;
+
1605 
+
1608  typedef vec<4, u8, lowp> lowp_u8vec4;
+
1609 
+
1610 
+
1613  typedef vec<1, u8, mediump> mediump_u8vec1;
+
1614 
+
1617  typedef vec<2, u8, mediump> mediump_u8vec2;
+
1618 
+
1621  typedef vec<3, u8, mediump> mediump_u8vec3;
+
1622 
+
1625  typedef vec<4, u8, mediump> mediump_u8vec4;
+
1626 
+
1627 
+
1630  typedef vec<1, u8, highp> highp_u8vec1;
+
1631 
+
1634  typedef vec<2, u8, highp> highp_u8vec2;
+
1635 
+
1638  typedef vec<3, u8, highp> highp_u8vec3;
+
1639 
+
1642  typedef vec<4, u8, highp> highp_u8vec4;
+
1643 
+
1644 
+
1647  typedef vec<1, u16, lowp> lowp_u16vec1;
+
1648 
+
1651  typedef vec<2, u16, lowp> lowp_u16vec2;
+
1652 
+
1655  typedef vec<3, u16, lowp> lowp_u16vec3;
+
1656 
+
1659  typedef vec<4, u16, lowp> lowp_u16vec4;
+
1660 
+
1661 
+
1664  typedef vec<1, u16, mediump> mediump_u16vec1;
+
1665 
+
1668  typedef vec<2, u16, mediump> mediump_u16vec2;
+
1669 
+
1672  typedef vec<3, u16, mediump> mediump_u16vec3;
+
1673 
+
1676  typedef vec<4, u16, mediump> mediump_u16vec4;
+
1677 
+
1678 
+
1681  typedef vec<1, u16, highp> highp_u16vec1;
+
1682 
+
1685  typedef vec<2, u16, highp> highp_u16vec2;
+
1686 
+
1689  typedef vec<3, u16, highp> highp_u16vec3;
+
1690 
+
1693  typedef vec<4, u16, highp> highp_u16vec4;
+
1694 
+
1695 
+
1698  typedef vec<1, u32, lowp> lowp_u32vec1;
+
1699 
+
1702  typedef vec<2, u32, lowp> lowp_u32vec2;
+
1703 
+
1706  typedef vec<3, u32, lowp> lowp_u32vec3;
+
1707 
+
1710  typedef vec<4, u32, lowp> lowp_u32vec4;
+
1711 
+
1712 
+
1715  typedef vec<1, u32, mediump> mediump_u32vec1;
+
1716 
+
1719  typedef vec<2, u32, mediump> mediump_u32vec2;
+
1720 
+
1723  typedef vec<3, u32, mediump> mediump_u32vec3;
+
1724 
+
1727  typedef vec<4, u32, mediump> mediump_u32vec4;
+
1728 
+
1729 
+
1732  typedef vec<1, u32, highp> highp_u32vec1;
+
1733 
+
1736  typedef vec<2, u32, highp> highp_u32vec2;
+
1737 
+
1740  typedef vec<3, u32, highp> highp_u32vec3;
+
1741 
+
1744  typedef vec<4, u32, highp> highp_u32vec4;
+
1745 
+
1746 
+
1749  typedef vec<1, u64, lowp> lowp_u64vec1;
+
1750 
+
1753  typedef vec<2, u64, lowp> lowp_u64vec2;
+
1754 
+
1757  typedef vec<3, u64, lowp> lowp_u64vec3;
+
1758 
+
1761  typedef vec<4, u64, lowp> lowp_u64vec4;
+
1762 
+
1763 
+
1766  typedef vec<1, u64, mediump> mediump_u64vec1;
+
1767 
+
1770  typedef vec<2, u64, mediump> mediump_u64vec2;
+
1771 
+
1774  typedef vec<3, u64, mediump> mediump_u64vec3;
+
1775 
+
1778  typedef vec<4, u64, mediump> mediump_u64vec4;
+
1779 
+
1780 
+
1783  typedef vec<1, u64, highp> highp_u64vec1;
+
1784 
+
1787  typedef vec<2, u64, highp> highp_u64vec2;
+
1788 
+
1791  typedef vec<3, u64, highp> highp_u64vec3;
+
1792 
+
1795  typedef vec<4, u64, highp> highp_u64vec4;
+
1796 
+
1797 
+
1799  // Float vector types
+
1800 
+
1803  typedef float32 float32_t;
+
1804 
+
1807  typedef float32 f32;
+
1808 
+
1809 # ifndef GLM_FORCE_SINGLE_ONLY
+
1810 
+
1813  typedef float64 float64_t;
+
1814 
+
1817  typedef float64 f64;
+
1818 # endif//GLM_FORCE_SINGLE_ONLY
+
1819 
+
1822  typedef vec<1, float, defaultp> fvec1;
+
1823 
+
1826  typedef vec<2, float, defaultp> fvec2;
+
1827 
+
1830  typedef vec<3, float, defaultp> fvec3;
+
1831 
+
1834  typedef vec<4, float, defaultp> fvec4;
+
1835 
+
1836 
+
1839  typedef vec<1, f32, defaultp> f32vec1;
+
1840 
+
1843  typedef vec<2, f32, defaultp> f32vec2;
+
1844 
+
1847  typedef vec<3, f32, defaultp> f32vec3;
+
1848 
+
1851  typedef vec<4, f32, defaultp> f32vec4;
+
1852 
+
1853 # ifndef GLM_FORCE_SINGLE_ONLY
+
1854  typedef vec<1, f64, defaultp> f64vec1;
+
1857 
+
1860  typedef vec<2, f64, defaultp> f64vec2;
+
1861 
+
1864  typedef vec<3, f64, defaultp> f64vec3;
+
1865 
+
1868  typedef vec<4, f64, defaultp> f64vec4;
+
1869 # endif//GLM_FORCE_SINGLE_ONLY
+
1870 
+
1871 
+
1873  // Float matrix types
+
1874 
+
1877  //typedef detail::tmat1x1<f32> fmat1;
+
1878 
+
1881  typedef mat<2, 2, f32, defaultp> fmat2;
+
1882 
+
1885  typedef mat<3, 3, f32, defaultp> fmat3;
+
1886 
+
1889  typedef mat<4, 4, f32, defaultp> fmat4;
+
1890 
+
1891 
+
1894  //typedef f32 fmat1x1;
+
1895 
+
1898  typedef mat<2, 2, f32, defaultp> fmat2x2;
+
1899 
+
1902  typedef mat<2, 3, f32, defaultp> fmat2x3;
+
1903 
+
1906  typedef mat<2, 4, f32, defaultp> fmat2x4;
+
1907 
+
1910  typedef mat<3, 2, f32, defaultp> fmat3x2;
+
1911 
+
1914  typedef mat<3, 3, f32, defaultp> fmat3x3;
+
1915 
+
1918  typedef mat<3, 4, f32, defaultp> fmat3x4;
+
1919 
+
1922  typedef mat<4, 2, f32, defaultp> fmat4x2;
+
1923 
+
1926  typedef mat<4, 3, f32, defaultp> fmat4x3;
+
1927 
+
1930  typedef mat<4, 4, f32, defaultp> fmat4x4;
+
1931 
+
1932 
+
1935  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
+
1936 
+
1939  typedef mat<2, 2, f32, defaultp> f32mat2;
+
1940 
+
1943  typedef mat<3, 3, f32, defaultp> f32mat3;
+
1944 
+
1947  typedef mat<4, 4, f32, defaultp> f32mat4;
+
1948 
+
1949 
+
1952  //typedef f32 f32mat1x1;
+
1953 
+
1956  typedef mat<2, 2, f32, defaultp> f32mat2x2;
+
1957 
+
1960  typedef mat<2, 3, f32, defaultp> f32mat2x3;
+
1961 
+
1964  typedef mat<2, 4, f32, defaultp> f32mat2x4;
+
1965 
+
1968  typedef mat<3, 2, f32, defaultp> f32mat3x2;
+
1969 
+
1972  typedef mat<3, 3, f32, defaultp> f32mat3x3;
+
1973 
+
1976  typedef mat<3, 4, f32, defaultp> f32mat3x4;
+
1977 
+
1980  typedef mat<4, 2, f32, defaultp> f32mat4x2;
+
1981 
+
1984  typedef mat<4, 3, f32, defaultp> f32mat4x3;
+
1985 
+
1988  typedef mat<4, 4, f32, defaultp> f32mat4x4;
+
1989 
+
1990 
+
1991 # ifndef GLM_FORCE_SINGLE_ONLY
+
1992 
+
1995  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
+
1996 
+
1999  typedef mat<2, 2, f64, defaultp> f64mat2;
+
2000 
+
2003  typedef mat<3, 3, f64, defaultp> f64mat3;
+
2004 
+
2007  typedef mat<4, 4, f64, defaultp> f64mat4;
+
2008 
+
2009 
+
2012  //typedef f64 f64mat1x1;
+
2013 
+
2016  typedef mat<2, 2, f64, defaultp> f64mat2x2;
+
2017 
+
2020  typedef mat<2, 3, f64, defaultp> f64mat2x3;
+
2021 
+
2024  typedef mat<2, 4, f64, defaultp> f64mat2x4;
+
2025 
+
2028  typedef mat<3, 2, f64, defaultp> f64mat3x2;
+
2029 
+
2032  typedef mat<3, 3, f64, defaultp> f64mat3x3;
+
2033 
+
2036  typedef mat<3, 4, f64, defaultp> f64mat3x4;
+
2037 
+
2040  typedef mat<4, 2, f64, defaultp> f64mat4x2;
+
2041 
+
2044  typedef mat<4, 3, f64, defaultp> f64mat4x3;
+
2045 
+
2048  typedef mat<4, 4, f64, defaultp> f64mat4x4;
+
2049 
+
2050 # endif//GLM_FORCE_SINGLE_ONLY
+
2051 
+
2053  // Quaternion types
+
2054 
+
2057  typedef qua<f32, defaultp> f32quat;
+
2058 
+
2061  typedef qua<f32, lowp> lowp_f32quat;
+
2062 
+
2065  typedef qua<f64, lowp> lowp_f64quat;
+
2066 
+
2069  typedef qua<f32, mediump> mediump_f32quat;
+
2070 
+
2071 # ifndef GLM_FORCE_SINGLE_ONLY
+
2072 
+
2075  typedef qua<f64, mediump> mediump_f64quat;
+
2076 
+
2079  typedef qua<f32, highp> highp_f32quat;
+
2080 
+
2083  typedef qua<f64, highp> highp_f64quat;
+
2084 
+
2087  typedef qua<f64, defaultp> f64quat;
+
2088 
+
2089 # endif//GLM_FORCE_SINGLE_ONLY
+
2090 
+
2092 }//namespace glm
+
2093 
+
2094 #include "type_precision.inl"
+
+
mat< 3, 3, f32, highp > highp_f32mat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:696
+
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:145
+
vec< 1, i64, lowp > lowp_i64vec1
Low qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:284
+
mat< 3, 3, f32, mediump > mediump_fmat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:531
+
mat< 4, 4, f32, lowp > lowp_fmat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:640
+
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
+
vec< 1, u16, mediump > mediump_u16vec1
Medium qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:351
+
mat< 3, 3, f32, highp > highp_fmat3x3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:656
+
mat< 2, 3, f32, mediump > mediump_f32mat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:683
+
mat< 4, 4, f64, highp > highp_f64mat4x4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:780
+
vec< 4, float, mediump > mediump_fvec4
Medium Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:436
+
mat< 2, 3, f32, highp > highp_fmat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:653
+
vec< 2, i16, highp > highp_i16vec2
High qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:255
+
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
+
mat< 2, 4, f64, lowp > lowp_f64mat2x4
Low double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:754
+
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:782
+
vec< 4, u8, mediump > mediump_u8vec4
Medium qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:334
+
vec< 4, f32, mediump > mediump_f32vec4
Medium single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:456
+
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:708
+
vec< 2, u64, highp > highp_u64vec2
High qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:397
+
vec< 3, u16, highp > highp_u16vec3
High qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:358
+
float mediump_float32_t
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:160
+
double lowp_float64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:170
+
vec< 1, int, mediump > mediump_ivec1
Medium qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:209
+
vec< 2, int, highp > highp_ivec2
High qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:215
+
mat< 2, 2, f32, lowp > lowp_fmat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:632
+
vec< 2, int, mediump > mediump_ivec2
Medium qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:210
+
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
+
vec< 4, i16, lowp > lowp_i16vec4
Low qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:247
+
mat< 2, 2, f32, highp > highp_f32mat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:550
+
mat< 2, 2, f64, mediump > mediump_f64mat2x2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:762
+
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
+
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
+
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
+
mat< 3, 2, f32, highp > highp_f32mat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:695
+
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
+
vec< 1, i16, highp > highp_i16vec1
High qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:254
+
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
+
mat< 4, 3, f64, highp > highp_f64mat4x3
High double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:779
+
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:669
+
mat< 4, 2, f32, lowp > lowp_fmat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:638
+
mat< 2, 4, f32, lowp > lowp_fmat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:634
+
vec< 2, i16, mediump > mediump_i16vec2
Medium qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:250
+
vec< 2, f64, highp > highp_f64vec2
High double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:499
+
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:125
+
vec< 4, i32, mediump > mediump_i32vec4
Medium qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:272
+
vec< 1, float, lowp > lowp_fvec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:428
+
vec< 4, u64, highp > highp_u64vec4
High qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:399
+
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
+
vec< 3, i16, lowp > lowp_i16vec3
Low qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:246
+
vec< 1, float, mediump > mediump_fvec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:433
+
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
+
mat< 3, 3, f32, mediump > mediump_fmat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:646
+
vec< 1, u32, mediump > mediump_u32vec1
Medium qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:371
+
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:505
+
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
+
vec< 1, int, highp > highp_ivec1
High qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:214
+
mat< 4, 2, f64, lowp > lowp_f64mat4x2
Low double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:758
+
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
+
mat< 3, 3, f32, mediump > mediump_f32mat3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:547
+
mat< 3, 3, f32, defaultp > f32mat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:555
+
float highp_f32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:151
+
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
+
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
+
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
+
vec< 4, f32, highp > highp_f32vec4
High single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:461
+
mat< 2, 2, f64, defaultp > f64mat2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:586
+
vec< 2, i32, mediump > mediump_i32vec2
Medium qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:270
+
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
+
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
+
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:173
+
mat< 2, 2, f64, highp > highp_f64mat2x2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:772
+
vec< 2, u32, mediump > mediump_u32vec2
Medium qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:372
+
mat< 3, 4, f64, lowp > lowp_f64mat3x4
Low double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:757
+
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
+
vec< 4, float, lowp > lowp_fvec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:431
+
mat< 4, 4, f32, lowp > lowp_fmat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:528
+
mat< 3, 4, f32, highp > highp_f32mat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:697
+
double highp_float64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:172
+
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:130
+
float mediump_f32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:150
+
vec< 3, i8, highp > highp_i8vec3
High qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:236
+
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:664
+
mat< 2, 2, f32, highp > highp_fmat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:652
+
mat< 3, 3, f64, highp > highp_f64mat3x3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:776
+
vec< 4, int, highp > highp_ivec4
High qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:217
+
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:152
+
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
+
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:117
+
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
+
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:1230
+
mat< 3, 3, f32, mediump > mediump_f32mat3x3
Medium single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:686
+
vec< 1, f32, highp > highp_f32vec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:458
+
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
+
mat< 4, 2, f32, mediump > mediump_f32mat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:688
+
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
+
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:709
+
mat< 4, 4, f32, mediump > mediump_f32mat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:548
+
mat< 2, 2, f32, mediump > mediump_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:682
+
vec< 3, u32, mediump > mediump_u32vec3
Medium qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:373
+
mat< 2, 2, f32, highp > highp_f32mat2x2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:692
+
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
+
vec< 2, u8, highp > highp_u8vec2
High qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:337
+
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
+
mat< 4, 4, f32, mediump > mediump_f32mat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:690
+
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
+
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
+
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:139
+
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:705
+
mat< 2, 2, f32, lowp > lowp_f32mat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:542
+
vec< 4, f64, lowp > lowp_f64vec4
Low double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:491
+
vec< 1, u16, lowp > lowp_u16vec1
Low qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:346
+
vec< 4, u16, mediump > mediump_u16vec4
Medium qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:354
+
vec< 2, i8, highp > highp_i8vec2
High qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:235
+
detail::uint64 uint64
64 bit unsigned integer type.
+
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
+
vec< 4, f64, mediump > mediump_f64vec4
Medium double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:496
+
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
+
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
+
vec< 1, u16, highp > highp_u16vec1
High qualifier 16 bit unsigned integer scalar type.
Definition: fwd.hpp:356
+
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:786
+
vec< 4, i8, lowp > lowp_i8vec4
Low qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:227
+
mat< 3, 4, f64, mediump > mediump_f64mat3x4
Medium double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:767
+
mat< 2, 3, f32, lowp > lowp_fmat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:633
+
vec< 1, f64, lowp > lowp_f64vec1
Low double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:488
+
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
+
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
+
vec< 4, int, mediump > mediump_ivec4
Medium qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:212
+
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:788
+
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
+
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:706
+
vec< 2, f32, highp > highp_f32vec2
High single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:459
+
vec< 2, f32, lowp > lowp_f32vec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:449
+
mat< 4, 4, f32, defaultp > f32mat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:556
+
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:789
+
vec< 3, i64, lowp > lowp_i64vec3
Low qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:286
+
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:464
+
mat< 4, 4, f64, defaultp > f64mat4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:588
+
vec< 2, i64, mediump > mediump_i64vec2
Medium qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:290
+
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:784
+
double mediump_float64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:171
+
double lowp_float64_t
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:175
+
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:178
+
mat< 2, 4, f32, highp > highp_f32mat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:694
+
mat< 4, 4, f32, highp > highp_f32mat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:552
+
vec< 3, int, highp > highp_ivec3
High qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:216
+
vec< 1, u64, highp > highp_u64vec1
High qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:396
+
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
+
vec< 3, u32, lowp > lowp_u32vec3
Low qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:368
+
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
+
mat< 3, 2, f32, lowp > lowp_fmat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:635
+
mat< 3, 3, f32, lowp > lowp_f32mat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:676
+
mat< 4, 4, f32, highp > highp_fmat4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:536
+
mat< 2, 3, f64, mediump > mediump_f64mat2x3
Medium double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:763
+
mat< 4, 4, f64, highp > highp_f64mat4
High double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:584
+
vec< 1, i8, lowp > lowp_i8vec1
Low qualifier 8 bit signed integer vector of 1 component type.
Definition: fwd.hpp:224
+
vec< 3, i32, highp > highp_i32vec3
High qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:276
+
mat< 2, 2, f32, highp > highp_fmat2
High single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:534
+
mat< 2, 2, f64, mediump > mediump_f64mat2
Medium double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:578
+
mat< 3, 2, f64, mediump > mediump_f64mat3x2
Medium double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:765
+
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
+
vec< 4, int, lowp > lowp_ivec4
Low qualifier signed integer vector of 4 components type.
Definition: fwd.hpp:207
+
double mediump_float64_t
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:176
+
mat< 3, 3, f32, highp > highp_fmat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:535
+
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:445
+
vec< 1, uint, mediump > mediump_uvec1
Medium qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:311
+
vec< 1, u64, lowp > lowp_u64vec1
Low qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:386
+
mat< 4, 2, f32, highp > highp_f32mat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:698
+
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
+
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:503
+
vec< 1, i16, mediump > mediump_i16vec1
Medium qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:249
+
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:665
+
mat< 4, 3, f32, mediump > mediump_f32mat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:689
+
qua< f32, lowp > lowp_f32quat
Low single-qualifier floating-point quaternion.
Definition: fwd.hpp:1217
+
qua< f32, highp > highp_f32quat
High single-qualifier floating-point quaternion.
Definition: fwd.hpp:1219
+
mat< 2, 4, f32, highp > highp_fmat2x4
High single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:654
+
mat< 2, 2, f32, mediump > mediump_fmat2x2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:642
+
vec< 3, f32, mediump > mediump_f32vec3
Medium single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:455
+
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
+
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:785
+
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
+
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:162
+
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:666
+
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
+
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
+
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:157
+
qua< f64, highp > highp_f64quat
High double-qualifier floating-point quaternion.
Definition: fwd.hpp:1229
+
mat< 4, 3, f64, mediump > mediump_f64mat4x3
Medium double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:769
+
vec< 4, u32, highp > highp_u32vec4
High qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:379
+
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
+
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
+
vec< 4, i64, lowp > lowp_i64vec4
Low qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:287
+
vec< 1, i8, mediump > mediump_i8vec1
Medium qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:229
+
vec< 2, u32, highp > highp_u32vec2
High qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:377
+
vec< 2, u16, lowp > lowp_u16vec2
Low qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:347
+
vec< 2, float, lowp > lowp_fvec2
Low single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:429
+
float lowp_float32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:154
+
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:102
+
mat< 2, 2, f32, lowp > lowp_f32mat2x2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:672
+
vec< 2, float, mediump > mediump_fvec2
Medium Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:434
+
vec< 2, float, highp > highp_fvec2
High Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:439
+
mat< 4, 4, f32, lowp > lowp_f32mat4x4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:680
+
vec< 2, u8, lowp > lowp_u8vec2
Low qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:327
+
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
+
mat< 2, 2, f64, lowp > lowp_f64mat2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:574
+
vec< 4, uint, lowp > lowp_uvec4
Low qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:309
+
vec< 3, i16, highp > highp_i16vec3
High qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:256
+
vec< 3, int, lowp > lowp_ivec3
Low qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:206
+
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
+
vec< 4, u64, lowp > lowp_u64vec4
Low qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:389
+
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
+
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
+
vec< 4, u16, lowp > lowp_u16vec4
Low qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:349
+
mat< 4, 3, f32, lowp > lowp_fmat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:639
+
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:465
+
mat< 4, 4, f64, mediump > mediump_f64mat4x4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:770
+
vec< 1, u8, mediump > mediump_u8vec1
Medium qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:331
+
double mediump_f64
Medium 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:166
+
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
+
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
+
mat< 3, 3, f64, defaultp > f64mat3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:587
+
vec< 3, i64, highp > highp_i64vec3
High qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:296
+
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
+
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:710
+
vec< 4, i8, highp > highp_i8vec4
High qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:237
+
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
+
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
+
vec< 3, u8, mediump > mediump_u8vec3
Medium qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:333
+
mat< 4, 3, f32, mediump > mediump_fmat4x3
Medium single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:649
+
vec< 4, i8, mediump > mediump_i8vec4
Medium qualifier 8 bit signed integer vector of 4 components type.
Definition: fwd.hpp:232
+
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
+
float highp_float32_t
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:161
+
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
+
mat< 2, 2, f32, defaultp > f32mat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:554
+
mat< 3, 3, f64, highp > highp_f64mat3
High double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:583
+
mat< 3, 3, f64, mediump > mediump_f64mat3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:579
+
vec< 1, u8, highp > highp_u8vec1
High qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:336
+
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
+
vec< 1, int, lowp > lowp_ivec1
Low qualifier signed integer vector of 1 component type.
Definition: fwd.hpp:204
+
qua< f64, lowp > lowp_f64quat
Low double-qualifier floating-point quaternion.
Definition: fwd.hpp:1227
+
float highp_float32
High 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:156
+
mat< 4, 4, f64, lowp > lowp_f64mat4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:576
+
mat< 3, 4, f32, highp > highp_fmat3x4
High single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:657
+
vec< 4, i64, highp > highp_i64vec4
High qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:297
+
mat< 4, 2, f32, mediump > mediump_fmat4x2
Medium single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:648
+
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
+
mat< 4, 3, f32, highp > highp_fmat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:659
+
vec< 4, u32, lowp > lowp_u32vec4
Low qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:369
+
vec< 2, f32, mediump > mediump_f32vec2
Medium single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:454
+
vec< 3, f64, highp > highp_f64vec3
High double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:500
+
vec< 2, i32, highp > highp_i32vec2
High qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:275
+
vec< 1, f32, lowp > lowp_f32vec1
Low single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:448
+
vec< 3, u64, mediump > mediump_u64vec3
Medium qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:393
+
vec< 1, uint, lowp > lowp_uvec1
Low qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:306
+
mat< 2, 4, f64, highp > highp_f64mat2x4
High double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:774
+
mat< 2, 3, f32, highp > highp_f32mat2x3
High single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:693
+
vec< 3, u16, lowp > lowp_u16vec3
Low qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:348
+
vec< 1, u64, mediump > mediump_u64vec1
Medium qualifier 64 bit unsigned integer scalar type.
Definition: fwd.hpp:391
+
vec< 2, u32, lowp > lowp_u32vec2
Low qualifier 32 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:367
+
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:131
+
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:662
+
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
+
vec< 4, u8, highp > highp_u8vec4
High qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:339
+
mat< 4, 2, f32, lowp > lowp_f32mat4x2
Low single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:678
+
mat< 3, 2, f32, highp > highp_fmat3x2
High single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:655
+
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
+
vec< 4, f64, highp > highp_f64vec4
High double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:501
+
double highp_float64_t
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:177
+
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
+
qua< f32, mediump > mediump_f32quat
Medium single-qualifier floating-point quaternion.
Definition: fwd.hpp:1218
+
vec< 4, uint, mediump > mediump_uvec4
Medium qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:314
+
vec< 2, f64, mediump > mediump_f64vec2
Medium double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:494
+
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:103
+
vec< 1, u8, lowp > lowp_u8vec1
Low qualifier 8 bit unsigned integer scalar type.
Definition: fwd.hpp:326
+
vec< 1, i32, lowp > lowp_i32vec1
Low qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:264
+
mat< 4, 3, f64, lowp > lowp_f64mat4x3
Low double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:759
+
vec< 1, float, highp > highp_fvec1
High single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:438
+
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:670
+
vec< 2, u64, mediump > mediump_u64vec2
Medium qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:392
+
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:111
+
vec< 4, i16, highp > highp_i16vec4
High qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:257
+
float lowp_float32_t
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:159
+
vec< 4, f32, lowp > lowp_f32vec4
Low single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:451
+
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:1220
+
vec< 3, u8, highp > highp_u8vec3
High qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:338
+
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
+
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:463
+
vec< 3, uint, lowp > lowp_uvec3
Low qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:308
+
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:506
+
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:443
+
mat< 4, 4, f32, mediump > mediump_fmat4x4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:650
+
vec< 2, uint, highp > highp_uvec2
High qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:317
+
vec< 1, i64, mediump > mediump_i64vec1
Medium qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:289
+
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:135
+
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
+
vec< 4, u32, mediump > mediump_u32vec4
Medium qualifier 32 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:374
+
vec< 3, u8, lowp > lowp_u8vec3
Low qualifier 8 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:328
+
vec< 2, int, lowp > lowp_ivec2
Low qualifier signed integer vector of 2 components type.
Definition: fwd.hpp:205
+
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
+
vec< 4, i32, lowp > lowp_i32vec4
Low qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:267
+
vec< 1, f32, mediump > mediump_f32vec1
Medium single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:453
+
mat< 2, 4, f32, lowp > lowp_f32mat2x4
Low single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:674
+
mat< 3, 3, f64, mediump > mediump_f64mat3x3
Medium double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:766
+
mat< 2, 2, f32, defaultp > fmat2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:538
+
vec< 2, uint, mediump > mediump_uvec2
Medium qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:312
+
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:466
+
mat< 2, 3, f64, highp > highp_f64mat2x3
High double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:773
+
mat< 4, 2, f64, mediump > mediump_f64mat4x2
Medium double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:768
+
vec< 1, i16, lowp > lowp_i16vec1
Low qualifier 16 bit signed integer scalar type.
Definition: fwd.hpp:244
+
vec< 3, u16, mediump > mediump_u16vec3
Medium qualifier 16 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:353
+
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
+
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
+
vec< 2, u64, lowp > lowp_u64vec2
Low qualifier 64 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:387
+
vec< 3, u64, highp > highp_u64vec3
High qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:398
+
vec< 2, i32, lowp > lowp_i32vec2
Low qualifier 32 bit signed integer vector of 2 components type.
Definition: fwd.hpp:265
+
vec< 2, i64, highp > highp_i64vec2
High qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:295
+
mat< 4, 4, f64, lowp > lowp_f64mat4x4
Low double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:760
+
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
+
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:668
+
vec< 4, u8, lowp > lowp_u8vec4
Low qualifier 8 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:329
+
mat< 3, 2, f32, mediump > mediump_f32mat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:685
+
mat< 2, 4, f32, mediump > mediump_f32mat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:684
+
mat< 3, 4, f32, lowp > lowp_f32mat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:677
+
vec< 3, float, highp > highp_fvec3
High Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:440
+
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
+
double highp_f64
High 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:167
+
mat< 3, 3, f32, lowp > lowp_fmat3x3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:636
+
vec< 4, u16, highp > highp_u16vec4
High qualifier 16 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:359
+
vec< 3, uint, mediump > mediump_uvec3
Medium qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:313
+
vec< 2, f64, lowp > lowp_f64vec2
Low double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:489
+
mat< 3, 2, f64, lowp > lowp_f64mat3x2
Low double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:755
+
vec< 3, uint, highp > highp_uvec3
High qualifier unsigned integer vector of 3 components type.
Definition: fwd.hpp:318
+
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:107
+
vec< 2, uint, lowp > lowp_uvec2
Low qualifier unsigned integer vector of 2 components type.
Definition: fwd.hpp:307
+
vec< 4, uint, highp > highp_uvec4
High qualifier unsigned integer vector of 4 components type.
Definition: fwd.hpp:319
+
vec< 3, u64, lowp > lowp_u64vec3
Low qualifier 64 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:388
+
vec< 1, i64, highp > highp_i64vec1
High qualifier 64 bit signed integer scalar type.
Definition: fwd.hpp:294
+
mat< 4, 3, f32, highp > highp_f32mat4x3
High single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:699
+
mat< 2, 3, f32, mediump > mediump_fmat2x3
Medium single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:643
+
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
+
mat< 3, 2, f32, mediump > mediump_fmat3x2
Medium single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:645
+
vec< 3, i16, mediump > mediump_i16vec3
Medium qualifier 16 bit signed integer vector of 3 components type.
Definition: fwd.hpp:251
+
vec< 1, u32, highp > highp_u32vec1
High qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:376
+
vec< 2, i8, lowp > lowp_i8vec2
Low qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:225
+
mat< 4, 4, f32, lowp > lowp_f32mat4
Low single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:544
+
mat< 2, 4, f64, mediump > mediump_f64mat2x4
Medium double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:764
+
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
+
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:97
+
mat< 3, 2, f32, lowp > lowp_f32mat3x2
Low single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:675
+
mat< 4, 4, f32, highp > highp_f32mat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:700
+
mat< 2, 2, f32, mediump > mediump_f32mat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:546
+
mat< 3, 4, f64, highp > highp_f64mat3x4
High double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:777
+
float mediump_float32
Medium 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:155
+
mat< 4, 4, f32, mediump > mediump_fmat4
Medium single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:532
+
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:702
+
vec< 1, i8, highp > highp_i8vec1
High qualifier 8 bit signed integer scalar type.
Definition: fwd.hpp:234
+
vec< 4, float, highp > highp_fvec4
High Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:441
+
vec< 3, f32, lowp > lowp_f32vec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:450
+
vec< 2, u16, highp > highp_u16vec2
High qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:357
+
vec< 3, i8, mediump > mediump_i8vec3
Medium qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:231
+
mat< 2, 3, f32, lowp > lowp_f32mat2x3
Low single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:673
+
vec< 3, f64, mediump > mediump_f64vec3
Medium double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:495
+
vec< 3, f32, highp > highp_f32vec3
High single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:460
+
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
+
mat< 4, 2, f32, highp > highp_fmat4x2
High single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:658
+
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:144
+
vec< 2, u16, mediump > mediump_u16vec2
Medium qualifier 16 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:352
+
mat< 2, 4, f32, mediump > mediump_fmat2x4
Medium single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:644
+
mat< 4, 3, f32, lowp > lowp_f32mat4x3
Low single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:679
+
mat< 4, 4, f32, defaultp > fmat4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:540
+
vec< 3, i32, mediump > mediump_i32vec3
Medium qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:271
+
vec< 2, u8, mediump > mediump_u8vec2
Medium qualifier 8 bit unsigned integer vector of 2 components type.
Definition: fwd.hpp:332
+
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
+
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
+
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
+
mat< 3, 3, f32, defaultp > fmat3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:539
+
mat< 3, 4, f32, mediump > mediump_fmat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:647
+
vec< 3, int, mediump > mediump_ivec3
Medium qualifier signed integer vector of 3 components type.
Definition: fwd.hpp:211
+
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
+
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:121
+
mat< 3, 3, f64, lowp > lowp_f64mat3x3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:756
+
vec< 1, f64, highp > highp_f64vec1
High double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:498
+
mat< 3, 3, f32, lowp > lowp_fmat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:527
+
mat< 3, 3, f32, lowp > lowp_f32mat3
Low single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:543
+
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:444
+
mat< 3, 3, f32, highp > highp_f32mat3
High single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:551
+
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:116
+
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:446
+
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:704
+
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:93
+
qua< f64, mediump > mediump_f64quat
Medium double-qualifier floating-point quaternion.
Definition: fwd.hpp:1228
+
mat< 3, 4, f32, lowp > lowp_fmat3x4
Low single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:637
+
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
+
mat< 2, 2, f32, lowp > lowp_fmat2
Low single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:526
+
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:504
+
mat< 2, 2, f64, lowp > lowp_f64mat2x2
Low double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:752
+
vec< 1, u32, lowp > lowp_u32vec1
Low qualifier 32 bit unsigned integer scalar type.
Definition: fwd.hpp:366
+
detail::int64 int64
64 bit signed integer type.
+
vec< 2, i64, lowp > lowp_i64vec2
Low qualifier 64 bit signed integer vector of 2 components type.
Definition: fwd.hpp:285
+
vec< 4, u64, mediump > mediump_u64vec4
Medium qualifier 64 bit unsigned integer vector of 4 components type.
Definition: fwd.hpp:394
+
vec< 1, f64, mediump > mediump_f64vec1
Medium double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:493
+
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
+
vec< 3, i64, mediump > mediump_i64vec3
Medium qualifier 64 bit signed integer vector of 3 components type.
Definition: fwd.hpp:291
+
mat< 2, 2, f32, mediump > mediump_fmat2
Medium single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:530
+
vec< 1, i32, highp > highp_i32vec1
High qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:274
+
vec< 4, i64, mediump > mediump_i64vec4
Medium qualifier 64 bit signed integer vector of 4 components type.
Definition: fwd.hpp:292
+
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
+
mat< 3, 4, f32, mediump > mediump_f32mat3x4
Medium single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:687
+
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:790
+
float lowp_f32
Low 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:149
+
vec< 3, i32, lowp > lowp_i32vec3
Low qualifier 32 bit signed integer vector of 3 components type.
Definition: fwd.hpp:266
+
mat< 4, 4, f32, highp > highp_fmat4x4
High single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:660
+
vec< 2, i8, mediump > mediump_i8vec2
Medium qualifier 8 bit signed integer vector of 2 components type.
Definition: fwd.hpp:230
+
vec< 4, i32, highp > highp_i32vec4
High qualifier 32 bit signed integer vector of 4 components type.
Definition: fwd.hpp:277
+
mat< 2, 3, f64, lowp > lowp_f64mat2x3
Low double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:753
+
vec< 3, u32, highp > highp_u32vec3
High qualifier 32 bit unsigned integer vector of 3 components type.
Definition: fwd.hpp:378
+
vec< 1, uint, highp > highp_uvec1
High qualifier unsigned integer vector of 1 component type.
Definition: fwd.hpp:316
+
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
+
mat< 4, 2, f64, highp > highp_f64mat4x2
High double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:778
+
vec< 4, i16, mediump > mediump_i16vec4
Medium qualifier 16 bit signed integer vector of 4 components type.
Definition: fwd.hpp:252
+
vec< 3, float, mediump > mediump_fvec3
Medium Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:435
+
mat< 3, 3, f64, lowp > lowp_f64mat3
Low double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:575
+
vec< 1, i32, mediump > mediump_i32vec1
Medium qualifier 32 bit signed integer scalar type.
Definition: fwd.hpp:269
+
vec< 2, i16, lowp > lowp_i16vec2
Low qualifier 16 bit signed integer vector of 2 components type.
Definition: fwd.hpp:245
+
mat< 4, 4, f64, mediump > mediump_f64mat4
Medium double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:580
+
double lowp_f64
Low 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:165
+
vec< 3, i8, lowp > lowp_i8vec3
Low qualifier 8 bit signed integer vector of 3 components type.
Definition: fwd.hpp:226
+
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
+
mat< 2, 2, f64, highp > highp_f64mat2
High double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:582
+
vec< 3, float, lowp > lowp_fvec3
Low single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:430
+
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
+
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:168
+
mat< 3, 2, f64, highp > highp_f64mat3x2
High double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:775
+
vec< 3, f64, lowp > lowp_f64vec3
Low double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:490
+ + + + diff --git a/include/glm/doc/api/a00578.html b/include/glm/doc/api/a00578.html new file mode 100644 index 0000000..1703840 --- /dev/null +++ b/include/glm/doc/api/a00578.html @@ -0,0 +1,231 @@ + + + + + + + +1.0.2 API documentation: type_ptr.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
type_ptr.hpp File Reference
+
+
+ +

GLM_GTC_type_ptr +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 3, T, defaultp > make_mat2x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 4, T, defaultp > make_mat2x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 2, T, defaultp > make_mat3x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 4, T, defaultp > make_mat3x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 2, T, defaultp > make_mat4x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 3, T, defaultp > make_mat4x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL qua< T, defaultp > make_quat (T const *const ptr)
 Build a quaternion from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > make_vec2 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > make_vec3 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 4, T, defaultp > make_vec4 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type const * value_ptr (genType const &v)
 Return the constant address to the data of the input parameter. More...
 
+

Detailed Description

+

GLM_GTC_type_ptr

+
See also
Core features (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file type_ptr.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00578_source.html b/include/glm/doc/api/a00578_source.html new file mode 100644 index 0000000..e8824fb --- /dev/null +++ b/include/glm/doc/api/a00578_source.html @@ -0,0 +1,228 @@ + + + + + + + +1.0.2 API documentation: type_ptr.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_ptr.hpp
+
+
+Go to the documentation of this file.
1 
+
34 #pragma once
+
35 
+
36 // Dependency:
+
37 #include "../gtc/quaternion.hpp"
+
38 #include "../gtc/vec1.hpp"
+
39 #include "../vec2.hpp"
+
40 #include "../vec3.hpp"
+
41 #include "../vec4.hpp"
+
42 #include "../mat2x2.hpp"
+
43 #include "../mat2x3.hpp"
+
44 #include "../mat2x4.hpp"
+
45 #include "../mat3x2.hpp"
+
46 #include "../mat3x3.hpp"
+
47 #include "../mat3x4.hpp"
+
48 #include "../mat4x2.hpp"
+
49 #include "../mat4x3.hpp"
+
50 #include "../mat4x4.hpp"
+
51 #include <cstring>
+
52 
+
53 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
54 # pragma message("GLM: GLM_GTC_type_ptr extension included")
+
55 #endif
+
56 
+
57 namespace glm
+
58 {
+
61 
+
64  template<typename genType>
+
65  GLM_FUNC_DECL typename genType::value_type const * value_ptr(genType const& v);
+
66 
+
69  template <typename T, qualifier Q>
+
70  GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<1, T, Q> const& v);
+
71 
+
74  template <typename T, qualifier Q>
+
75  GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<2, T, Q> const& v);
+
76 
+
79  template <typename T, qualifier Q>
+
80  GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<3, T, Q> const& v);
+
81 
+
84  template <typename T, qualifier Q>
+
85  GLM_FUNC_DECL vec<1, T, Q> make_vec1(vec<4, T, Q> const& v);
+
86 
+
89  template <typename T, qualifier Q>
+
90  GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<1, T, Q> const& v);
+
91 
+
94  template <typename T, qualifier Q>
+
95  GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<2, T, Q> const& v);
+
96 
+
99  template <typename T, qualifier Q>
+
100  GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<3, T, Q> const& v);
+
101 
+
104  template <typename T, qualifier Q>
+
105  GLM_FUNC_DECL vec<2, T, Q> make_vec2(vec<4, T, Q> const& v);
+
106 
+
109  template <typename T, qualifier Q>
+
110  GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<1, T, Q> const& v);
+
111 
+
114  template <typename T, qualifier Q>
+
115  GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<2, T, Q> const& v);
+
116 
+
119  template <typename T, qualifier Q>
+
120  GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<3, T, Q> const& v);
+
121 
+
124  template <typename T, qualifier Q>
+
125  GLM_FUNC_DECL vec<3, T, Q> make_vec3(vec<4, T, Q> const& v);
+
126 
+
129  template <typename T, qualifier Q>
+
130  GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<1, T, Q> const& v);
+
131 
+
134  template <typename T, qualifier Q>
+
135  GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<2, T, Q> const& v);
+
136 
+
139  template <typename T, qualifier Q>
+
140  GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<3, T, Q> const& v);
+
141 
+
144  template <typename T, qualifier Q>
+
145  GLM_FUNC_DECL vec<4, T, Q> make_vec4(vec<4, T, Q> const& v);
+
146 
+
149  template<typename T>
+
150  GLM_FUNC_DECL vec<2, T, defaultp> make_vec2(T const * const ptr);
+
151 
+
154  template<typename T>
+
155  GLM_FUNC_DECL vec<3, T, defaultp> make_vec3(T const * const ptr);
+
156 
+
159  template<typename T>
+
160  GLM_FUNC_DECL vec<4, T, defaultp> make_vec4(T const * const ptr);
+
161 
+
164  template<typename T>
+
165  GLM_FUNC_DECL mat<2, 2, T, defaultp> make_mat2x2(T const * const ptr);
+
166 
+
169  template<typename T>
+
170  GLM_FUNC_DECL mat<2, 3, T, defaultp> make_mat2x3(T const * const ptr);
+
171 
+
174  template<typename T>
+
175  GLM_FUNC_DECL mat<2, 4, T, defaultp> make_mat2x4(T const * const ptr);
+
176 
+
179  template<typename T>
+
180  GLM_FUNC_DECL mat<3, 2, T, defaultp> make_mat3x2(T const * const ptr);
+
181 
+
184  template<typename T>
+
185  GLM_FUNC_DECL mat<3, 3, T, defaultp> make_mat3x3(T const * const ptr);
+
186 
+
189  template<typename T>
+
190  GLM_FUNC_DECL mat<3, 4, T, defaultp> make_mat3x4(T const * const ptr);
+
191 
+
194  template<typename T>
+
195  GLM_FUNC_DECL mat<4, 2, T, defaultp> make_mat4x2(T const * const ptr);
+
196 
+
199  template<typename T>
+
200  GLM_FUNC_DECL mat<4, 3, T, defaultp> make_mat4x3(T const * const ptr);
+
201 
+
204  template<typename T>
+
205  GLM_FUNC_DECL mat<4, 4, T, defaultp> make_mat4x4(T const * const ptr);
+
206 
+
209  template<typename T>
+
210  GLM_FUNC_DECL mat<2, 2, T, defaultp> make_mat2(T const * const ptr);
+
211 
+
214  template<typename T>
+
215  GLM_FUNC_DECL mat<3, 3, T, defaultp> make_mat3(T const * const ptr);
+
216 
+
219  template<typename T>
+
220  GLM_FUNC_DECL mat<4, 4, T, defaultp> make_mat4(T const * const ptr);
+
221 
+
224  template<typename T>
+
225  GLM_FUNC_DECL qua<T, defaultp> make_quat(T const * const ptr);
+
226 
+
228 }//namespace glm
+
229 
+
230 #include "type_ptr.inl"
+
+
GLM_FUNC_DECL mat< 2, 3, T, defaultp > make_mat2x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL vec< 3, T, defaultp > make_vec3(T const *const ptr)
Build a vector from a pointer.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 3, 4, T, defaultp > make_mat3x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL vec< 2, T, defaultp > make_vec2(T const *const ptr)
Build a vector from a pointer.
+
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &v)
Return the constant address to the data of the input parameter.
+
GLM_FUNC_DECL mat< 2, 4, T, defaultp > make_mat2x4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL vec< 1, T, Q > make_vec1(vec< 4, T, Q > const &v)
Build a vector from a pointer.
+
GLM_FUNC_DECL vec< 4, T, defaultp > make_vec4(T const *const ptr)
Build a vector from a pointer.
+
GLM_FUNC_DECL mat< 3, 2, T, defaultp > make_mat3x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 4, 2, T, defaultp > make_mat4x2(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL mat< 4, 3, T, defaultp > make_mat4x3(T const *const ptr)
Build a matrix from a pointer.
+
GLM_FUNC_DECL qua< T, defaultp > make_quat(T const *const ptr)
Build a quaternion from a pointer.
+ + + + diff --git a/include/glm/doc/api/a00581.html b/include/glm/doc/api/a00581.html new file mode 100644 index 0000000..ba12262 --- /dev/null +++ b/include/glm/doc/api/a00581.html @@ -0,0 +1,151 @@ + + + + + + + +1.0.2 API documentation: ulp.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ulp.hpp File Reference
+
+
+ +

GLM_GTC_ulp +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL int64 float_distance (double x, double y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
GLM_FUNC_DECL int float_distance (float x, float y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int64, Q > float_distance (vec< L, double, Q > const &x, vec< L, double, Q > const &y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > float_distance (vec< L, float, Q > const &x, vec< L, float, Q > const &y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType x)
 Return the next ULP value(s) after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x)
 Return the next ULP value(s) after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

GLM_GTC_ulp

+
See also
Core features (dependence)
+ +

Definition in file ulp.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00581_source.html b/include/glm/doc/api/a00581_source.html new file mode 100644 index 0000000..b07ab47 --- /dev/null +++ b/include/glm/doc/api/a00581_source.html @@ -0,0 +1,144 @@ + + + + + + + +1.0.2 API documentation: ulp.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ulp.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependencies
+
18 #include "../detail/setup.hpp"
+
19 #include "../detail/qualifier.hpp"
+
20 #include "../detail/_vectorize.hpp"
+
21 #include "../ext/scalar_int_sized.hpp"
+
22 
+
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTC_ulp extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
37  template<typename genType>
+
38  GLM_FUNC_DECL genType next_float(genType x);
+
39 
+
45  template<typename genType>
+
46  GLM_FUNC_DECL genType prev_float(genType x);
+
47 
+
53  template<typename genType>
+
54  GLM_FUNC_DECL genType next_float(genType x, int ULPs);
+
55 
+
61  template<typename genType>
+
62  GLM_FUNC_DECL genType prev_float(genType x, int ULPs);
+
63 
+
67  GLM_FUNC_DECL int float_distance(float x, float y);
+
68 
+
72  GLM_FUNC_DECL int64 float_distance(double x, double y);
+
73 
+
81  template<length_t L, typename T, qualifier Q>
+
82  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x);
+
83 
+
91  template<length_t L, typename T, qualifier Q>
+
92  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, int ULPs);
+
93 
+
101  template<length_t L, typename T, qualifier Q>
+
102  GLM_FUNC_DECL vec<L, T, Q> next_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
+
103 
+
111  template<length_t L, typename T, qualifier Q>
+
112  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x);
+
113 
+
121  template<length_t L, typename T, qualifier Q>
+
122  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, int ULPs);
+
123 
+
131  template<length_t L, typename T, qualifier Q>
+
132  GLM_FUNC_DECL vec<L, T, Q> prev_float(vec<L, T, Q> const& x, vec<L, int, Q> const& ULPs);
+
133 
+
140  template<length_t L, typename T, qualifier Q>
+
141  GLM_FUNC_DECL vec<L, int, Q> float_distance(vec<L, float, Q> const& x, vec<L, float, Q> const& y);
+
142 
+
149  template<length_t L, typename T, qualifier Q>
+
150  GLM_FUNC_DECL vec<L, int64, Q> float_distance(vec<L, double, Q> const& x, vec<L, double, Q> const& y);
+
151 
+
153 }//namespace glm
+
154 
+
155 #include "ulp.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > prev_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
Return the value(s) ULP distance before the input value(s).
+
GLM_FUNC_DECL vec< L, int64, Q > float_distance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)
Return the distance in the number of ULP between 2 double-precision floating-point scalars.
+
GLM_FUNC_DECL vec< L, T, Q > next_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
Return the value(s) ULP distance after the input value(s).
+
detail::int64 int64
64 bit signed integer type.
+ + + + diff --git a/include/glm/doc/api/a00584.html b/include/glm/doc/api/a00584.html new file mode 100644 index 0000000..8927ab2 --- /dev/null +++ b/include/glm/doc/api/a00584.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: vec1.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec1.hpp File Reference
+
+
+ +

GLM_GTC_vec1 +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTC_vec1

+
See also
Core features (dependence)
+ +

Definition in file vec1.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00584_source.html b/include/glm/doc/api/a00584_source.html new file mode 100644 index 0000000..6968764 --- /dev/null +++ b/include/glm/doc/api/a00584_source.html @@ -0,0 +1,100 @@ + + + + + + + +1.0.2 API documentation: vec1.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec1.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../ext/vector_bool1.hpp"
+
17 #include "../ext/vector_bool1_precision.hpp"
+
18 #include "../ext/vector_float1.hpp"
+
19 #include "../ext/vector_float1_precision.hpp"
+
20 #include "../ext/vector_double1.hpp"
+
21 #include "../ext/vector_double1_precision.hpp"
+
22 #include "../ext/vector_int1.hpp"
+
23 #include "../ext/vector_int1_sized.hpp"
+
24 #include "../ext/vector_uint1.hpp"
+
25 #include "../ext/vector_uint1_sized.hpp"
+
26 
+
27 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
28 # pragma message("GLM: GLM_GTC_vec1 extension included")
+
29 #endif
+
30 
+
+ + + + diff --git a/include/glm/doc/api/a00587.html b/include/glm/doc/api/a00587.html new file mode 100644 index 0000000..2f85eb0 --- /dev/null +++ b/include/glm/doc/api/a00587.html @@ -0,0 +1,187 @@ + + + + + + + +1.0.2 API documentation: associated_min_max.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
associated_min_max.hpp File Reference
+
+
+ +

GLM_GTX_associated_min_max +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c, T w, U d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c)
 Minimum comparison between 3 variables and returns 3 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c, T w, U d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)
 Minimum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
+

Detailed Description

+

GLM_GTX_associated_min_max

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file associated_min_max.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00587_source.html b/include/glm/doc/api/a00587_source.html new file mode 100644 index 0000000..dcd29a0 --- /dev/null +++ b/include/glm/doc/api/a00587_source.html @@ -0,0 +1,229 @@ + + + + + + + +1.0.2 API documentation: associated_min_max.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
associated_min_max.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_associated_min_max extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename T, typename U>
+
33  GLM_FUNC_DECL U associatedMin(T x, U a, T y, U b);
+
34 
+
37  template<length_t L, typename T, typename U, qualifier Q>
+
38  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
39  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
40  vec<L, T, Q> const& y, vec<L, U, Q> const& b);
+
41 
+
44  template<length_t L, typename T, typename U, qualifier Q>
+
45  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
46  T x, const vec<L, U, Q>& a,
+
47  T y, const vec<L, U, Q>& b);
+
48 
+
51  template<length_t L, typename T, typename U, qualifier Q>
+
52  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
53  vec<L, T, Q> const& x, U a,
+
54  vec<L, T, Q> const& y, U b);
+
55 
+
58  template<typename T, typename U>
+
59  GLM_FUNC_DECL U associatedMin(
+
60  T x, U a,
+
61  T y, U b,
+
62  T z, U c);
+
63 
+
66  template<length_t L, typename T, typename U, qualifier Q>
+
67  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
68  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
69  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
+
70  vec<L, T, Q> const& z, vec<L, U, Q> const& c);
+
71 
+
74  template<typename T, typename U>
+
75  GLM_FUNC_DECL U associatedMin(
+
76  T x, U a,
+
77  T y, U b,
+
78  T z, U c,
+
79  T w, U d);
+
80 
+
83  template<length_t L, typename T, typename U, qualifier Q>
+
84  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
85  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
86  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
+
87  vec<L, T, Q> const& z, vec<L, U, Q> const& c,
+
88  vec<L, T, Q> const& w, vec<L, U, Q> const& d);
+
89 
+
92  template<length_t L, typename T, typename U, qualifier Q>
+
93  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
94  T x, vec<L, U, Q> const& a,
+
95  T y, vec<L, U, Q> const& b,
+
96  T z, vec<L, U, Q> const& c,
+
97  T w, vec<L, U, Q> const& d);
+
98 
+
101  template<length_t L, typename T, typename U, qualifier Q>
+
102  GLM_FUNC_DECL vec<L, U, Q> associatedMin(
+
103  vec<L, T, Q> const& x, U a,
+
104  vec<L, T, Q> const& y, U b,
+
105  vec<L, T, Q> const& z, U c,
+
106  vec<L, T, Q> const& w, U d);
+
107 
+
110  template<typename T, typename U>
+
111  GLM_FUNC_DECL U associatedMax(T x, U a, T y, U b);
+
112 
+
115  template<length_t L, typename T, typename U, qualifier Q>
+
116  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
117  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
118  vec<L, T, Q> const& y, vec<L, U, Q> const& b);
+
119 
+
122  template<length_t L, typename T, typename U, qualifier Q>
+
123  GLM_FUNC_DECL vec<L, T, Q> associatedMax(
+
124  T x, vec<L, U, Q> const& a,
+
125  T y, vec<L, U, Q> const& b);
+
126 
+
129  template<length_t L, typename T, typename U, qualifier Q>
+
130  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
131  vec<L, T, Q> const& x, U a,
+
132  vec<L, T, Q> const& y, U b);
+
133 
+
136  template<typename T, typename U>
+
137  GLM_FUNC_DECL U associatedMax(
+
138  T x, U a,
+
139  T y, U b,
+
140  T z, U c);
+
141 
+
144  template<length_t L, typename T, typename U, qualifier Q>
+
145  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
146  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
147  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
+
148  vec<L, T, Q> const& z, vec<L, U, Q> const& c);
+
149 
+
152  template<length_t L, typename T, typename U, qualifier Q>
+
153  GLM_FUNC_DECL vec<L, T, Q> associatedMax(
+
154  T x, vec<L, U, Q> const& a,
+
155  T y, vec<L, U, Q> const& b,
+
156  T z, vec<L, U, Q> const& c);
+
157 
+
160  template<length_t L, typename T, typename U, qualifier Q>
+
161  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
162  vec<L, T, Q> const& x, U a,
+
163  vec<L, T, Q> const& y, U b,
+
164  vec<L, T, Q> const& z, U c);
+
165 
+
168  template<typename T, typename U>
+
169  GLM_FUNC_DECL U associatedMax(
+
170  T x, U a,
+
171  T y, U b,
+
172  T z, U c,
+
173  T w, U d);
+
174 
+
177  template<length_t L, typename T, typename U, qualifier Q>
+
178  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
179  vec<L, T, Q> const& x, vec<L, U, Q> const& a,
+
180  vec<L, T, Q> const& y, vec<L, U, Q> const& b,
+
181  vec<L, T, Q> const& z, vec<L, U, Q> const& c,
+
182  vec<L, T, Q> const& w, vec<L, U, Q> const& d);
+
183 
+
186  template<length_t L, typename T, typename U, qualifier Q>
+
187  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
188  T x, vec<L, U, Q> const& a,
+
189  T y, vec<L, U, Q> const& b,
+
190  T z, vec<L, U, Q> const& c,
+
191  T w, vec<L, U, Q> const& d);
+
192 
+
195  template<length_t L, typename T, typename U, qualifier Q>
+
196  GLM_FUNC_DECL vec<L, U, Q> associatedMax(
+
197  vec<L, T, Q> const& x, U a,
+
198  vec<L, T, Q> const& y, U b,
+
199  vec<L, T, Q> const& z, U c,
+
200  vec<L, T, Q> const& w, U d);
+
201 
+
203 } //namespace glm
+
204 
+
205 #include "associated_min_max.inl"
+
+
GLM_FUNC_DECL vec< L, U, Q > associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
Maximum comparison between 4 variables and returns 4 associated variable values.
+
GLM_FUNC_DECL vec< L, U, Q > associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
Minimum comparison between 4 variables and returns 4 associated variable values.
+ + + + diff --git a/include/glm/doc/api/a00590.html b/include/glm/doc/api/a00590.html new file mode 100644 index 0000000..97e52b9 --- /dev/null +++ b/include/glm/doc/api/a00590.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: bit.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
bit.hpp File Reference
+
+
+ +

GLM_GTX_bit +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType highestBitValue (genIUType Value)
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > highestBitValue (vec< L, T, Q > const &value)
 Find the highest bit set to 1 in a integer variable and return its value. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType lowestBitValue (genIUType Value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove (genIUType Value)
 Return the power of two number which value is just higher the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoAbove (vec< L, T, Q > const &value)
 Return the power of two number which value is just higher the input value. More...
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow (genIUType Value)
 Return the power of two number which value is just lower the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoBelow (vec< L, T, Q > const &value)
 Return the power of two number which value is just lower the input value. More...
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest (genIUType Value)
 Return the power of two number which value is the closet to the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoNearest (vec< L, T, Q > const &value)
 Return the power of two number which value is the closet to the input value. More...
 
+

Detailed Description

+

GLM_GTX_bit

+
See also
Core features (dependence)
+ +

Definition in file bit.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00590_source.html b/include/glm/doc/api/a00590_source.html new file mode 100644 index 0000000..f78a295 --- /dev/null +++ b/include/glm/doc/api/a00590_source.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: bit.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
bit.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../gtc/bitfield.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_bit extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
30  template<typename genIUType>
+
31  GLM_FUNC_DECL genIUType highestBitValue(genIUType Value);
+
32 
+
34  template<typename genIUType>
+
35  GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value);
+
36 
+
40  template<length_t L, typename T, qualifier Q>
+
41  GLM_FUNC_DECL vec<L, T, Q> highestBitValue(vec<L, T, Q> const& value);
+
42 
+
48  template<typename genIUType>
+
49  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove(genIUType Value);
+
50 
+
56  template<length_t L, typename T, qualifier Q>
+
57  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoAbove(vec<L, T, Q> const& value);
+
58 
+
64  template<typename genIUType>
+
65  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow(genIUType Value);
+
66 
+
72  template<length_t L, typename T, qualifier Q>
+
73  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoBelow(vec<L, T, Q> const& value);
+
74 
+
80  template<typename genIUType>
+
81  GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest(genIUType Value);
+
82 
+
88  template<length_t L, typename T, qualifier Q>
+
89  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> powerOfTwoNearest(vec<L, T, Q> const& value);
+
90 
+
92 } //namespace glm
+
93 
+
94 
+
95 #include "bit.inl"
+
96 
+
+
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoNearest(vec< L, T, Q > const &value)
Return the power of two number which value is the closet to the input value.
+
GLM_FUNC_DECL vec< L, T, Q > highestBitValue(vec< L, T, Q > const &value)
Find the highest bit set to 1 in a integer variable and return its value.
+
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoBelow(vec< L, T, Q > const &value)
Return the power of two number which value is just lower the input value.
+
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoAbove(vec< L, T, Q > const &value)
Return the power of two number which value is just higher the input value.
+
GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value)
+ + + + diff --git a/include/glm/doc/api/a00593.html b/include/glm/doc/api/a00593.html new file mode 100644 index 0000000..c2041fd --- /dev/null +++ b/include/glm/doc/api/a00593.html @@ -0,0 +1,106 @@ + + + + + + + +1.0.2 API documentation: closest_point.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
closest_point.hpp File Reference
+
+
+ +

GLM_GTX_closest_point +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > closestPointOnLine (vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)
 2d lines work as well
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > closestPointOnLine (vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)
 Find the point on a straight line which is the closet of a point. More...
 
+

Detailed Description

+

GLM_GTX_closest_point

+
See also
Core features (dependence)
+ +

Definition in file closest_point.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00593_source.html b/include/glm/doc/api/a00593_source.html new file mode 100644 index 0000000..dcd8c5a --- /dev/null +++ b/include/glm/doc/api/a00593_source.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: closest_point.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
closest_point.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_closest_point extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T, qualifier Q>
+
32  GLM_FUNC_DECL vec<3, T, Q> closestPointOnLine(
+
33  vec<3, T, Q> const& point,
+
34  vec<3, T, Q> const& a,
+
35  vec<3, T, Q> const& b);
+
36 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_DECL vec<2, T, Q> closestPointOnLine(
+
40  vec<2, T, Q> const& point,
+
41  vec<2, T, Q> const& a,
+
42  vec<2, T, Q> const& b);
+
43 
+
45 }// namespace glm
+
46 
+
47 #include "closest_point.inl"
+
+
GLM_FUNC_DECL vec< 2, T, Q > closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)
2d lines work as well
+ + + + diff --git a/include/glm/doc/api/a00596.html b/include/glm/doc/api/a00596.html new file mode 100644 index 0000000..dd2b46a --- /dev/null +++ b/include/glm/doc/api/a00596.html @@ -0,0 +1,119 @@ + + + + + + + +1.0.2 API documentation: color_encoding.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
color_encoding.hpp File Reference
+
+
+ +

GLM_GTX_color_encoding +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ (vec< 3, T, Q > const &ColorD65XYZ)
 Convert a D65 YUV color to D50 YUV.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB (vec< 3, T, Q > const &ColorD65XYZ)
 Convert a D65 YUV color to linear sRGB.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ (vec< 3, T, Q > const &ColorLinearSRGB)
 Convert a linear sRGB color to D50 YUV.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ (vec< 3, T, Q > const &ColorLinearSRGB)
 Convert a linear sRGB color to D65 YUV.
 
+

Detailed Description

+

GLM_GTX_color_encoding

+
See also
Core features (dependence)
+
+GLM_GTX_color_encoding (dependence)
+ +

Definition in file color_encoding.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00596_source.html b/include/glm/doc/api/a00596_source.html new file mode 100644 index 0000000..010edcf --- /dev/null +++ b/include/glm/doc/api/a00596_source.html @@ -0,0 +1,118 @@ + + + + + + + +1.0.2 API documentation: color_encoding.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
color_encoding.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 #include "../vec3.hpp"
+
20 #include <limits>
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTC_color_encoding is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTC_color_encoding extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
34  template<typename T, qualifier Q>
+
35  GLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD65XYZ(vec<3, T, Q> const& ColorLinearSRGB);
+
36 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_DECL vec<3, T, Q> convertLinearSRGBToD50XYZ(vec<3, T, Q> const& ColorLinearSRGB);
+
40 
+
42  template<typename T, qualifier Q>
+
43  GLM_FUNC_DECL vec<3, T, Q> convertD65XYZToLinearSRGB(vec<3, T, Q> const& ColorD65XYZ);
+
44 
+
46  template<typename T, qualifier Q>
+
47  GLM_FUNC_DECL vec<3, T, Q> convertD65XYZToD50XYZ(vec<3, T, Q> const& ColorD65XYZ);
+
48 
+
50 } //namespace glm
+
51 
+
52 #include "color_encoding.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to D50 YUV.
+
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB(vec< 3, T, Q > const &ColorD65XYZ)
Convert a D65 YUV color to linear sRGB.
+
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D65 YUV.
+
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ(vec< 3, T, Q > const &ColorLinearSRGB)
Convert a linear sRGB color to D50 YUV.
+ + + + diff --git a/include/glm/doc/api/a00599.html b/include/glm/doc/api/a00599.html new file mode 100644 index 0000000..d15bba9 --- /dev/null +++ b/include/glm/doc/api/a00599.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: color_space_YCoCg.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
color_space_YCoCg.hpp File Reference
+
+
+ +

GLM_GTX_color_space_YCoCg +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg (vec< 3, T, Q > const &rgbColor)
 Convert a color from RGB color space to YCoCg color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR (vec< 3, T, Q > const &rgbColor)
 Convert a color from RGB color space to YCoCgR color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb (vec< 3, T, Q > const &YCoCgColor)
 Convert a color from YCoCg color space to RGB color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb (vec< 3, T, Q > const &YCoCgColor)
 Convert a color from YCoCgR color space to RGB color space. More...
 
+

Detailed Description

+

GLM_GTX_color_space_YCoCg

+
See also
Core features (dependence)
+ +

Definition in file color_space_YCoCg.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00599_source.html b/include/glm/doc/api/a00599_source.html new file mode 100644 index 0000000..7b8fb4f --- /dev/null +++ b/include/glm/doc/api/a00599_source.html @@ -0,0 +1,120 @@ + + + + + + + +1.0.2 API documentation: color_space_YCoCg.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
color_space_YCoCg.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T, qualifier Q>
+
32  GLM_FUNC_DECL vec<3, T, Q> rgb2YCoCg(
+
33  vec<3, T, Q> const& rgbColor);
+
34 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL vec<3, T, Q> YCoCg2rgb(
+
39  vec<3, T, Q> const& YCoCgColor);
+
40 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL vec<3, T, Q> rgb2YCoCgR(
+
46  vec<3, T, Q> const& rgbColor);
+
47 
+
51  template<typename T, qualifier Q>
+
52  GLM_FUNC_DECL vec<3, T, Q> YCoCgR2rgb(
+
53  vec<3, T, Q> const& YCoCgColor);
+
54 
+
56 }//namespace glm
+
57 
+
58 #include "color_space_YCoCg.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR(vec< 3, T, Q > const &rgbColor)
Convert a color from RGB color space to YCoCgR color space.
+
GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb(vec< 3, T, Q > const &YCoCgColor)
Convert a color from YCoCgR color space to RGB color space.
+
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg(vec< 3, T, Q > const &rgbColor)
Convert a color from RGB color space to YCoCg color space.
+
GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb(vec< 3, T, Q > const &YCoCgColor)
Convert a color from YCoCg color space to RGB color space.
+
GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
+ + + + diff --git a/include/glm/doc/api/a00602.html b/include/glm/doc/api/a00602.html new file mode 100644 index 0000000..6f00996 --- /dev/null +++ b/include/glm/doc/api/a00602.html @@ -0,0 +1,430 @@ + + + + + + + +1.0.2 API documentation: compatibility.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
compatibility.hpp File Reference
+
+
+ +

GLM_GTX_compatibility +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef bool bool1
 boolean type with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef bool bool1x1
 boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, bool, highp > bool2
 boolean type with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, bool, highp > bool2x2
 boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, bool, highp > bool2x3
 boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, bool, highp > bool2x4
 boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, bool, highp > bool3
 boolean type with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, bool, highp > bool3x2
 boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, bool, highp > bool3x3
 boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, bool, highp > bool3x4
 boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, bool, highp > bool4
 boolean type with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, bool, highp > bool4x2
 boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, bool, highp > bool4x3
 boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, bool, highp > bool4x4
 boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef double double1
 double-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef double double1x1
 double-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, double, highp > double2
 double-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, double, highp > double2x2
 double-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, double, highp > double2x3
 double-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, double, highp > double2x4
 double-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, double, highp > double3
 double-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, double, highp > double3x2
 double-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, double, highp > double3x3
 double-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, double, highp > double3x4
 double-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, double, highp > double4
 double-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, double, highp > double4x2
 double-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, double, highp > double4x3
 double-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, double, highp > double4x4
 double-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef float float1
 single-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef float float1x1
 single-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, float, highp > float2
 single-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, float, highp > float2x2
 single-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, float, highp > float2x3
 single-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, float, highp > float2x4
 single-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, float, highp > float3
 single-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, float, highp > float3x2
 single-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, float, highp > float3x3
 single-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, float, highp > float3x4
 single-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, float, highp > float4
 single-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, float, highp > float4x2
 single-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, float, highp > float4x3
 single-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, float, highp > float4x4
 single-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef int int1
 integer vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef int int1x1
 integer matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, int, highp > int2
 integer vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, int, highp > int2x2
 integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, int, highp > int2x3
 integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, int, highp > int2x4
 integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, int, highp > int3
 integer vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, int, highp > int3x2
 integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, int, highp > int3x3
 integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, int, highp > int3x4
 integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, int, highp > int4
 integer vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, int, highp > int4x2
 integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, int, highp > int4x3
 integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, int, highp > int4x4
 integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > atan2 (const vec< 2, T, Q > &y, const vec< 2, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > atan2 (const vec< 3, T, Q > &y, const vec< 3, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > atan2 (const vec< 4, T, Q > &y, const vec< 4, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T y, T x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isfinite (const qua< T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, bool, Q > isfinite (const vec< 1, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, bool, Q > isfinite (const vec< 2, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, bool, Q > isfinite (const vec< 3, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isfinite (const vec< 4, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename genType >
GLM_FUNC_DECL bool isfinite (genType const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > lerp (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > lerp (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > lerp (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > lerp (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > lerp (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > lerp (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > saturate (const vec< 2, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > saturate (const vec< 3, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > saturate (const vec< 4, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+

Detailed Description

+

GLM_GTX_compatibility

+
See also
Core features (dependence)
+ +

Definition in file compatibility.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00602_source.html b/include/glm/doc/api/a00602_source.html new file mode 100644 index 0000000..3642824 --- /dev/null +++ b/include/glm/doc/api/a00602_source.html @@ -0,0 +1,262 @@ + + + + + + + +1.0.2 API documentation: compatibility.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
compatibility.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../gtc/quaternion.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_compatibility is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_compatibility extension included")
+
23 #endif
+
24 
+
25 #if GLM_COMPILER & GLM_COMPILER_VC
+
26 # include <cfloat>
+
27 #elif GLM_COMPILER & GLM_COMPILER_GCC
+
28 # include <cmath>
+
29 # if(GLM_PLATFORM & GLM_PLATFORM_ANDROID)
+
30 # undef isfinite
+
31 # endif
+
32 #endif//GLM_COMPILER
+
33 
+
34 namespace glm
+
35 {
+
38 
+
39  template<typename T> GLM_FUNC_QUALIFIER T lerp(T x, T y, T a){return mix(x, y, a);}
+
40  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> lerp(const vec<2, T, Q>& x, const vec<2, T, Q>& y, T a){return mix(x, y, a);}
+
41 
+
42  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> lerp(const vec<3, T, Q>& x, const vec<3, T, Q>& y, T a){return mix(x, y, a);}
+
43  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> lerp(const vec<4, T, Q>& x, const vec<4, T, Q>& y, T a){return mix(x, y, a);}
+
44  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> lerp(const vec<2, T, Q>& x, const vec<2, T, Q>& y, const vec<2, T, Q>& a){return mix(x, y, a);}
+
45  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> lerp(const vec<3, T, Q>& x, const vec<3, T, Q>& y, const vec<3, T, Q>& a){return mix(x, y, a);}
+
46  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> lerp(const vec<4, T, Q>& x, const vec<4, T, Q>& y, const vec<4, T, Q>& a){return mix(x, y, a);}
+
47 
+
48  template<typename T> GLM_FUNC_QUALIFIER T saturate(T x){return clamp(x, T(0), T(1));}
+
49  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> saturate(const vec<2, T, Q>& x){return clamp(x, T(0), T(1));}
+
50  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> saturate(const vec<3, T, Q>& x){return clamp(x, T(0), T(1));}
+
51  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> saturate(const vec<4, T, Q>& x){return clamp(x, T(0), T(1));}
+
52 
+
53  template<typename T> GLM_FUNC_QUALIFIER T atan2(T y, T x){return atan(y, x);}
+
54  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<2, T, Q> atan2(const vec<2, T, Q>& y, const vec<2, T, Q>& x){return atan(y, x);}
+
55  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<3, T, Q> atan2(const vec<3, T, Q>& y, const vec<3, T, Q>& x){return atan(y, x);}
+
56  template<typename T, qualifier Q> GLM_FUNC_QUALIFIER vec<4, T, Q> atan2(const vec<4, T, Q>& y, const vec<4, T, Q>& x){return atan(y, x);}
+
57 
+
58  template<typename genType> GLM_FUNC_DECL bool isfinite(genType const& x);
+
59  template<typename T, qualifier Q> GLM_FUNC_DECL vec<1, bool, Q> isfinite(const vec<1, T, Q>& x);
+
60  template<typename T, qualifier Q> GLM_FUNC_DECL vec<2, bool, Q> isfinite(const vec<2, T, Q>& x);
+
61  template<typename T, qualifier Q> GLM_FUNC_DECL vec<3, bool, Q> isfinite(const vec<3, T, Q>& x);
+
62  template<typename T, qualifier Q> GLM_FUNC_DECL vec<4, bool, Q> isfinite(const vec<4, T, Q>& x);
+
63  template<typename T, qualifier Q> GLM_FUNC_DECL vec<4, bool, Q> isfinite(const qua<T, Q>& x);
+
64 
+
65  typedef bool bool1;
+
66  typedef vec<2, bool, highp> bool2;
+
67  typedef vec<3, bool, highp> bool3;
+
68  typedef vec<4, bool, highp> bool4;
+
69 
+
70  typedef bool bool1x1;
+
71  typedef mat<2, 2, bool, highp> bool2x2;
+
72  typedef mat<2, 3, bool, highp> bool2x3;
+
73  typedef mat<2, 4, bool, highp> bool2x4;
+
74  typedef mat<3, 2, bool, highp> bool3x2;
+
75  typedef mat<3, 3, bool, highp> bool3x3;
+
76  typedef mat<3, 4, bool, highp> bool3x4;
+
77  typedef mat<4, 2, bool, highp> bool4x2;
+
78  typedef mat<4, 3, bool, highp> bool4x3;
+
79  typedef mat<4, 4, bool, highp> bool4x4;
+
80 
+
81  typedef int int1;
+
82  typedef vec<2, int, highp> int2;
+
83  typedef vec<3, int, highp> int3;
+
84  typedef vec<4, int, highp> int4;
+
85 
+
86  typedef int int1x1;
+
87  typedef mat<2, 2, int, highp> int2x2;
+
88  typedef mat<2, 3, int, highp> int2x3;
+
89  typedef mat<2, 4, int, highp> int2x4;
+
90  typedef mat<3, 2, int, highp> int3x2;
+
91  typedef mat<3, 3, int, highp> int3x3;
+
92  typedef mat<3, 4, int, highp> int3x4;
+
93  typedef mat<4, 2, int, highp> int4x2;
+
94  typedef mat<4, 3, int, highp> int4x3;
+
95  typedef mat<4, 4, int, highp> int4x4;
+
96 
+
97  typedef float float1;
+
98  typedef vec<2, float, highp> float2;
+
99  typedef vec<3, float, highp> float3;
+
100  typedef vec<4, float, highp> float4;
+
101 
+
102  typedef float float1x1;
+
103  typedef mat<2, 2, float, highp> float2x2;
+
104  typedef mat<2, 3, float, highp> float2x3;
+
105  typedef mat<2, 4, float, highp> float2x4;
+
106  typedef mat<3, 2, float, highp> float3x2;
+
107  typedef mat<3, 3, float, highp> float3x3;
+
108  typedef mat<3, 4, float, highp> float3x4;
+
109  typedef mat<4, 2, float, highp> float4x2;
+
110  typedef mat<4, 3, float, highp> float4x3;
+
111  typedef mat<4, 4, float, highp> float4x4;
+
112 
+
113  typedef double double1;
+
114  typedef vec<2, double, highp> double2;
+
115  typedef vec<3, double, highp> double3;
+
116  typedef vec<4, double, highp> double4;
+
117 
+
118  typedef double double1x1;
+
119  typedef mat<2, 2, double, highp> double2x2;
+
120  typedef mat<2, 3, double, highp> double2x3;
+
121  typedef mat<2, 4, double, highp> double2x4;
+
122  typedef mat<3, 2, double, highp> double3x2;
+
123  typedef mat<3, 3, double, highp> double3x3;
+
124  typedef mat<3, 4, double, highp> double3x4;
+
125  typedef mat<4, 2, double, highp> double4x2;
+
126  typedef mat<4, 3, double, highp> double4x3;
+
127  typedef mat<4, 4, double, highp> double4x4;
+
128 
+
130 }//namespace glm
+
131 
+
132 #include "compatibility.inl"
+
+
mat< 2, 3, bool, highp > bool2x3
boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 2, float, highp > float2x2
single-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 2, int, highp > int3x2
integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 2, double, highp > double4x2
double-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 3, double, highp > double2x3
double-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
vec< 4, int, highp > int4
integer vector with 4 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 4, bool, highp > bool4x4
boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 4, int, highp > int4x4
integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL vec< L, T, Q > atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)
Arc tangent.
+
mat< 4, 3, float, highp > float4x3
single-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
vec< 4, double, highp > double4
double-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_QUALIFIER vec< 4, T, Q > atan2(const vec< 4, T, Q > &y, const vec< 4, T, Q > &x)
Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what q...
+
float float1x1
single-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
+
vec< 3, bool, highp > bool3
boolean type with 3 components. (From GLM_GTX_compatibility extension)
+
vec< 3, double, highp > double3
double-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 3, double, highp > double4x3
double-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 4, double, highp > double2x4
double-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
bool bool1
boolean type with 1 component. (From GLM_GTX_compatibility extension)
+
mat< 2, 4, float, highp > float2x4
single-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 3, bool, highp > bool4x3
boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 2, float, highp > float3x2
single-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 2, int, highp > int4x2
integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 4, float, highp > float3x4
single-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 4, int, highp > int2x4
integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
vec< 2, int, highp > int2
integer vector with 2 components. (From GLM_GTX_compatibility extension)
+
vec< 3, float, highp > float3
single-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 3, float, highp > float3x3
single-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
double double1x1
double-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
+
int int1
integer vector with 1 component. (From GLM_GTX_compatibility extension)
+
mat< 3, 2, bool, highp > bool3x2
boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 2, bool, highp > bool4x2
boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 3, bool, highp > bool3x3
boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 3, int, highp > int2x3
integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 4, float, highp > float4x4
single-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 2, bool, highp > bool2x2
boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
int int1x1
integer matrix with 1 component. (From GLM_GTX_compatibility extension)
+
mat< 3, 4, int, highp > int3x4
integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL vec< 4, bool, Q > isfinite(const qua< T, Q > &x)
Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
+
GLM_FUNC_QUALIFIER vec< 4, T, Q > lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)
Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using v...
+
mat< 3, 3, int, highp > int3x3
integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
vec< 4, float, highp > float4
single-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
+
vec< 2, double, highp > double2
double-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_DECL GLM_CONSTEXPR genType clamp(genType x, genType minVal, genType maxVal)
Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...
+
mat< 4, 3, int, highp > int4x3
integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 4, double, highp > double4x4
double-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
+
vec< 2, bool, highp > bool2
boolean type with 2 components. (From GLM_GTX_compatibility extension)
+
vec< 4, bool, highp > bool4
boolean type with 4 components. (From GLM_GTX_compatibility extension)
+
float float1
single-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
+
mat< 2, 3, float, highp > float2x3
single-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
+
double double1
double-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
+
mat< 3, 4, double, highp > double3x4
double-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 2, double, highp > double3x2
double-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 3, double, highp > double3x3
double-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
+
bool bool1x1
boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
+
mat< 2, 2, int, highp > int2x2
integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 4, bool, highp > bool2x4
boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 4, 2, float, highp > float4x2
single-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
+
vec< 3, int, highp > int3
integer vector with 3 components. (From GLM_GTX_compatibility extension)
+
mat< 3, 4, bool, highp > bool3x4
boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
+
mat< 2, 2, double, highp > double2x2
double-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
+
vec< 2, float, highp > float2
single-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
+
GLM_FUNC_QUALIFIER vec< 4, T, Q > saturate(const vec< 4, T, Q > &x)
Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
+ + + + diff --git a/include/glm/doc/api/a00605.html b/include/glm/doc/api/a00605.html new file mode 100644 index 0000000..06a3a52 --- /dev/null +++ b/include/glm/doc/api/a00605.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: component_wise.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
component_wise.hpp File Reference
+
+
+ +

GLM_GTX_component_wise +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type compAdd (genType const &v)
 Add all vector components together. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMax (genType const &v)
 Find the maximum value between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMin (genType const &v)
 Find the minimum value between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMul (genType const &v)
 Multiply all vector components together. More...
 
template<typename floatType , length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > compNormalize (vec< L, T, Q > const &v)
 Convert an integer vector to a normalized float vector. More...
 
template<length_t L, typename T , typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > compScale (vec< L, floatType, Q > const &v)
 Convert a normalized float vector to an integer vector. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type fcompMax (genType const &v)
 Find the maximum float between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type fcompMin (genType const &v)
 Find the minimum float between single vector components. More...
 
+

Detailed Description

+

GLM_GTX_component_wise

+
Date
2007-05-21 / 2011-06-07
+
Author
Christophe Riccio
+
See also
Core features (dependence)
+ +

Definition in file component_wise.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00605_source.html b/include/glm/doc/api/a00605_source.html new file mode 100644 index 0000000..8f29b69 --- /dev/null +++ b/include/glm/doc/api/a00605_source.html @@ -0,0 +1,132 @@ + + + + + + + +1.0.2 API documentation: component_wise.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
component_wise.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependencies
+
18 #include "../detail/setup.hpp"
+
19 #include "../detail/qualifier.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_component_wise is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_component_wise extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
35  template<typename floatType, length_t L, typename T, qualifier Q>
+
36  GLM_FUNC_DECL vec<L, floatType, Q> compNormalize(vec<L, T, Q> const& v);
+
37 
+
41  template<length_t L, typename T, typename floatType, qualifier Q>
+
42  GLM_FUNC_DECL vec<L, T, Q> compScale(vec<L, floatType, Q> const& v);
+
43 
+
46  template<typename genType>
+
47  GLM_FUNC_DECL typename genType::value_type compAdd(genType const& v);
+
48 
+
51  template<typename genType>
+
52  GLM_FUNC_DECL typename genType::value_type compMul(genType const& v);
+
53 
+
56  template<typename genType>
+
57  GLM_FUNC_DECL typename genType::value_type compMin(genType const& v);
+
58 
+
61  template<typename genType>
+
62  GLM_FUNC_DECL typename genType::value_type compMax(genType const& v);
+
63 
+
66  template<typename genType>
+
67  GLM_FUNC_DECL typename genType::value_type fcompMin(genType const& v);
+
68 
+
71  template<typename genType>
+
72  GLM_FUNC_DECL typename genType::value_type fcompMax(genType const& v);
+
73 
+
75 }//namespace glm
+
76 
+
77 #include "component_wise.inl"
+
+
GLM_FUNC_DECL vec< L, floatType, Q > compNormalize(vec< L, T, Q > const &v)
Convert an integer vector to a normalized float vector.
+
GLM_FUNC_DECL genType::value_type compAdd(genType const &v)
Add all vector components together.
+
GLM_FUNC_DECL genType::value_type compMax(genType const &v)
Find the maximum value between single vector components.
+
GLM_FUNC_DECL genType::value_type compMul(genType const &v)
Multiply all vector components together.
+
GLM_FUNC_DECL genType::value_type fcompMax(genType const &v)
Find the maximum float between single vector components.
+
GLM_FUNC_DECL vec< L, T, Q > compScale(vec< L, floatType, Q > const &v)
Convert a normalized float vector to an integer vector.
+
GLM_FUNC_DECL genType::value_type fcompMin(genType const &v)
Find the minimum float between single vector components.
+
GLM_FUNC_DECL genType::value_type compMin(genType const &v)
Find the minimum value between single vector components.
+ + + + diff --git a/include/glm/doc/api/a00608.html b/include/glm/doc/api/a00608.html new file mode 100644 index 0000000..3c6524b --- /dev/null +++ b/include/glm/doc/api/a00608.html @@ -0,0 +1,174 @@ + + + + + + + +1.0.2 API documentation: dual_quaternion.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
dual_quaternion.hpp File Reference
+
+
+ +

GLM_GTX_dual_quaternion +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_ddualquat ddualquat
 Dual-quaternion of default double-qualifier floating-point numbers. More...
 
typedef highp_fdualquat dualquat
 Dual-quaternion of floating-point numbers. More...
 
typedef highp_fdualquat fdualquat
 Dual-quaternion of single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, highp > highp_ddualquat
 Dual-quaternion of high double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, highp > highp_dualquat
 Dual-quaternion of high single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, highp > highp_fdualquat
 Dual-quaternion of high single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, lowp > lowp_ddualquat
 Dual-quaternion of low double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, lowp > lowp_dualquat
 Dual-quaternion of low single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, lowp > lowp_fdualquat
 Dual-quaternion of low single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, mediump > mediump_ddualquat
 Dual-quaternion of medium double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, mediump > mediump_dualquat
 Dual-quaternion of medium single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, mediump > mediump_fdualquat
 Dual-quaternion of medium single-qualifier floating-point numbers. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dual_quat_identity ()
 Creates an identity dual quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast (mat< 2, 4, T, Q > const &x)
 Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast (mat< 3, 4, T, Q > const &x)
 Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > inverse (tdualquat< T, Q > const &q)
 Returns the q inverse. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > lerp (tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)
 Returns the linear interpolation of two dual quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 4, T, Q > mat2x4_cast (tdualquat< T, Q > const &x)
 Converts a quaternion to a 2 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 4, T, Q > mat3x4_cast (tdualquat< T, Q > const &x)
 Converts a quaternion to a 3 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > normalize (tdualquat< T, Q > const &q)
 Returns the normalized quaternion. More...
 
+

Detailed Description

+

GLM_GTX_dual_quaternion

+
Author
Maksim Vorobiev (msome.nosp@m.one@.nosp@m.gmail.nosp@m..com)
+
See also
Core features (dependence)
+
+GLM_GTC_constants (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file dual_quaternion.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00608_source.html b/include/glm/doc/api/a00608_source.html new file mode 100644 index 0000000..a6fa61b --- /dev/null +++ b/include/glm/doc/api/a00608_source.html @@ -0,0 +1,296 @@ + + + + + + + +1.0.2 API documentation: dual_quaternion.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
dual_quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
16 #pragma once
+
17 
+
18 // Dependency:
+
19 #include "../glm.hpp"
+
20 #include "../gtc/constants.hpp"
+
21 #include "../gtc/quaternion.hpp"
+
22 
+
23 #ifndef GLM_ENABLE_EXPERIMENTAL
+
24 # error "GLM: GLM_GTX_dual_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
25 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_GTX_dual_quaternion extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
34  template<typename T, qualifier Q = defaultp>
+
35  struct tdualquat
+
36  {
+
37  // -- Implementation detail --
+
38 
+
39  typedef T value_type;
+
40  typedef qua<T, Q> part_type;
+
41 
+
42  // -- Data --
+
43 
+
44  qua<T, Q> real, dual;
+
45 
+
46  // -- Component accesses --
+
47 
+
48  typedef length_t length_type;
+
50  GLM_FUNC_DECL static GLM_CONSTEXPR length_type length(){return 2;}
+
51 
+
52  GLM_FUNC_DECL part_type & operator[](length_type i);
+
53  GLM_FUNC_DECL part_type const& operator[](length_type i) const;
+
54 
+
55  // -- Implicit basic constructors --
+
56 
+
57  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR tdualquat() GLM_DEFAULT;
+
58  GLM_DEFAULTED_FUNC_DECL GLM_CONSTEXPR tdualquat(tdualquat<T, Q> const& d) GLM_DEFAULT;
+
59  template<qualifier P>
+
60  GLM_CTOR_DECL tdualquat(tdualquat<T, P> const& d);
+
61 
+
62  // -- Explicit basic constructors --
+
63 
+
64  GLM_CTOR_DECL tdualquat(qua<T, Q> const& real);
+
65  GLM_CTOR_DECL tdualquat(qua<T, Q> const& orientation, vec<3, T, Q> const& translation);
+
66  GLM_CTOR_DECL tdualquat(qua<T, Q> const& real, qua<T, Q> const& dual);
+
67 
+
68  // -- Conversion constructors --
+
69 
+
70  template<typename U, qualifier P>
+
71  GLM_CTOR_DECL GLM_EXPLICIT tdualquat(tdualquat<U, P> const& q);
+
72 
+
73  GLM_CTOR_DECL GLM_EXPLICIT tdualquat(mat<2, 4, T, Q> const& holder_mat);
+
74  GLM_CTOR_DECL GLM_EXPLICIT tdualquat(mat<3, 4, T, Q> const& aug_mat);
+
75 
+
76  // -- Unary arithmetic operators --
+
77 
+
78  GLM_DEFAULTED_FUNC_DECL tdualquat<T, Q> & operator=(tdualquat<T, Q> const& m) GLM_DEFAULT;
+
79 
+
80  template<typename U>
+
81  GLM_FUNC_DISCARD_DECL tdualquat<T, Q> & operator=(tdualquat<U, Q> const& m);
+
82  template<typename U>
+
83  GLM_FUNC_DISCARD_DECL tdualquat<T, Q> & operator*=(U s);
+
84  template<typename U>
+
85  GLM_FUNC_DISCARD_DECL tdualquat<T, Q> & operator/=(U s);
+
86  };
+
87 
+
88  // -- Unary bit operators --
+
89 
+
90  template<typename T, qualifier Q>
+
91  GLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q);
+
92 
+
93  template<typename T, qualifier Q>
+
94  GLM_FUNC_DECL tdualquat<T, Q> operator-(tdualquat<T, Q> const& q);
+
95 
+
96  // -- Binary operators --
+
97 
+
98  template<typename T, qualifier Q>
+
99  GLM_FUNC_DECL tdualquat<T, Q> operator+(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);
+
100 
+
101  template<typename T, qualifier Q>
+
102  GLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, tdualquat<T, Q> const& p);
+
103 
+
104  template<typename T, qualifier Q>
+
105  GLM_FUNC_DECL vec<3, T, Q> operator*(tdualquat<T, Q> const& q, vec<3, T, Q> const& v);
+
106 
+
107  template<typename T, qualifier Q>
+
108  GLM_FUNC_DECL vec<3, T, Q> operator*(vec<3, T, Q> const& v, tdualquat<T, Q> const& q);
+
109 
+
110  template<typename T, qualifier Q>
+
111  GLM_FUNC_DECL vec<4, T, Q> operator*(tdualquat<T, Q> const& q, vec<4, T, Q> const& v);
+
112 
+
113  template<typename T, qualifier Q>
+
114  GLM_FUNC_DECL vec<4, T, Q> operator*(vec<4, T, Q> const& v, tdualquat<T, Q> const& q);
+
115 
+
116  template<typename T, qualifier Q>
+
117  GLM_FUNC_DECL tdualquat<T, Q> operator*(tdualquat<T, Q> const& q, T const& s);
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_DECL tdualquat<T, Q> operator*(T const& s, tdualquat<T, Q> const& q);
+
121 
+
122  template<typename T, qualifier Q>
+
123  GLM_FUNC_DECL tdualquat<T, Q> operator/(tdualquat<T, Q> const& q, T const& s);
+
124 
+
125  // -- Boolean operators --
+
126 
+
127  template<typename T, qualifier Q>
+
128  GLM_FUNC_DECL bool operator==(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);
+
129 
+
130  template<typename T, qualifier Q>
+
131  GLM_FUNC_DECL bool operator!=(tdualquat<T, Q> const& q1, tdualquat<T, Q> const& q2);
+
132 
+
136  template <typename T, qualifier Q>
+
137  GLM_FUNC_DECL tdualquat<T, Q> dual_quat_identity();
+
138 
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_DECL tdualquat<T, Q> normalize(tdualquat<T, Q> const& q);
+
144 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL tdualquat<T, Q> lerp(tdualquat<T, Q> const& x, tdualquat<T, Q> const& y, T const& a);
+
150 
+
154  template<typename T, qualifier Q>
+
155  GLM_FUNC_DECL tdualquat<T, Q> inverse(tdualquat<T, Q> const& q);
+
156 
+
160  template<typename T, qualifier Q>
+
161  GLM_FUNC_DECL mat<2, 4, T, Q> mat2x4_cast(tdualquat<T, Q> const& x);
+
162 
+
166  template<typename T, qualifier Q>
+
167  GLM_FUNC_DECL mat<3, 4, T, Q> mat3x4_cast(tdualquat<T, Q> const& x);
+
168 
+
172  template<typename T, qualifier Q>
+
173  GLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<2, 4, T, Q> const& x);
+
174 
+
178  template<typename T, qualifier Q>
+
179  GLM_FUNC_DECL tdualquat<T, Q> dualquat_cast(mat<3, 4, T, Q> const& x);
+
180 
+
181 
+
185  typedef tdualquat<float, lowp> lowp_dualquat;
+
186 
+
190  typedef tdualquat<float, mediump> mediump_dualquat;
+
191 
+
195  typedef tdualquat<float, highp> highp_dualquat;
+
196 
+
197 
+
201  typedef tdualquat<float, lowp> lowp_fdualquat;
+
202 
+
206  typedef tdualquat<float, mediump> mediump_fdualquat;
+
207 
+
211  typedef tdualquat<float, highp> highp_fdualquat;
+
212 
+
213 
+
217  typedef tdualquat<double, lowp> lowp_ddualquat;
+
218 
+
222  typedef tdualquat<double, mediump> mediump_ddualquat;
+
223 
+
227  typedef tdualquat<double, highp> highp_ddualquat;
+
228 
+
229 
+
230 #if(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
231  typedef highp_fdualquat dualquat;
+
235 
+ +
240 #elif(defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
241  typedef highp_fdualquat dualquat;
+
242  typedef highp_fdualquat fdualquat;
+
243 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && defined(GLM_PRECISION_MEDIUMP_FLOAT) && !defined(GLM_PRECISION_LOWP_FLOAT))
+
244  typedef mediump_fdualquat dualquat;
+ +
246 #elif(!defined(GLM_PRECISION_HIGHP_FLOAT) && !defined(GLM_PRECISION_MEDIUMP_FLOAT) && defined(GLM_PRECISION_LOWP_FLOAT))
+
247  typedef lowp_fdualquat dualquat;
+
248  typedef lowp_fdualquat fdualquat;
+
249 #else
+
250 # error "GLM error: multiple default precision requested for single-precision floating-point types"
+
251 #endif
+
252 
+
253 
+
254 #if(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
255  typedef highp_ddualquat ddualquat;
+
259 #elif(defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+
260  typedef highp_ddualquat ddualquat;
+
261 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && defined(GLM_PRECISION_MEDIUMP_DOUBLE) && !defined(GLM_PRECISION_LOWP_DOUBLE))
+ +
263 #elif(!defined(GLM_PRECISION_HIGHP_DOUBLE) && !defined(GLM_PRECISION_MEDIUMP_DOUBLE) && defined(GLM_PRECISION_LOWP_DOUBLE))
+
264  typedef lowp_ddualquat ddualquat;
+
265 #else
+
266 # error "GLM error: Multiple default precision requested for double-precision floating-point types"
+
267 #endif
+
268 
+
270 } //namespace glm
+
271 
+
272 #include "dual_quaternion.inl"
+
+
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.
+
tdualquat< float, lowp > lowp_fdualquat
Dual-quaternion of low single-qualifier floating-point numbers.
+
highp_fdualquat dualquat
Dual-quaternion of floating-point numbers.
+
tdualquat< float, mediump > mediump_fdualquat
Dual-quaternion of medium single-qualifier floating-point numbers.
+
tdualquat< double, lowp > lowp_ddualquat
Dual-quaternion of low double-qualifier floating-point numbers.
+
tdualquat< double, mediump > mediump_ddualquat
Dual-quaternion of medium double-qualifier floating-point numbers.
+
tdualquat< float, highp > highp_dualquat
Dual-quaternion of high single-qualifier floating-point numbers.
+
GLM_FUNC_DECL tdualquat< T, Q > inverse(tdualquat< T, Q > const &q)
Returns the q inverse.
+
tdualquat< double, highp > highp_ddualquat
Dual-quaternion of high double-qualifier floating-point numbers.
+
highp_ddualquat ddualquat
Dual-quaternion of default double-qualifier floating-point numbers.
+
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast(mat< 3, 4, T, Q > const &x)
Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.
+
GLM_FUNC_DECL tdualquat< T, Q > lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)
Returns the linear interpolation of two dual quaternion.
+
GLM_FUNC_DECL mat< 2, 4, T, Q > mat2x4_cast(tdualquat< T, Q > const &x)
Converts a quaternion to a 2 * 4 matrix.
+
GLM_FUNC_DECL tdualquat< T, Q > dual_quat_identity()
Creates an identity dual quaternion.
+
tdualquat< float, highp > highp_fdualquat
Dual-quaternion of high single-qualifier floating-point numbers.
+
GLM_FUNC_DECL mat< 3, 4, T, Q > mat3x4_cast(tdualquat< T, Q > const &x)
Converts a quaternion to a 3 * 4 matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
+
tdualquat< float, mediump > mediump_dualquat
Dual-quaternion of medium single-qualifier floating-point numbers.
+
GLM_FUNC_DECL tdualquat< T, Q > normalize(tdualquat< T, Q > const &q)
Returns the normalized quaternion.
+
highp_fdualquat fdualquat
Dual-quaternion of single-qualifier floating-point numbers.
+
tdualquat< float, lowp > lowp_dualquat
Dual-quaternion of low single-qualifier floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00611.html b/include/glm/doc/api/a00611.html new file mode 100644 index 0000000..bdc91f7 --- /dev/null +++ b/include/glm/doc/api/a00611.html @@ -0,0 +1,226 @@ + + + + + + + +1.0.2 API documentation: easing.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
easing.hpp File Reference
+
+
+ +

GLM_GTX_easing +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType backEaseIn (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseIn (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseInOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseInOut (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseOut (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseIn (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseInOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseIn (genType const &a)
 Modelled after shifted quadrant IV of unit circle. More...
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseInOut (genType const &a)
 Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0, 0.5) y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseOut (genType const &a)
 Modelled after shifted quadrant II of unit circle. More...
 
+template<typename genType >
GLM_FUNC_DECL genType cubicEaseIn (genType const &a)
 Modelled after the cubic y = x^3.
 
template<typename genType >
GLM_FUNC_DECL genType cubicEaseInOut (genType const &a)
 Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType cubicEaseOut (genType const &a)
 Modelled after the cubic y = (x - 1)^3 + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseIn (genType const &a)
 Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1)) More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseInOut (genType const &a)
 Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseOut (genType const &a)
 Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseIn (genType const &a)
 Modelled after the exponential function y = 2^(10(x - 1)) More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseInOut (genType const &a)
 Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseOut (genType const &a)
 Modelled after the exponential function y = -2^(-10x) + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType linearInterpolation (genType const &a)
 Modelled after the line y = x. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseIn (genType const &a)
 Modelled after the parabola y = x^2. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseInOut (genType const &a)
 Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseOut (genType const &a)
 Modelled after the parabola y = -x^2 + 2x. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseIn (genType const &a)
 Modelled after the quartic x^4. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseInOut (genType const &a)
 Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseOut (genType const &a)
 Modelled after the quartic y = 1 - (x - 1)^4. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseIn (genType const &a)
 Modelled after the quintic y = x^5. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseInOut (genType const &a)
 Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseOut (genType const &a)
 Modelled after the quintic y = (x - 1)^5 + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseIn (genType const &a)
 Modelled after quarter-cycle of sine wave. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseInOut (genType const &a)
 Modelled after half sine wave. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseOut (genType const &a)
 Modelled after quarter-cycle of sine wave (different phase) More...
 
+

Detailed Description

+

GLM_GTX_easing

+
Author
Robert Chisholm
+
See also
Core features (dependence)
+ +

Definition in file easing.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00611_source.html b/include/glm/doc/api/a00611_source.html new file mode 100644 index 0000000..1402a1a --- /dev/null +++ b/include/glm/doc/api/a00611_source.html @@ -0,0 +1,233 @@ + + + + + + + +1.0.2 API documentation: easing.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
easing.hpp
+
+
+Go to the documentation of this file.
1 
+
17 #pragma once
+
18 
+
19 // Dependency:
+
20 #include "../glm.hpp"
+
21 #include "../gtc/constants.hpp"
+
22 #include "../detail/qualifier.hpp"
+
23 
+
24 #ifndef GLM_ENABLE_EXPERIMENTAL
+
25 # error "GLM: GLM_GTX_easing is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
26 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
27 # pragma message("GLM: GLM_GTX_easing extension included")
+
28 #endif
+
29 
+
30 namespace glm{
+
33 
+
36  template <typename genType>
+
37  GLM_FUNC_DECL genType linearInterpolation(genType const & a);
+
38 
+
41  template <typename genType>
+
42  GLM_FUNC_DECL genType quadraticEaseIn(genType const & a);
+
43 
+
46  template <typename genType>
+
47  GLM_FUNC_DECL genType quadraticEaseOut(genType const & a);
+
48 
+
53  template <typename genType>
+
54  GLM_FUNC_DECL genType quadraticEaseInOut(genType const & a);
+
55 
+
57  template <typename genType>
+
58  GLM_FUNC_DECL genType cubicEaseIn(genType const & a);
+
59 
+
62  template <typename genType>
+
63  GLM_FUNC_DECL genType cubicEaseOut(genType const & a);
+
64 
+
69  template <typename genType>
+
70  GLM_FUNC_DECL genType cubicEaseInOut(genType const & a);
+
71 
+
74  template <typename genType>
+
75  GLM_FUNC_DECL genType quarticEaseIn(genType const & a);
+
76 
+
79  template <typename genType>
+
80  GLM_FUNC_DECL genType quarticEaseOut(genType const & a);
+
81 
+
86  template <typename genType>
+
87  GLM_FUNC_DECL genType quarticEaseInOut(genType const & a);
+
88 
+
91  template <typename genType>
+
92  GLM_FUNC_DECL genType quinticEaseIn(genType const & a);
+
93 
+
96  template <typename genType>
+
97  GLM_FUNC_DECL genType quinticEaseOut(genType const & a);
+
98 
+
103  template <typename genType>
+
104  GLM_FUNC_DECL genType quinticEaseInOut(genType const & a);
+
105 
+
108  template <typename genType>
+
109  GLM_FUNC_DECL genType sineEaseIn(genType const & a);
+
110 
+
113  template <typename genType>
+
114  GLM_FUNC_DECL genType sineEaseOut(genType const & a);
+
115 
+
118  template <typename genType>
+
119  GLM_FUNC_DECL genType sineEaseInOut(genType const & a);
+
120 
+
123  template <typename genType>
+
124  GLM_FUNC_DECL genType circularEaseIn(genType const & a);
+
125 
+
128  template <typename genType>
+
129  GLM_FUNC_DECL genType circularEaseOut(genType const & a);
+
130 
+
135  template <typename genType>
+
136  GLM_FUNC_DECL genType circularEaseInOut(genType const & a);
+
137 
+
140  template <typename genType>
+
141  GLM_FUNC_DECL genType exponentialEaseIn(genType const & a);
+
142 
+
145  template <typename genType>
+
146  GLM_FUNC_DECL genType exponentialEaseOut(genType const & a);
+
147 
+
152  template <typename genType>
+
153  GLM_FUNC_DECL genType exponentialEaseInOut(genType const & a);
+
154 
+
157  template <typename genType>
+
158  GLM_FUNC_DECL genType elasticEaseIn(genType const & a);
+
159 
+
162  template <typename genType>
+
163  GLM_FUNC_DECL genType elasticEaseOut(genType const & a);
+
164 
+
169  template <typename genType>
+
170  GLM_FUNC_DECL genType elasticEaseInOut(genType const & a);
+
171 
+
173  template <typename genType>
+
174  GLM_FUNC_DECL genType backEaseIn(genType const& a);
+
175 
+
177  template <typename genType>
+
178  GLM_FUNC_DECL genType backEaseOut(genType const& a);
+
179 
+
181  template <typename genType>
+
182  GLM_FUNC_DECL genType backEaseInOut(genType const& a);
+
183 
+
187  template <typename genType>
+
188  GLM_FUNC_DECL genType backEaseIn(genType const& a, genType const& o);
+
189 
+
193  template <typename genType>
+
194  GLM_FUNC_DECL genType backEaseOut(genType const& a, genType const& o);
+
195 
+
199  template <typename genType>
+
200  GLM_FUNC_DECL genType backEaseInOut(genType const& a, genType const& o);
+
201 
+
203  template <typename genType>
+
204  GLM_FUNC_DECL genType bounceEaseIn(genType const& a);
+
205 
+
207  template <typename genType>
+
208  GLM_FUNC_DECL genType bounceEaseOut(genType const& a);
+
209 
+
211  template <typename genType>
+
212  GLM_FUNC_DECL genType bounceEaseInOut(genType const& a);
+
213 
+
215 }//namespace glm
+
216 
+
217 #include "easing.inl"
+
+
GLM_FUNC_DECL genType cubicEaseInOut(genType const &a)
Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0....
+
GLM_FUNC_DECL genType exponentialEaseIn(genType const &a)
Modelled after the exponential function y = 2^(10(x - 1))
+
GLM_FUNC_DECL genType quinticEaseIn(genType const &a)
Modelled after the quintic y = x^5.
+
GLM_FUNC_DECL genType backEaseIn(genType const &a, genType const &o)
+
GLM_FUNC_DECL genType backEaseInOut(genType const &a, genType const &o)
+
GLM_FUNC_DECL genType quadraticEaseOut(genType const &a)
Modelled after the parabola y = -x^2 + 2x.
+
GLM_FUNC_DECL genType circularEaseIn(genType const &a)
Modelled after shifted quadrant IV of unit circle.
+
GLM_FUNC_DECL genType linearInterpolation(genType const &a)
Modelled after the line y = x.
+
GLM_FUNC_DECL genType bounceEaseOut(genType const &a)
+
GLM_FUNC_DECL genType exponentialEaseInOut(genType const &a)
Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))...
+
GLM_FUNC_DECL genType sineEaseInOut(genType const &a)
Modelled after half sine wave.
+
GLM_FUNC_DECL genType quarticEaseOut(genType const &a)
Modelled after the quartic y = 1 - (x - 1)^4.
+
GLM_FUNC_DECL genType sineEaseIn(genType const &a)
Modelled after quarter-cycle of sine wave.
+
GLM_FUNC_DECL genType quadraticEaseInOut(genType const &a)
Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [...
+
GLM_FUNC_DECL genType quinticEaseInOut(genType const &a)
Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0....
+
GLM_FUNC_DECL genType backEaseOut(genType const &a, genType const &o)
+
GLM_FUNC_DECL genType circularEaseOut(genType const &a)
Modelled after shifted quadrant II of unit circle.
+
GLM_FUNC_DECL genType bounceEaseInOut(genType const &a)
+
GLM_FUNC_DECL genType bounceEaseIn(genType const &a)
+
GLM_FUNC_DECL genType cubicEaseOut(genType const &a)
Modelled after the cubic y = (x - 1)^3 + 1.
+
GLM_FUNC_DECL genType quadraticEaseIn(genType const &a)
Modelled after the parabola y = x^2.
+
GLM_FUNC_DECL genType cubicEaseIn(genType const &a)
Modelled after the cubic y = x^3.
+
GLM_FUNC_DECL genType quarticEaseInOut(genType const &a)
Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0....
+
GLM_FUNC_DECL genType quinticEaseOut(genType const &a)
Modelled after the quintic y = (x - 1)^5 + 1.
+
GLM_FUNC_DECL genType elasticEaseInOut(genType const &a)
Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2,...
+
GLM_FUNC_DECL genType circularEaseInOut(genType const &a)
Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0,...
+
GLM_FUNC_DECL genType sineEaseOut(genType const &a)
Modelled after quarter-cycle of sine wave (different phase)
+
GLM_FUNC_DECL genType elasticEaseIn(genType const &a)
Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1))
+
GLM_FUNC_DECL genType elasticEaseOut(genType const &a)
Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1.
+
GLM_FUNC_DECL genType quarticEaseIn(genType const &a)
Modelled after the quartic x^4.
+
GLM_FUNC_DECL genType exponentialEaseOut(genType const &a)
Modelled after the exponential function y = -2^(-10x) + 1.
+ + + + diff --git a/include/glm/doc/api/a00614.html b/include/glm/doc/api/a00614.html new file mode 100644 index 0000000..f9da2a9 --- /dev/null +++ b/include/glm/doc/api/a00614.html @@ -0,0 +1,261 @@ + + + + + + + +1.0.2 API documentation: euler_angles.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
euler_angles.hpp File Reference
+
+
+ +

GLM_GTX_euler_angles +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleX (T const &angleX, T const &angularVelocityX)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleY (T const &angleY, T const &angularVelocityY)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleZ (T const &angleZ, T const &angularVelocityZ)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleX (T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXY (T const &angleX, T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZ (T const &angleX, T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleY (T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYX (T const &angleY, T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXZ (T const &yaw, T const &pitch, T const &roll)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZ (T const &angleY, T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZ (T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZX (T const &angle, T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZY (T const &angleZ, T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z). More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Y * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Y * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Z * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Z * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * X * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * X * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * Z * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * Z * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * X * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * X * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * Y * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * Y * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > orientate2 (T const &angle)
 Creates a 2D 2 * 2 rotation matrix from an euler angle. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > orientate3 (T const &angle)
 Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > orientate3 (vec< 3, T, Q > const &angles)
 Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > orientate4 (vec< 3, T, Q > const &angles)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > yawPitchRoll (T const &yaw, T const &pitch, T const &roll)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
+

Detailed Description

+

GLM_GTX_euler_angles

+
See also
Core features (dependence)
+ +

Definition in file euler_angles.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00614_source.html b/include/glm/doc/api/a00614_source.html new file mode 100644 index 0000000..45b8a63 --- /dev/null +++ b/include/glm/doc/api/a00614_source.html @@ -0,0 +1,359 @@ + + + + + + + +1.0.2 API documentation: euler_angles.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
euler_angles.hpp
+
+
+Go to the documentation of this file.
1 
+
16 #pragma once
+
17 
+
18 // Dependency:
+
19 #include "../glm.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_euler_angles is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_euler_angles extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
34  template<typename T>
+
35  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleX(
+
36  T const& angleX);
+
37 
+
40  template<typename T>
+
41  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleY(
+
42  T const& angleY);
+
43 
+
46  template<typename T>
+
47  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZ(
+
48  T const& angleZ);
+
49 
+
52  template <typename T>
+
53  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleX(
+
54  T const & angleX, T const & angularVelocityX);
+
55 
+
58  template <typename T>
+
59  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleY(
+
60  T const & angleY, T const & angularVelocityY);
+
61 
+
64  template <typename T>
+
65  GLM_FUNC_DECL mat<4, 4, T, defaultp> derivedEulerAngleZ(
+
66  T const & angleZ, T const & angularVelocityZ);
+
67 
+
70  template<typename T>
+
71  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXY(
+
72  T const& angleX,
+
73  T const& angleY);
+
74 
+
77  template<typename T>
+
78  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYX(
+
79  T const& angleY,
+
80  T const& angleX);
+
81 
+
84  template<typename T>
+
85  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZ(
+
86  T const& angleX,
+
87  T const& angleZ);
+
88 
+
91  template<typename T>
+
92  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZX(
+
93  T const& angle,
+
94  T const& angleX);
+
95 
+
98  template<typename T>
+
99  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZ(
+
100  T const& angleY,
+
101  T const& angleZ);
+
102 
+
105  template<typename T>
+
106  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZY(
+
107  T const& angleZ,
+
108  T const& angleY);
+
109 
+
112  template<typename T>
+
113  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYZ(
+
114  T const& t1,
+
115  T const& t2,
+
116  T const& t3);
+
117 
+
120  template<typename T>
+
121  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXZ(
+
122  T const& yaw,
+
123  T const& pitch,
+
124  T const& roll);
+
125 
+
128  template <typename T>
+
129  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZX(
+
130  T const & t1,
+
131  T const & t2,
+
132  T const & t3);
+
133 
+
136  template <typename T>
+
137  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXYX(
+
138  T const & t1,
+
139  T const & t2,
+
140  T const & t3);
+
141 
+
144  template <typename T>
+
145  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYXY(
+
146  T const & t1,
+
147  T const & t2,
+
148  T const & t3);
+
149 
+
152  template <typename T>
+
153  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZY(
+
154  T const & t1,
+
155  T const & t2,
+
156  T const & t3);
+
157 
+
160  template <typename T>
+
161  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYZ(
+
162  T const & t1,
+
163  T const & t2,
+
164  T const & t3);
+
165 
+
168  template <typename T>
+
169  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXZ(
+
170  T const & t1,
+
171  T const & t2,
+
172  T const & t3);
+
173 
+
176  template <typename T>
+
177  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleXZY(
+
178  T const & t1,
+
179  T const & t2,
+
180  T const & t3);
+
181 
+
184  template <typename T>
+
185  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleYZX(
+
186  T const & t1,
+
187  T const & t2,
+
188  T const & t3);
+
189 
+
192  template <typename T>
+
193  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZYX(
+
194  T const & t1,
+
195  T const & t2,
+
196  T const & t3);
+
197 
+
200  template <typename T>
+
201  GLM_FUNC_DECL mat<4, 4, T, defaultp> eulerAngleZXY(
+
202  T const & t1,
+
203  T const & t2,
+
204  T const & t3);
+
205 
+
208  template<typename T>
+
209  GLM_FUNC_DECL mat<4, 4, T, defaultp> yawPitchRoll(
+
210  T const& yaw,
+
211  T const& pitch,
+
212  T const& roll);
+
213 
+
216  template<typename T>
+
217  GLM_FUNC_DECL mat<2, 2, T, defaultp> orientate2(T const& angle);
+
218 
+
221  template<typename T>
+
222  GLM_FUNC_DECL mat<3, 3, T, defaultp> orientate3(T const& angle);
+
223 
+
226  template<typename T, qualifier Q>
+
227  GLM_FUNC_DECL mat<3, 3, T, Q> orientate3(vec<3, T, Q> const& angles);
+
228 
+
231  template<typename T, qualifier Q>
+
232  GLM_FUNC_DECL mat<4, 4, T, Q> orientate4(vec<3, T, Q> const& angles);
+
233 
+
236  template<typename T>
+
237  GLM_FUNC_DISCARD_DECL void extractEulerAngleXYZ(mat<4, 4, T, defaultp> const& M,
+
238  T & t1,
+
239  T & t2,
+
240  T & t3);
+
241 
+
244  template <typename T>
+
245  GLM_FUNC_DISCARD_DECL void extractEulerAngleYXZ(mat<4, 4, T, defaultp> const & M,
+
246  T & t1,
+
247  T & t2,
+
248  T & t3);
+
249 
+
252  template <typename T>
+
253  GLM_FUNC_DISCARD_DECL void extractEulerAngleXZX(mat<4, 4, T, defaultp> const & M,
+
254  T & t1,
+
255  T & t2,
+
256  T & t3);
+
257 
+
260  template <typename T>
+
261  GLM_FUNC_DISCARD_DECL void extractEulerAngleXYX(mat<4, 4, T, defaultp> const & M,
+
262  T & t1,
+
263  T & t2,
+
264  T & t3);
+
265 
+
268  template <typename T>
+
269  GLM_FUNC_DISCARD_DECL void extractEulerAngleYXY(mat<4, 4, T, defaultp> const & M,
+
270  T & t1,
+
271  T & t2,
+
272  T & t3);
+
273 
+
276  template <typename T>
+
277  GLM_FUNC_DISCARD_DECL void extractEulerAngleYZY(mat<4, 4, T, defaultp> const & M,
+
278  T & t1,
+
279  T & t2,
+
280  T & t3);
+
281 
+
284  template <typename T>
+
285  GLM_FUNC_DISCARD_DECL void extractEulerAngleZYZ(mat<4, 4, T, defaultp> const & M,
+
286  T & t1,
+
287  T & t2,
+
288  T & t3);
+
289 
+
292  template <typename T>
+
293  GLM_FUNC_DISCARD_DECL void extractEulerAngleZXZ(mat<4, 4, T, defaultp> const & M,
+
294  T & t1,
+
295  T & t2,
+
296  T & t3);
+
297 
+
300  template <typename T>
+
301  GLM_FUNC_DISCARD_DECL void extractEulerAngleXZY(mat<4, 4, T, defaultp> const & M,
+
302  T & t1,
+
303  T & t2,
+
304  T & t3);
+
305 
+
308  template <typename T>
+
309  GLM_FUNC_DISCARD_DECL void extractEulerAngleYZX(mat<4, 4, T, defaultp> const & M,
+
310  T & t1,
+
311  T & t2,
+
312  T & t3);
+
313 
+
316  template <typename T>
+
317  GLM_FUNC_DISCARD_DECL void extractEulerAngleZYX(mat<4, 4, T, defaultp> const & M,
+
318  T & t1,
+
319  T & t2,
+
320  T & t3);
+
321 
+
324  template <typename T>
+
325  GLM_FUNC_DISCARD_DECL void extractEulerAngleZXY(mat<4, 4, T, defaultp> const & M,
+
326  T & t1,
+
327  T & t2,
+
328  T & t3);
+
329 
+
331 }//namespace glm
+
332 
+
333 #include "euler_angles.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZ(T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleY(T const &angleY, T const &angularVelocityY)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.
+
GLM_FUNC_DECL T roll(qua< T, Q > const &x)
Returns roll value of euler angles expressed in radians.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Z * X) Euler angles from the rotation matrix M.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * X * Y) Euler angles from the rotation matrix M.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * X * Y) Euler angles from the rotation matrix M.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * X * Z) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleX(T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXY(T const &angleX, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleZ(T const &angleZ, T const &angularVelocityZ)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > orientate3(vec< 3, T, Q > const &angles)
Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Y * X) Euler angles from the rotation matrix M.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * Z * X) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZ(T const &angleX, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZY(T const &angleZ, T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleX(T const &angleX, T const &angularVelocityX)
Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZX(T const &angle, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZ(T const &angleY, T const &angleZ)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Y * Z) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYX(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * Y * X) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXY(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * Z * Y) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYX(T const &angleY, T const &angleX)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZY(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (X * Z * Y) Euler angles from the rotation matrix M.
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Y * X * Z) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > orientate4(vec< 3, T, Q > const &angles)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYZ(mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
Extracts the (Z * Y * Z) Euler angles from the rotation matrix M.
+
GLM_FUNC_DECL T pitch(qua< T, Q > const &x)
Returns pitch value of euler angles expressed in radians.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYX(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).
+
GLM_FUNC_DECL mat< 2, 2, T, defaultp > orientate2(T const &angle)
Creates a 2D 2 * 2 rotation matrix from an euler angle.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleY(T const &angleY)
Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXZ(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+
GLM_FUNC_DECL T yaw(qua< T, Q > const &x)
Returns yaw value of euler angles expressed in radians.
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYZ(T const &t1, T const &t2, T const &t3)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > yawPitchRoll(T const &yaw, T const &pitch, T const &roll)
Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).
+ + + + diff --git a/include/glm/doc/api/a00617.html b/include/glm/doc/api/a00617.html new file mode 100644 index 0000000..02b7e13 --- /dev/null +++ b/include/glm/doc/api/a00617.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: extend.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
extend.hpp File Reference
+
+
+ +

GLM_GTX_extend +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
 Extends of Length the Origin position using the (Source - Origin) direction. More...
 
+

Detailed Description

+

GLM_GTX_extend

+
See also
Core features (dependence)
+ +

Definition in file extend.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00617_source.html b/include/glm/doc/api/a00617_source.html new file mode 100644 index 0000000..f707014 --- /dev/null +++ b/include/glm/doc/api/a00617_source.html @@ -0,0 +1,106 @@ + + + + + + + +1.0.2 API documentation: extend.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
extend.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_extend is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_extend extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename genType>
+
32  GLM_FUNC_DECL genType extend(
+
33  genType const& Origin,
+
34  genType const& Source,
+
35  typename genType::value_type const Length);
+
36 
+
38 }//namespace glm
+
39 
+
40 #include "extend.inl"
+
+
GLM_FUNC_DECL genType extend(genType const &Origin, genType const &Source, typename genType::value_type const Length)
Extends of Length the Origin position using the (Source - Origin) direction.
+ + + + diff --git a/include/glm/doc/api/a00620.html b/include/glm/doc/api/a00620.html new file mode 100644 index 0000000..cc978f9 --- /dev/null +++ b/include/glm/doc/api/a00620.html @@ -0,0 +1,145 @@ + + + + + + + +1.0.2 API documentation: extended_min_max.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
extended_min_max.hpp File Reference
+
+
+ +

GLM_GTX_extended_min_max +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
+

Detailed Description

+

GLM_GTX_extended_min_max

+
See also
Core features (dependence)
+ +

Definition in file extended_min_max.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00620_source.html b/include/glm/doc/api/a00620_source.html new file mode 100644 index 0000000..e047538 --- /dev/null +++ b/include/glm/doc/api/a00620_source.html @@ -0,0 +1,180 @@ + + + + + + + +1.0.2 API documentation: extended_min_max.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
extended_min_max.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../ext/vector_common.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_extended_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_extended_min_max extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename T>
+
33  GLM_FUNC_DECL T min(
+
34  T const& x,
+
35  T const& y,
+
36  T const& z);
+
37 
+
40  template<typename T, template<typename> class C>
+
41  GLM_FUNC_DECL C<T> min(
+
42  C<T> const& x,
+
43  typename C<T>::T const& y,
+
44  typename C<T>::T const& z);
+
45 
+
48  template<typename T, template<typename> class C>
+
49  GLM_FUNC_DECL C<T> min(
+
50  C<T> const& x,
+
51  C<T> const& y,
+
52  C<T> const& z);
+
53 
+
56  template<typename T>
+
57  GLM_FUNC_DECL T min(
+
58  T const& x,
+
59  T const& y,
+
60  T const& z,
+
61  T const& w);
+
62 
+
65  template<typename T, template<typename> class C>
+
66  GLM_FUNC_DECL C<T> min(
+
67  C<T> const& x,
+
68  typename C<T>::T const& y,
+
69  typename C<T>::T const& z,
+
70  typename C<T>::T const& w);
+
71 
+
74  template<typename T, template<typename> class C>
+
75  GLM_FUNC_DECL C<T> min(
+
76  C<T> const& x,
+
77  C<T> const& y,
+
78  C<T> const& z,
+
79  C<T> const& w);
+
80 
+
83  template<typename T>
+
84  GLM_FUNC_DECL T max(
+
85  T const& x,
+
86  T const& y,
+
87  T const& z);
+
88 
+
91  template<typename T, template<typename> class C>
+
92  GLM_FUNC_DECL C<T> max(
+
93  C<T> const& x,
+
94  typename C<T>::T const& y,
+
95  typename C<T>::T const& z);
+
96 
+
99  template<typename T, template<typename> class C>
+
100  GLM_FUNC_DECL C<T> max(
+
101  C<T> const& x,
+
102  C<T> const& y,
+
103  C<T> const& z);
+
104 
+
107  template<typename T>
+
108  GLM_FUNC_DECL T max(
+
109  T const& x,
+
110  T const& y,
+
111  T const& z,
+
112  T const& w);
+
113 
+
116  template<typename T, template<typename> class C>
+
117  GLM_FUNC_DECL C<T> max(
+
118  C<T> const& x,
+
119  typename C<T>::T const& y,
+
120  typename C<T>::T const& z,
+
121  typename C<T>::T const& w);
+
122 
+
125  template<typename T, template<typename> class C>
+
126  GLM_FUNC_DECL C<T> max(
+
127  C<T> const& x,
+
128  C<T> const& y,
+
129  C<T> const& z,
+
130  C<T> const& w);
+
131 
+
133 }//namespace glm
+
134 
+
135 #include "extended_min_max.inl"
+
+
GLM_FUNC_DECL C< T > max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the maximum component-wise values of 4 inputs.
+
GLM_FUNC_DECL C< T > min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
Return the minimum component-wise values of 4 inputs.
+ + + + diff --git a/include/glm/doc/api/a00623.html b/include/glm/doc/api/a00623.html new file mode 100644 index 0000000..d326180 --- /dev/null +++ b/include/glm/doc/api/a00623.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: exterior_product.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
exterior_product.hpp File Reference
+
+
+ +

GLM_GTX_exterior_product +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T cross (vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)
 Returns the cross product of x and y. More...
 
+

Detailed Description

+

GLM_GTX_exterior_product

+
See also
Core features (dependence)
+
+GLM_GTX_exterior_product (dependence)
+ +

Definition in file exterior_product.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00623_source.html b/include/glm/doc/api/a00623_source.html new file mode 100644 index 0000000..43d5f64 --- /dev/null +++ b/include/glm/doc/api/a00623_source.html @@ -0,0 +1,104 @@ + + + + + + + +1.0.2 API documentation: exterior_product.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exterior_product.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_exterior_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_exterior_product extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL GLM_CONSTEXPR T cross(vec<2, T, Q> const& v, vec<2, T, Q> const& u);
+
39 
+
41 } //namespace glm
+
42 
+
43 #include "exterior_product.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR T cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)
Returns the cross product of x and y.
+ + + + diff --git a/include/glm/doc/api/a00626.html b/include/glm/doc/api/a00626.html new file mode 100644 index 0000000..3e57b86 --- /dev/null +++ b/include/glm/doc/api/a00626.html @@ -0,0 +1,147 @@ + + + + + + + +1.0.2 API documentation: fast_exponential.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
fast_exponential.hpp File Reference
+
+
+ +

GLM_GTX_fast_exponential +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastExp (T x)
 Faster than the common exp function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastExp (vec< L, T, Q > const &x)
 Faster than the common exp function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastExp2 (T x)
 Faster than the common exp2 function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastExp2 (vec< L, T, Q > const &x)
 Faster than the common exp2 function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastLog (T x)
 Faster than the common log function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastLog (vec< L, T, Q > const &x)
 Faster than the common exp2 function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastLog2 (T x)
 Faster than the common log2 function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastLog2 (vec< L, T, Q > const &x)
 Faster than the common log2 function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastPow (genType x, genType y)
 Faster than the common pow function but less accurate. More...
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL genTypeT fastPow (genTypeT x, genTypeU y)
 Faster than the common pow function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastPow (vec< L, T, Q > const &x)
 Faster than the common pow function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastPow (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Faster than the common pow function but less accurate. More...
 
+

Detailed Description

+

GLM_GTX_fast_exponential

+
See also
Core features (dependence)
+
+gtx_half_float (dependence)
+ +

Definition in file fast_exponential.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00626_source.html b/include/glm/doc/api/a00626_source.html new file mode 100644 index 0000000..0da0b7c --- /dev/null +++ b/include/glm/doc/api/a00626_source.html @@ -0,0 +1,140 @@ + + + + + + + +1.0.2 API documentation: fast_exponential.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fast_exponential.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_fast_exponential is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_fast_exponential extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename genType>
+
33  GLM_FUNC_DECL genType fastPow(genType x, genType y);
+
34 
+
37  template<length_t L, typename T, qualifier Q>
+
38  GLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
39 
+
42  template<typename genTypeT, typename genTypeU>
+
43  GLM_FUNC_DECL genTypeT fastPow(genTypeT x, genTypeU y);
+
44 
+
47  template<length_t L, typename T, qualifier Q>
+
48  GLM_FUNC_DECL vec<L, T, Q> fastPow(vec<L, T, Q> const& x);
+
49 
+
52  template<typename T>
+
53  GLM_FUNC_DECL T fastExp(T x);
+
54 
+
57  template<length_t L, typename T, qualifier Q>
+
58  GLM_FUNC_DECL vec<L, T, Q> fastExp(vec<L, T, Q> const& x);
+
59 
+
62  template<typename T>
+
63  GLM_FUNC_DECL T fastLog(T x);
+
64 
+
67  template<length_t L, typename T, qualifier Q>
+
68  GLM_FUNC_DECL vec<L, T, Q> fastLog(vec<L, T, Q> const& x);
+
69 
+
72  template<typename T>
+
73  GLM_FUNC_DECL T fastExp2(T x);
+
74 
+
77  template<length_t L, typename T, qualifier Q>
+
78  GLM_FUNC_DECL vec<L, T, Q> fastExp2(vec<L, T, Q> const& x);
+
79 
+
82  template<typename T>
+
83  GLM_FUNC_DECL T fastLog2(T x);
+
84 
+
87  template<length_t L, typename T, qualifier Q>
+
88  GLM_FUNC_DECL vec<L, T, Q> fastLog2(vec<L, T, Q> const& x);
+
89 
+
91 }//namespace glm
+
92 
+
93 #include "fast_exponential.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > fastLog2(vec< L, T, Q > const &x)
Faster than the common log2 function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastExp(vec< L, T, Q > const &x)
Faster than the common exp function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastLog(vec< L, T, Q > const &x)
Faster than the common exp2 function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastExp2(vec< L, T, Q > const &x)
Faster than the common exp2 function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastPow(vec< L, T, Q > const &x)
Faster than the common pow function but less accurate.
+ + + + diff --git a/include/glm/doc/api/a00629.html b/include/glm/doc/api/a00629.html new file mode 100644 index 0000000..f5e00b4 --- /dev/null +++ b/include/glm/doc/api/a00629.html @@ -0,0 +1,137 @@ + + + + + + + +1.0.2 API documentation: fast_square_root.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
fast_square_root.hpp File Reference
+
+
+ +

GLM_GTX_fast_square_root +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType fastDistance (genType x, genType y)
 Faster than the common distance function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastDistance (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Faster than the common distance function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastInverseSqrt (genType x)
 Faster than the common inversesqrt function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastInverseSqrt (vec< L, T, Q > const &x)
 Faster than the common inversesqrt function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastLength (genType x)
 Faster than the common length function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastLength (vec< L, T, Q > const &x)
 Faster than the common length function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastNormalize (genType x)
 Faster than the common normalize function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastNormalize (vec< L, T, Q > const &x)
 Faster than the common normalize function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastSqrt (genType x)
 Faster than the common sqrt function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastSqrt (vec< L, T, Q > const &x)
 Faster than the common sqrt function but less accurate. More...
 
+

Detailed Description

+

GLM_GTX_fast_square_root

+
See also
Core features (dependence)
+ +

Definition in file fast_square_root.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00629_source.html b/include/glm/doc/api/a00629_source.html new file mode 100644 index 0000000..8f0f18c --- /dev/null +++ b/include/glm/doc/api/a00629_source.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: fast_square_root.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fast_square_root.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../common.hpp"
+
19 #include "../exponential.hpp"
+
20 #include "../geometric.hpp"
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTX_fast_square_root is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTX_fast_square_root extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
36  template<typename genType>
+
37  GLM_FUNC_DECL genType fastSqrt(genType x);
+
38 
+
42  template<length_t L, typename T, qualifier Q>
+
43  GLM_FUNC_DECL vec<L, T, Q> fastSqrt(vec<L, T, Q> const& x);
+
44 
+
48  template<typename genType>
+
49  GLM_FUNC_DECL genType fastInverseSqrt(genType x);
+
50 
+
54  template<length_t L, typename T, qualifier Q>
+
55  GLM_FUNC_DECL vec<L, T, Q> fastInverseSqrt(vec<L, T, Q> const& x);
+
56 
+
60  template<typename genType>
+
61  GLM_FUNC_DECL genType fastLength(genType x);
+
62 
+
66  template<length_t L, typename T, qualifier Q>
+
67  GLM_FUNC_DECL T fastLength(vec<L, T, Q> const& x);
+
68 
+
72  template<typename genType>
+
73  GLM_FUNC_DECL genType fastDistance(genType x, genType y);
+
74 
+
78  template<length_t L, typename T, qualifier Q>
+
79  GLM_FUNC_DECL T fastDistance(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
80 
+
84  template<typename genType>
+
85  GLM_FUNC_DECL genType fastNormalize(genType x);
+
86 
+
90  template<length_t L, typename T, qualifier Q>
+
91  GLM_FUNC_DECL vec<L, T, Q> fastNormalize(vec<L, T, Q> const& x);
+
92 
+
94 }// namespace glm
+
95 
+
96 #include "fast_square_root.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > fastInverseSqrt(vec< L, T, Q > const &x)
Faster than the common inversesqrt function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastSqrt(vec< L, T, Q > const &x)
Faster than the common sqrt function but less accurate.
+
GLM_FUNC_DECL vec< L, T, Q > fastNormalize(vec< L, T, Q > const &x)
Faster than the common normalize function but less accurate.
+
GLM_FUNC_DECL T fastLength(vec< L, T, Q > const &x)
Faster than the common length function but less accurate.
+
GLM_FUNC_DECL T fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Faster than the common distance function but less accurate.
+ + + + diff --git a/include/glm/doc/api/a00632.html b/include/glm/doc/api/a00632.html new file mode 100644 index 0000000..a49ad3a --- /dev/null +++ b/include/glm/doc/api/a00632.html @@ -0,0 +1,130 @@ + + + + + + + +1.0.2 API documentation: fast_trigonometry.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
fast_trigonometry.hpp File Reference
+
+
+ +

GLM_GTX_fast_trigonometry +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastAcos (T angle)
 Faster than the common acos function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAsin (T angle)
 Faster than the common asin function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T angle)
 Faster than the common atan function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T y, T x)
 Faster than the common atan function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastCos (T angle)
 Faster than the common cos function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastSin (T angle)
 Faster than the common sin function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastTan (T angle)
 Faster than the common tan function but less accurate. More...
 
+template<typename T >
GLM_FUNC_DECL T wrapAngle (T angle)
 Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.
 
+

Detailed Description

+

GLM_GTX_fast_trigonometry

+
See also
Core features (dependence)
+ +

Definition in file fast_trigonometry.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00632_source.html b/include/glm/doc/api/a00632_source.html new file mode 100644 index 0000000..15a1c03 --- /dev/null +++ b/include/glm/doc/api/a00632_source.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: fast_trigonometry.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
fast_trigonometry.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../gtc/constants.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_fast_trigonometry is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_fast_trigonometry extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T>
+
32  GLM_FUNC_DECL T wrapAngle(T angle);
+
33 
+
36  template<typename T>
+
37  GLM_FUNC_DECL T fastSin(T angle);
+
38 
+
41  template<typename T>
+
42  GLM_FUNC_DECL T fastCos(T angle);
+
43 
+
47  template<typename T>
+
48  GLM_FUNC_DECL T fastTan(T angle);
+
49 
+
53  template<typename T>
+
54  GLM_FUNC_DECL T fastAsin(T angle);
+
55 
+
59  template<typename T>
+
60  GLM_FUNC_DECL T fastAcos(T angle);
+
61 
+
65  template<typename T>
+
66  GLM_FUNC_DECL T fastAtan(T y, T x);
+
67 
+
71  template<typename T>
+
72  GLM_FUNC_DECL T fastAtan(T angle);
+
73 
+
75 }//namespace glm
+
76 
+
77 #include "fast_trigonometry.inl"
+
+
GLM_FUNC_DECL T fastAsin(T angle)
Faster than the common asin function but less accurate.
+
GLM_FUNC_DECL T wrapAngle(T angle)
Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.
+
GLM_FUNC_DECL T fastTan(T angle)
Faster than the common tan function but less accurate.
+
GLM_FUNC_DECL T fastAcos(T angle)
Faster than the common acos function but less accurate.
+
GLM_FUNC_DECL T fastAtan(T angle)
Faster than the common atan function but less accurate.
+
GLM_FUNC_DECL T fastCos(T angle)
Faster than the common cos function but less accurate.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL T fastSin(T angle)
Faster than the common sin function but less accurate.
+ + + + diff --git a/include/glm/doc/api/a00635.html b/include/glm/doc/api/a00635.html new file mode 100644 index 0000000..c0d832a --- /dev/null +++ b/include/glm/doc/api/a00635.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: functions.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
functions.hpp File Reference
+
+
+ +

GLM_GTX_functions +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T gauss (T x, T ExpectedValue, T StandardDeviation)
 1D gauss function More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T gauss (vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)
 2D gauss function More...
 
+

Detailed Description

+

GLM_GTX_functions

+
See also
Core features (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file functions.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00635_source.html b/include/glm/doc/api/a00635_source.html new file mode 100644 index 0000000..2223509 --- /dev/null +++ b/include/glm/doc/api/a00635_source.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: functions.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
functions.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 #include "../detail/type_vec2.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_functions is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_functions extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
35  template<typename T>
+
36  GLM_FUNC_DECL T gauss(
+
37  T x,
+
38  T ExpectedValue,
+
39  T StandardDeviation);
+
40 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL T gauss(
+
46  vec<2, T, Q> const& Coord,
+
47  vec<2, T, Q> const& ExpectedValue,
+
48  vec<2, T, Q> const& StandardDeviation);
+
49 
+
51 }//namespace glm
+
52 
+
53 #include "functions.inl"
+
54 
+
+
GLM_FUNC_DECL T gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)
2D gauss function
+ + + + diff --git a/include/glm/doc/api/a00638.html b/include/glm/doc/api/a00638.html new file mode 100644 index 0000000..e68d2b5 --- /dev/null +++ b/include/glm/doc/api/a00638.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: gradient_paint.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gradient_paint.hpp File Reference
+
+
+ +

GLM_GTX_gradient_paint +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL T linearGradient (vec< 2, T, Q > const &Point0, vec< 2, T, Q > const &Point1, vec< 2, T, Q > const &Position)
 Return a color from a linear gradient. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T radialGradient (vec< 2, T, Q > const &Center, T const &Radius, vec< 2, T, Q > const &Focal, vec< 2, T, Q > const &Position)
 Return a color from a radial gradient. More...
 
+

Detailed Description

+

GLM_GTX_gradient_paint

+
See also
Core features (dependence)
+
+GLM_GTX_optimum_pow (dependence)
+ +

Definition in file gradient_paint.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00638_source.html b/include/glm/doc/api/a00638_source.html new file mode 100644 index 0000000..82a43ba --- /dev/null +++ b/include/glm/doc/api/a00638_source.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: gradient_paint.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gradient_paint.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include "../gtx/optimum_pow.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_gradient_paint is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_gradient_paint extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
33  template<typename T, qualifier Q>
+
34  GLM_FUNC_DECL T radialGradient(
+
35  vec<2, T, Q> const& Center,
+
36  T const& Radius,
+
37  vec<2, T, Q> const& Focal,
+
38  vec<2, T, Q> const& Position);
+
39 
+
42  template<typename T, qualifier Q>
+
43  GLM_FUNC_DECL T linearGradient(
+
44  vec<2, T, Q> const& Point0,
+
45  vec<2, T, Q> const& Point1,
+
46  vec<2, T, Q> const& Position);
+
47 
+
49 }// namespace glm
+
50 
+
51 #include "gradient_paint.inl"
+
+
GLM_FUNC_DECL T radialGradient(vec< 2, T, Q > const &Center, T const &Radius, vec< 2, T, Q > const &Focal, vec< 2, T, Q > const &Position)
Return a color from a radial gradient.
+
GLM_FUNC_DECL T linearGradient(vec< 2, T, Q > const &Point0, vec< 2, T, Q > const &Point1, vec< 2, T, Q > const &Position)
Return a color from a linear gradient.
+ + + + diff --git a/include/glm/doc/api/a00641.html b/include/glm/doc/api/a00641.html new file mode 100644 index 0000000..7da4b2f --- /dev/null +++ b/include/glm/doc/api/a00641.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: handed_coordinate_space.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
handed_coordinate_space.hpp File Reference
+
+
+ +

GLM_GTX_handed_coordinate_space +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL bool leftHanded (vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
 Return if a trihedron left handed or not. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool rightHanded (vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
 Return if a trihedron right handed or not. More...
 
+

Detailed Description

+

GLM_GTX_handed_coordinate_space

+
See also
Core features (dependence)
+ +

Definition in file handed_coordinate_space.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00641_source.html b/include/glm/doc/api/a00641_source.html new file mode 100644 index 0000000..1a82af5 --- /dev/null +++ b/include/glm/doc/api/a00641_source.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: handed_coordinate_space.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
handed_coordinate_space.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_handed_coordinate_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_handed_coordinate_space extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T, qualifier Q>
+
32  GLM_FUNC_DECL bool rightHanded(
+
33  vec<3, T, Q> const& tangent,
+
34  vec<3, T, Q> const& binormal,
+
35  vec<3, T, Q> const& normal);
+
36 
+
39  template<typename T, qualifier Q>
+
40  GLM_FUNC_DECL bool leftHanded(
+
41  vec<3, T, Q> const& tangent,
+
42  vec<3, T, Q> const& binormal,
+
43  vec<3, T, Q> const& normal);
+
44 
+
46 }// namespace glm
+
47 
+
48 #include "handed_coordinate_space.inl"
+
+
GLM_FUNC_DECL bool leftHanded(vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
Return if a trihedron left handed or not.
+
GLM_FUNC_DECL bool rightHanded(vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
Return if a trihedron right handed or not.
+ + + + diff --git a/include/glm/doc/api/a00644.html b/include/glm/doc/api/a00644.html new file mode 100644 index 0000000..33e7297 --- /dev/null +++ b/include/glm/doc/api/a00644.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: hash.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hash.hpp File Reference
+
+
+ +

GLM_GTX_hash +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_hash

+
See also
Core features (dependence)
+ +

Definition in file hash.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00644_source.html b/include/glm/doc/api/a00644_source.html new file mode 100644 index 0000000..b66adfe --- /dev/null +++ b/include/glm/doc/api/a00644_source.html @@ -0,0 +1,226 @@ + + + + + + + +1.0.2 API documentation: hash.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hash.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #if defined(GLM_FORCE_MESSAGES) && !defined(GLM_EXT_INCLUDED)
+
16 # ifndef GLM_ENABLE_EXPERIMENTAL
+
17 # pragma message("GLM: GLM_GTX_hash is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
+
18 # else
+
19 # pragma message("GLM: GLM_GTX_hash extension included")
+
20 # endif
+
21 #endif
+
22 
+
23 #include "../vec2.hpp"
+
24 #include "../vec3.hpp"
+
25 #include "../vec4.hpp"
+
26 #include "../gtc/vec1.hpp"
+
27 
+
28 #include "../gtc/quaternion.hpp"
+
29 #include "../gtx/dual_quaternion.hpp"
+
30 
+
31 #include "../mat2x2.hpp"
+
32 #include "../mat2x3.hpp"
+
33 #include "../mat2x4.hpp"
+
34 
+
35 #include "../mat3x2.hpp"
+
36 #include "../mat3x3.hpp"
+
37 #include "../mat3x4.hpp"
+
38 
+
39 #include "../mat4x2.hpp"
+
40 #include "../mat4x3.hpp"
+
41 #include "../mat4x4.hpp"
+
42 
+
43 #if defined(_MSC_VER)
+
44  // MSVC uses _MSVC_LANG instead of __cplusplus
+
45  #if _MSVC_LANG < 201103L
+
46  #pragma message("GLM_GTX_hash requires C++11 standard library support")
+
47  #endif
+
48 #elif defined(__GNUC__) || defined(__clang__)
+
49  // GNU and Clang use __cplusplus
+
50  #if __cplusplus < 201103L
+
51  #pragma message("GLM_GTX_hash requires C++11 standard library support")
+
52  #endif
+
53 #else
+
54  #error "Unknown compiler"
+
55 #endif
+
56 
+
57 #if GLM_LANG & GLM_LANG_CXX11
+
58 #define GLM_GTX_hash 1
+
59 #include <functional>
+
60 
+
61 namespace std
+
62 {
+
63  template<typename T, glm::qualifier Q>
+
64  struct hash<glm::vec<1, T, Q> >
+
65  {
+
66  GLM_FUNC_DECL size_t operator()(glm::vec<1, T, Q> const& v) const GLM_NOEXCEPT;
+
67  };
+
68 
+
69  template<typename T, glm::qualifier Q>
+
70  struct hash<glm::vec<2, T, Q> >
+
71  {
+
72  GLM_FUNC_DECL size_t operator()(glm::vec<2, T, Q> const& v) const GLM_NOEXCEPT;
+
73  };
+
74 
+
75  template<typename T, glm::qualifier Q>
+
76  struct hash<glm::vec<3, T, Q> >
+
77  {
+
78  GLM_FUNC_DECL size_t operator()(glm::vec<3, T, Q> const& v) const GLM_NOEXCEPT;
+
79  };
+
80 
+
81  template<typename T, glm::qualifier Q>
+
82  struct hash<glm::vec<4, T, Q> >
+
83  {
+
84  GLM_FUNC_DECL size_t operator()(glm::vec<4, T, Q> const& v) const GLM_NOEXCEPT;
+
85  };
+
86 
+
87  template<typename T, glm::qualifier Q>
+
88  struct hash<glm::qua<T, Q> >
+
89  {
+
90  GLM_FUNC_DECL size_t operator()(glm::qua<T, Q> const& q) const GLM_NOEXCEPT;
+
91  };
+
92 
+
93  template<typename T, glm::qualifier Q>
+
94  struct hash<glm::tdualquat<T, Q> >
+
95  {
+
96  GLM_FUNC_DECL size_t operator()(glm::tdualquat<T,Q> const& q) const GLM_NOEXCEPT;
+
97  };
+
98 
+
99  template<typename T, glm::qualifier Q>
+
100  struct hash<glm::mat<2, 2, T, Q> >
+
101  {
+
102  GLM_FUNC_DECL size_t operator()(glm::mat<2, 2, T,Q> const& m) const GLM_NOEXCEPT;
+
103  };
+
104 
+
105  template<typename T, glm::qualifier Q>
+
106  struct hash<glm::mat<2, 3, T, Q> >
+
107  {
+
108  GLM_FUNC_DECL size_t operator()(glm::mat<2, 3, T,Q> const& m) const GLM_NOEXCEPT;
+
109  };
+
110 
+
111  template<typename T, glm::qualifier Q>
+
112  struct hash<glm::mat<2, 4, T, Q> >
+
113  {
+
114  GLM_FUNC_DECL size_t operator()(glm::mat<2, 4, T,Q> const& m) const GLM_NOEXCEPT;
+
115  };
+
116 
+
117  template<typename T, glm::qualifier Q>
+
118  struct hash<glm::mat<3, 2, T, Q> >
+
119  {
+
120  GLM_FUNC_DECL size_t operator()(glm::mat<3, 2, T,Q> const& m) const GLM_NOEXCEPT;
+
121  };
+
122 
+
123  template<typename T, glm::qualifier Q>
+
124  struct hash<glm::mat<3, 3, T, Q> >
+
125  {
+
126  GLM_FUNC_DECL size_t operator()(glm::mat<3, 3, T,Q> const& m) const GLM_NOEXCEPT;
+
127  };
+
128 
+
129  template<typename T, glm::qualifier Q>
+
130  struct hash<glm::mat<3, 4, T, Q> >
+
131  {
+
132  GLM_FUNC_DECL size_t operator()(glm::mat<3, 4, T,Q> const& m) const GLM_NOEXCEPT;
+
133  };
+
134 
+
135  template<typename T, glm::qualifier Q>
+
136  struct hash<glm::mat<4, 2, T, Q> >
+
137  {
+
138  GLM_FUNC_DECL size_t operator()(glm::mat<4, 2, T,Q> const& m) const GLM_NOEXCEPT;
+
139  };
+
140 
+
141  template<typename T, glm::qualifier Q>
+
142  struct hash<glm::mat<4, 3, T, Q> >
+
143  {
+
144  GLM_FUNC_DECL size_t operator()(glm::mat<4, 3, T,Q> const& m) const GLM_NOEXCEPT;
+
145  };
+
146 
+
147  template<typename T, glm::qualifier Q>
+
148  struct hash<glm::mat<4, 4, T, Q> >
+
149  {
+
150  GLM_FUNC_DECL size_t operator()(glm::mat<4, 4, T,Q> const& m) const GLM_NOEXCEPT;
+
151  };
+
152 } // namespace std
+
153 
+
154 #include "hash.inl"
+
155 
+
156 #endif //GLM_LANG & GLM_LANG_CXX11
+
+ + + + diff --git a/include/glm/doc/api/a00647.html b/include/glm/doc/api/a00647.html new file mode 100644 index 0000000..262e785 --- /dev/null +++ b/include/glm/doc/api/a00647.html @@ -0,0 +1,123 @@ + + + + + + + +1.0.2 API documentation: intersect.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
intersect.hpp File Reference
+
+
+ +

GLM_GTX_intersect +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
 Compute the intersection of a line and a sphere. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 Compute the intersection of a line and a triangle. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayPlane (genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
 Compute the intersection of a ray and a plane. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 Compute the intersection of a ray and a sphere. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)
 Compute the intersection distance of a ray and a sphere. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool intersectRayTriangle (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dir, vec< 3, T, Q > const &v0, vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 2, T, Q > &baryPosition, T &distance)
 Compute the intersection of a ray and a triangle. More...
 
+

Detailed Description

+

GLM_GTX_intersect

+
See also
Core features (dependence)
+
+GLM_GTX_closest_point (dependence)
+ +

Definition in file intersect.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00647_source.html b/include/glm/doc/api/a00647_source.html new file mode 100644 index 0000000..41e3136 --- /dev/null +++ b/include/glm/doc/api/a00647_source.html @@ -0,0 +1,147 @@ + + + + + + + +1.0.2 API documentation: intersect.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
intersect.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include <cfloat>
+
18 #include <limits>
+
19 #include "../glm.hpp"
+
20 #include "../geometric.hpp"
+
21 #include "../gtx/closest_point.hpp"
+
22 #include "../gtx/vector_query.hpp"
+
23 
+
24 #ifndef GLM_ENABLE_EXPERIMENTAL
+
25 # error "GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
26 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
27 # pragma message("GLM: GLM_GTX_closest_point extension included")
+
28 #endif
+
29 
+
30 namespace glm
+
31 {
+
34 
+
38  template<typename genType>
+
39  GLM_FUNC_DECL bool intersectRayPlane(
+
40  genType const& orig, genType const& dir,
+
41  genType const& planeOrig, genType const& planeNormal,
+
42  typename genType::value_type & intersectionDistance);
+
43 
+
47  template<typename T, qualifier Q>
+
48  GLM_FUNC_DECL bool intersectRayTriangle(
+
49  vec<3, T, Q> const& orig, vec<3, T, Q> const& dir,
+
50  vec<3, T, Q> const& v0, vec<3, T, Q> const& v1, vec<3, T, Q> const& v2,
+
51  vec<2, T, Q>& baryPosition, T& distance);
+
52 
+
55  template<typename genType>
+
56  GLM_FUNC_DECL bool intersectLineTriangle(
+
57  genType const& orig, genType const& dir,
+
58  genType const& vert0, genType const& vert1, genType const& vert2,
+
59  genType & position);
+
60 
+
64  template<typename genType>
+
65  GLM_FUNC_DECL bool intersectRaySphere(
+
66  genType const& rayStarting, genType const& rayNormalizedDirection,
+
67  genType const& sphereCenter, typename genType::value_type const sphereRadiusSquared,
+
68  typename genType::value_type & intersectionDistance);
+
69 
+
72  template<typename genType>
+
73  GLM_FUNC_DECL bool intersectRaySphere(
+
74  genType const& rayStarting, genType const& rayNormalizedDirection,
+
75  genType const& sphereCenter, const typename genType::value_type sphereRadius,
+
76  genType & intersectionPosition, genType & intersectionNormal);
+
77 
+
80  template<typename genType>
+
81  GLM_FUNC_DECL bool intersectLineSphere(
+
82  genType const& point0, genType const& point1,
+
83  genType const& sphereCenter, typename genType::value_type sphereRadius,
+
84  genType & intersectionPosition1, genType & intersectionNormal1,
+
85  genType & intersectionPosition2 = genType(), genType & intersectionNormal2 = genType());
+
86 
+
88 }//namespace glm
+
89 
+
90 #include "intersect.inl"
+
+
GLM_FUNC_DECL bool intersectRayPlane(genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
Compute the intersection of a ray and a plane.
+
GLM_FUNC_DECL bool intersectLineTriangle(genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
Compute the intersection of a line and a triangle.
+
GLM_FUNC_DECL T distance(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the distance between p0 and p1, i.e., length(p0 - p1).
+
GLM_FUNC_DECL bool intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
Compute the intersection of a ray and a sphere.
+
GLM_FUNC_DECL bool intersectRayTriangle(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dir, vec< 3, T, Q > const &v0, vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 2, T, Q > &baryPosition, T &distance)
Compute the intersection of a ray and a triangle.
+
GLM_FUNC_DECL bool intersectLineSphere(genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
Compute the intersection of a line and a sphere.
+ + + + diff --git a/include/glm/doc/api/a00650.html b/include/glm/doc/api/a00650.html new file mode 100644 index 0000000..26673df --- /dev/null +++ b/include/glm/doc/api/a00650.html @@ -0,0 +1,96 @@ + + + + + + + +1.0.2 API documentation: io.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
io.hpp File Reference
+
+
+ +

GLM_GTX_io +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_io

+
Author
Jan P Springer (regni.nosp@m.rpsj.nosp@m.@gmai.nosp@m.l.co.nosp@m.m)
+
See also
Core features (dependence)
+
+GLM_GTC_matrix_access (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file io.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00650_source.html b/include/glm/doc/api/a00650_source.html new file mode 100644 index 0000000..ea8cbf6 --- /dev/null +++ b/include/glm/doc/api/a00650_source.html @@ -0,0 +1,270 @@ + + + + + + + +1.0.2 API documentation: io.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
io.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependency:
+
23 #include "../glm.hpp"
+
24 #include "../gtx/quaternion.hpp"
+
25 
+
26 #ifndef GLM_ENABLE_EXPERIMENTAL
+
27 # error "GLM: GLM_GTX_io is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
28 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
29 # pragma message("GLM: GLM_GTX_io extension included")
+
30 #endif
+
31 
+
32 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
33 # pragma clang diagnostic push
+
34 # pragma clang diagnostic ignored "-Wpadded"
+
35 # pragma clang diagnostic ignored "-Wshorten-64-to-32"
+
36 # pragma clang diagnostic ignored "-Wglobal-constructors"
+
37 #endif
+
38 
+
39 #include <iosfwd> // std::basic_ostream<> (fwd)
+
40 #include <locale> // std::locale, std::locale::facet, std::locale::id
+
41 #include <utility> // std::pair<>
+
42 
+
43 namespace glm
+
44 {
+
47 
+
48  namespace io
+
49  {
+
50  enum order_type { column_major, row_major};
+
51 
+
52  template<typename CTy>
+
53  class format_punct : public std::locale::facet
+
54  {
+
55  typedef CTy char_type;
+
56 
+
57  public:
+
58 
+
59  static std::locale::id id;
+
60 
+
61  bool formatted;
+
62  unsigned precision;
+
63  unsigned width;
+
64  char_type separator;
+
65  char_type delim_left;
+
66  char_type delim_right;
+
67  char_type space;
+
68  char_type newline;
+
69  order_type order;
+
70 
+
71  GLM_FUNC_DISCARD_DECL explicit format_punct(size_t a = 0);
+
72  GLM_FUNC_DISCARD_DECL explicit format_punct(format_punct const&);
+
73  };
+
74 
+
75  template<typename CTy, typename CTr = std::char_traits<CTy> >
+
76  class basic_state_saver {
+
77 
+
78  public:
+
79 
+
80  GLM_FUNC_DISCARD_DECL explicit basic_state_saver(std::basic_ios<CTy,CTr>&);
+
81  GLM_FUNC_DISCARD_DECL ~basic_state_saver();
+
82 
+
83  private:
+
84 
+
85  typedef ::std::basic_ios<CTy,CTr> state_type;
+
86  typedef typename state_type::char_type char_type;
+
87  typedef ::std::ios_base::fmtflags flags_type;
+
88  typedef ::std::streamsize streamsize_type;
+
89  typedef ::std::locale const locale_type;
+
90 
+
91  state_type& state_;
+
92  flags_type flags_;
+
93  streamsize_type precision_;
+
94  streamsize_type width_;
+
95  char_type fill_;
+
96  locale_type locale_;
+
97 
+
98  GLM_FUNC_DECL basic_state_saver& operator=(basic_state_saver const&);
+
99  };
+
100 
+
101  typedef basic_state_saver<char> state_saver;
+
102  typedef basic_state_saver<wchar_t> wstate_saver;
+
103 
+
104  template<typename CTy, typename CTr = std::char_traits<CTy> >
+
105  class basic_format_saver
+
106  {
+
107  public:
+
108 
+
109  GLM_FUNC_DISCARD_DECL explicit basic_format_saver(std::basic_ios<CTy,CTr>&);
+
110  GLM_FUNC_DISCARD_DECL ~basic_format_saver();
+
111 
+
112  private:
+
113 
+
114  basic_state_saver<CTy> const bss_;
+
115 
+
116  GLM_FUNC_DECL basic_format_saver& operator=(basic_format_saver const&);
+
117  };
+
118 
+
119  typedef basic_format_saver<char> format_saver;
+
120  typedef basic_format_saver<wchar_t> wformat_saver;
+
121 
+
122  struct precision
+
123  {
+
124  unsigned value;
+
125 
+
126  GLM_FUNC_DISCARD_DECL explicit precision(unsigned);
+
127  };
+
128 
+
129  struct width
+
130  {
+
131  unsigned value;
+
132 
+
133  GLM_FUNC_DISCARD_DECL explicit width(unsigned);
+
134  };
+
135 
+
136  template<typename CTy>
+
137  struct delimeter
+
138  {
+
139  CTy value[3];
+
140 
+
141  GLM_FUNC_DISCARD_DECL explicit delimeter(CTy /* left */, CTy /* right */, CTy /* separator */ = ',');
+
142  };
+
143 
+
144  struct order
+
145  {
+
146  order_type value;
+
147 
+
148  GLM_FUNC_DISCARD_DECL explicit order(order_type);
+
149  };
+
150 
+
151  // functions, inlined (inline)
+
152 
+
153  template<typename FTy, typename CTy, typename CTr>
+
154  FTy const& get_facet(std::basic_ios<CTy,CTr>&);
+
155  template<typename FTy, typename CTy, typename CTr>
+
156  std::basic_ios<CTy,CTr>& formatted(std::basic_ios<CTy,CTr>&);
+
157  template<typename FTy, typename CTy, typename CTr>
+
158  std::basic_ios<CTy,CTr>& unformatted(std::basic_ios<CTy,CTr>&);
+
159 
+
160  template<typename CTy, typename CTr>
+
161  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, precision const&);
+
162  template<typename CTy, typename CTr>
+
163  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, width const&);
+
164  template<typename CTy, typename CTr>
+
165  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, delimeter<CTy> const&);
+
166  template<typename CTy, typename CTr>
+
167  std::basic_ostream<CTy, CTr>& operator<<(std::basic_ostream<CTy, CTr>&, order const&);
+
168  }//namespace io
+
169 
+
170  template<typename CTy, typename CTr, typename T, qualifier Q>
+
171  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, qua<T, Q> const&);
+
172  template<typename CTy, typename CTr, typename T, qualifier Q>
+
173  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<1, T, Q> const&);
+
174  template<typename CTy, typename CTr, typename T, qualifier Q>
+
175  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<2, T, Q> const&);
+
176  template<typename CTy, typename CTr, typename T, qualifier Q>
+
177  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<3, T, Q> const&);
+
178  template<typename CTy, typename CTr, typename T, qualifier Q>
+
179  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, vec<4, T, Q> const&);
+
180  template<typename CTy, typename CTr, typename T, qualifier Q>
+
181  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 2, T, Q> const&);
+
182  template<typename CTy, typename CTr, typename T, qualifier Q>
+
183  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 3, T, Q> const&);
+
184  template<typename CTy, typename CTr, typename T, qualifier Q>
+
185  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<2, 4, T, Q> const&);
+
186  template<typename CTy, typename CTr, typename T, qualifier Q>
+
187  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 2, T, Q> const&);
+
188  template<typename CTy, typename CTr, typename T, qualifier Q>
+
189  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 3, T, Q> const&);
+
190  template<typename CTy, typename CTr, typename T, qualifier Q>
+
191  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<3, 4, T, Q> const&);
+
192  template<typename CTy, typename CTr, typename T, qualifier Q>
+
193  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 2, T, Q> const&);
+
194  template<typename CTy, typename CTr, typename T, qualifier Q>
+
195  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 3, T, Q> const&);
+
196  template<typename CTy, typename CTr, typename T, qualifier Q>
+
197  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr>& operator<<(std::basic_ostream<CTy,CTr>&, mat<4, 4, T, Q> const&);
+
198 
+
199  template<typename CTy, typename CTr, typename T, qualifier Q>
+
200  GLM_FUNC_DISCARD_DECL std::basic_ostream<CTy,CTr> & operator<<(std::basic_ostream<CTy,CTr> &,
+
201  std::pair<mat<4, 4, T, Q> const, mat<4, 4, T, Q> const> const&);
+
202 
+
204 }//namespace glm
+
205 
+
206 #if GLM_COMPILER & GLM_COMPILER_CLANG
+
207 # pragma clang diagnostic pop
+
208 #endif
+
209 
+
210 #include "io.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00653.html b/include/glm/doc/api/a00653.html new file mode 100644 index 0000000..bc42213 --- /dev/null +++ b/include/glm/doc/api/a00653.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: iteration.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
iteration.hpp File Reference
+
+
+ +

GLM_GTX_iteration +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_iteration

+ +

Definition in file iteration.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00653_source.html b/include/glm/doc/api/a00653_source.html new file mode 100644 index 0000000..c7b9564 --- /dev/null +++ b/include/glm/doc/api/a00653_source.html @@ -0,0 +1,156 @@ + + + + + + + +1.0.2 API documentation: iteration.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
iteration.hpp
+
+
+Go to the documentation of this file.
1 
+
11 #pragma once
+
12 
+
13 // Dependencies
+
14 #include "../detail/setup.hpp"
+
15 #include "../detail/qualifier.hpp"
+
16 
+
17 #ifndef GLM_ENABLE_EXPERIMENTAL
+
18 # error "GLM: GLM_GTX_iteration is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
19 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_GTX_iteration extension included")
+
21 #endif
+
22 
+
23 #include <iterator>
+
24 
+
25 namespace glm
+
26 {
+
29  template<length_t L,typename T,qualifier Q>
+
30  GLM_FUNC_DECL GLM_CONSTEXPR T* begin(vec<L, T, Q>& v);
+
31  template<length_t C,length_t R,typename T,qualifier Q>
+
32  GLM_FUNC_DECL GLM_CONSTEXPR T* begin(mat<C, R, T, Q>& m);
+
33  template<typename T,qualifier Q>
+
34  GLM_FUNC_DECL GLM_CONSTEXPR T* begin(qua<T, Q>& q);
+
35  template<length_t L,typename T,qualifier Q>
+
36  GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const vec<L, T, Q>& v);
+
37  template<length_t C,length_t R,typename T,qualifier Q>
+
38  GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const mat<C, R, T, Q>& m);
+
39  template<typename T,qualifier Q>
+
40  GLM_FUNC_DECL GLM_CONSTEXPR const T* begin(const qua<T, Q>& q);
+
41 
+
42  template<length_t L,typename T,qualifier Q>
+
43  GLM_FUNC_DECL GLM_CONSTEXPR T* end(vec<L, T, Q>& v);
+
44  template<length_t C,length_t R,typename T,qualifier Q>
+
45  GLM_FUNC_DECL GLM_CONSTEXPR T* end(mat<C, R, T, Q>& m);
+
46  template<typename T,qualifier Q>
+
47  GLM_FUNC_DECL GLM_CONSTEXPR T* end(qua<T, Q>& q);
+
48  template<length_t L,typename T,qualifier Q>
+
49  GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const vec<L, T, Q>& v);
+
50  template<length_t C,length_t R,typename T,qualifier Q>
+
51  GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const mat<C, R, T, Q>& m);
+
52  template<typename T,qualifier Q>
+
53  GLM_FUNC_DECL GLM_CONSTEXPR const T* end(const qua<T, Q>& q);
+
54 
+
55  // Reverse iteration
+
56  // rbegin,rend
+
57  template<length_t L,typename T,qualifier Q>
+
58  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(vec<L, T, Q>& v);
+
59  template<length_t C,length_t R,typename T,qualifier Q>
+
60  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(mat<C, R, T, Q>& m);
+
61  template<typename T,qualifier Q>
+
62  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rbegin(qua<T, Q>& q);
+
63  template<length_t L,typename T,qualifier Q>
+
64  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const vec<L, T, Q>& v);
+
65  template<length_t C,length_t R,typename T,qualifier Q>
+
66  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const mat<C, R, T, Q>& m);
+
67  template<typename T,qualifier Q>
+
68  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rbegin(const qua<T, Q>& q);
+
69 
+
70  template<length_t L,typename T,qualifier Q>
+
71  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(vec<L, T, Q>& v);
+
72  template<length_t C,length_t R,typename T,qualifier Q>
+
73  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(mat<C, R, T, Q>& m);
+
74  template<typename T,qualifier Q>
+
75  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<T*> rend(qua<T, Q>& q);
+
76  template<length_t L,typename T,qualifier Q>
+
77  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const vec<L, T, Q>& v);
+
78  template<length_t C,length_t R,typename T,qualifier Q>
+
79  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const mat<C, R, T, Q>& m);
+
80  template<typename T,qualifier Q>
+
81  GLM_FUNC_DECL GLM_CONSTEXPR std::reverse_iterator<const T*> rend(const qua<T, Q>& q);
+
82 
+
83 
+
85 }//namespace glm
+
86 
+
87 #include "iteration.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00656.html b/include/glm/doc/api/a00656.html new file mode 100644 index 0000000..95bfa20 --- /dev/null +++ b/include/glm/doc/api/a00656.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: log_base.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
log_base.hpp File Reference
+
+
+ +

GLM_GTX_log_base +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType log (genType const &x, genType const &base)
 Logarithm for any base. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sign (vec< L, T, Q > const &x, vec< L, T, Q > const &base)
 Logarithm for any base. More...
 
+

Detailed Description

+

GLM_GTX_log_base

+
See also
Core features (dependence)
+ +

Definition in file log_base.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00656_source.html b/include/glm/doc/api/a00656_source.html new file mode 100644 index 0000000..e9c9e99 --- /dev/null +++ b/include/glm/doc/api/a00656_source.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: log_base.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
log_base.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_log_base is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_log_base extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename genType>
+
32  GLM_FUNC_DECL genType log(
+
33  genType const& x,
+
34  genType const& base);
+
35 
+
38  template<length_t L, typename T, qualifier Q>
+
39  GLM_FUNC_DECL vec<L, T, Q> sign(
+
40  vec<L, T, Q> const& x,
+
41  vec<L, T, Q> const& base);
+
42 
+
44 }//namespace glm
+
45 
+
46 #include "log_base.inl"
+
+
GLM_FUNC_DECL genType log(genType const &x, genType const &base)
Logarithm for any base.
+
GLM_FUNC_DECL vec< L, T, Q > sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)
Logarithm for any base.
+ + + + diff --git a/include/glm/doc/api/a00659.html b/include/glm/doc/api/a00659.html new file mode 100644 index 0000000..8799135 --- /dev/null +++ b/include/glm/doc/api/a00659.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: matrix_cross_product.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_cross_product.hpp File Reference
+
+
+ +

GLM_GTX_matrix_cross_product +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > matrixCross3 (vec< 3, T, Q > const &x)
 Build a cross product matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > matrixCross4 (vec< 3, T, Q > const &x)
 Build a cross product matrix. More...
 
+

Detailed Description

+

GLM_GTX_matrix_cross_product

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file matrix_cross_product.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00659_source.html b/include/glm/doc/api/a00659_source.html new file mode 100644 index 0000000..5d5d2ab --- /dev/null +++ b/include/glm/doc/api/a00659_source.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: matrix_cross_product.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_cross_product.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_matrix_cross_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_matrix_cross_product extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename T, qualifier Q>
+
33  GLM_FUNC_DECL mat<3, 3, T, Q> matrixCross3(
+
34  vec<3, T, Q> const& x);
+
35 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_DECL mat<4, 4, T, Q> matrixCross4(
+
40  vec<3, T, Q> const& x);
+
41 
+
43 }//namespace glm
+
44 
+
45 #include "matrix_cross_product.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > matrixCross4(vec< 3, T, Q > const &x)
Build a cross product matrix.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > matrixCross3(vec< 3, T, Q > const &x)
Build a cross product matrix.
+ + + + diff --git a/include/glm/doc/api/a00662.html b/include/glm/doc/api/a00662.html new file mode 100644 index 0000000..6e1ed91 --- /dev/null +++ b/include/glm/doc/api/a00662.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: matrix_decompose.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_decompose.hpp File Reference
+
+
+ +

GLM_GTX_matrix_decompose +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL bool decompose (mat< 4, 4, T, Q > const &modelMatrix, vec< 3, T, Q > &scale, qua< T, Q > &orientation, vec< 3, T, Q > &translation, vec< 3, T, Q > &skew, vec< 4, T, Q > &perspective)
 Decomposes a model matrix to translations, rotation and scale components. More...
 
+

Detailed Description

+

GLM_GTX_matrix_decompose

+
See also
Core features (dependence)
+ +

Definition in file matrix_decompose.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00662_source.html b/include/glm/doc/api/a00662_source.html new file mode 100644 index 0000000..9589309 --- /dev/null +++ b/include/glm/doc/api/a00662_source.html @@ -0,0 +1,119 @@ + + + + + + + +1.0.2 API documentation: matrix_decompose.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_decompose.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../mat4x4.hpp"
+
17 #include "../vec3.hpp"
+
18 #include "../vec4.hpp"
+
19 #include "../geometric.hpp"
+
20 #include "../gtc/quaternion.hpp"
+
21 #include "../gtc/matrix_transform.hpp"
+
22 
+
23 #ifndef GLM_ENABLE_EXPERIMENTAL
+
24 # error "GLM: GLM_GTX_matrix_decompose is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
25 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_GTX_matrix_decompose extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
36  template<typename T, qualifier Q>
+
37  GLM_FUNC_DISCARD_DECL bool decompose(
+
38  mat<4, 4, T, Q> const& modelMatrix,
+
39  vec<3, T, Q> & scale, qua<T, Q> & orientation, vec<3, T, Q> & translation, vec<3, T, Q> & skew, vec<4, T, Q> & perspective);
+
40 
+
41  // Recomposes a model matrix from a previously-decomposed matrix
+
42  template <typename T, qualifier Q>
+
43  GLM_FUNC_DISCARD_DECL mat<4, 4, T, Q> recompose(
+
44  vec<3, T, Q> const& scale, qua<T, Q> const& orientation, vec<3, T, Q> const& translation,
+
45  vec<3, T, Q> const& skew, vec<4, T, Q> const& perspective);
+
46 
+
48 }//namespace glm
+
49 
+
50 #include "matrix_decompose.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective(T fovy, T aspect, T near, T far)
Creates a matrix for a symmetric perspective-view frustum based on the default handedness and default...
+
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
+
GLM_FUNC_DISCARD_DECL bool decompose(mat< 4, 4, T, Q > const &modelMatrix, vec< 3, T, Q > &scale, qua< T, Q > &orientation, vec< 3, T, Q > &translation, vec< 3, T, Q > &skew, vec< 4, T, Q > &perspective)
Decomposes a model matrix to translations, rotation and scale components.
+ + + + diff --git a/include/glm/doc/api/a00665.html b/include/glm/doc/api/a00665.html new file mode 100644 index 0000000..6f52e01 --- /dev/null +++ b/include/glm/doc/api/a00665.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: matrix_factorisation.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_factorisation.hpp File Reference
+
+
+ +

GLM_GTX_matrix_factorisation +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > fliplr (mat< C, R, T, Q > const &in)
 Flips the matrix columns right and left. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > flipud (mat< C, R, T, Q > const &in)
 Flips the matrix rows up and down. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void qr_decompose (mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &q, mat< C,(C< R ? C :R), T, Q > &r)
 Performs QR factorisation of a matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void rq_decompose (mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &r, mat< C,(C< R ? C :R), T, Q > &q)
 Performs RQ factorisation of a matrix. More...
 
+

Detailed Description

+

GLM_GTX_matrix_factorisation

+
See also
Core features (dependence)
+ +

Definition in file matrix_factorisation.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00665_source.html b/include/glm/doc/api/a00665_source.html new file mode 100644 index 0000000..c3397c8 --- /dev/null +++ b/include/glm/doc/api/a00665_source.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: matrix_factorisation.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_factorisation.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_matrix_factorisation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_matrix_factorisation extension included")
+
22 #endif
+
23 
+
24 /*
+
25 Suggestions:
+
26  - Move helper functions flipud and fliplr to another file: They may be helpful in more general circumstances.
+
27  - Implement other types of matrix factorisation, such as: QL and LQ, L(D)U, eigendecompositions, etc...
+
28 */
+
29 
+
30 namespace glm
+
31 {
+
34 
+
38  template <length_t C, length_t R, typename T, qualifier Q>
+
39  GLM_FUNC_DECL mat<C, R, T, Q> flipud(mat<C, R, T, Q> const& in);
+
40 
+
44  template <length_t C, length_t R, typename T, qualifier Q>
+
45  GLM_FUNC_DECL mat<C, R, T, Q> fliplr(mat<C, R, T, Q> const& in);
+
46 
+
52  template <length_t C, length_t R, typename T, qualifier Q>
+
53  GLM_FUNC_DISCARD_DECL void qr_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& q, mat<C, (C < R ? C : R), T, Q>& r);
+
54 
+
61  template <length_t C, length_t R, typename T, qualifier Q>
+
62  GLM_FUNC_DISCARD_DECL void rq_decompose(mat<C, R, T, Q> const& in, mat<(C < R ? C : R), R, T, Q>& r, mat<C, (C < R ? C : R), T, Q>& q);
+
63 
+
65 }
+
66 
+
67 #include "matrix_factorisation.inl"
+
+
GLM_FUNC_DECL mat< C, R, T, Q > flipud(mat< C, R, T, Q > const &in)
Flips the matrix rows up and down.
+
GLM_FUNC_DISCARD_DECL void rq_decompose(mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &r, mat< C,(C< R ? C :R), T, Q > &q)
Performs RQ factorisation of a matrix.
+
GLM_FUNC_DECL mat< C, R, T, Q > fliplr(mat< C, R, T, Q > const &in)
Flips the matrix columns right and left.
+
GLM_FUNC_DISCARD_DECL void qr_decompose(mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &q, mat< C,(C< R ? C :R), T, Q > &r)
Performs QR factorisation of a matrix.
+ + + + diff --git a/include/glm/doc/api/a00668.html b/include/glm/doc/api/a00668.html new file mode 100644 index 0000000..6b063f0 --- /dev/null +++ b/include/glm/doc/api/a00668.html @@ -0,0 +1,114 @@ + + + + + + + +1.0.2 API documentation: matrix_interpolation.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_interpolation.hpp File Reference
+
+
+ +

GLM_GTX_matrix_interpolation +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void axisAngle (mat< 4, 4, T, Q > const &Mat, vec< 3, T, Q > &Axis, T &Angle)
 Get the axis and angle of the rotation from a matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > axisAngleMatrix (vec< 3, T, Q > const &Axis, T const Angle)
 Build a matrix from axis and angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > extractMatrixRotation (mat< 4, 4, T, Q > const &Mat)
 Extracts the rotation part of a matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > interpolate (mat< 4, 4, T, Q > const &m1, mat< 4, 4, T, Q > const &m2, T const Delta)
 Build a interpolation of 4 * 4 matrixes. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00668_source.html b/include/glm/doc/api/a00668_source.html new file mode 100644 index 0000000..c8a6fcb --- /dev/null +++ b/include/glm/doc/api/a00668_source.html @@ -0,0 +1,119 @@ + + + + + + + +1.0.2 API documentation: matrix_interpolation.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_interpolation.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_matrix_interpolation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_matrix_interpolation extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename T, qualifier Q>
+
33  GLM_FUNC_DISCARD_DECL void axisAngle(
+
34  mat<4, 4, T, Q> const& Mat, vec<3, T, Q> & Axis, T & Angle);
+
35 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_DECL mat<4, 4, T, Q> axisAngleMatrix(
+
40  vec<3, T, Q> const& Axis, T const Angle);
+
41 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL mat<4, 4, T, Q> extractMatrixRotation(
+
46  mat<4, 4, T, Q> const& Mat);
+
47 
+
51  template<typename T, qualifier Q>
+
52  GLM_FUNC_DECL mat<4, 4, T, Q> interpolate(
+
53  mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2, T const Delta);
+
54 
+
56 }//namespace glm
+
57 
+
58 #include "matrix_interpolation.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > axisAngleMatrix(vec< 3, T, Q > const &Axis, T const Angle)
Build a matrix from axis and angle.
+
GLM_FUNC_DISCARD_DECL void axisAngle(mat< 4, 4, T, Q > const &Mat, vec< 3, T, Q > &Axis, T &Angle)
Get the axis and angle of the rotation from a matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > extractMatrixRotation(mat< 4, 4, T, Q > const &Mat)
Extracts the rotation part of a matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > interpolate(mat< 4, 4, T, Q > const &m1, mat< 4, 4, T, Q > const &m2, T const Delta)
Build a interpolation of 4 * 4 matrixes.
+ + + + diff --git a/include/glm/doc/api/a00671.html b/include/glm/doc/api/a00671.html new file mode 100644 index 0000000..081a760 --- /dev/null +++ b/include/glm/doc/api/a00671.html @@ -0,0 +1,147 @@ + + + + + + + +1.0.2 API documentation: matrix_major_storage.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_major_storage.hpp File Reference
+
+
+ +

GLM_GTX_matrix_major_storage +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2 (mat< 2, 2, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2 (vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3 (mat< 3, 3, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3 (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4 (mat< 4, 4, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4 (vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2 (mat< 2, 2, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2 (vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)
 Build a row major matrix from row vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3 (mat< 3, 3, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3 (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Build a row major matrix from row vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4 (mat< 4, 4, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4 (vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)
 Build a row major matrix from row vectors. More...
 
+

Detailed Description

+

GLM_GTX_matrix_major_storage

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file matrix_major_storage.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00671_source.html b/include/glm/doc/api/a00671_source.html new file mode 100644 index 0000000..01e5e2b --- /dev/null +++ b/include/glm/doc/api/a00671_source.html @@ -0,0 +1,165 @@ + + + + + + + +1.0.2 API documentation: matrix_major_storage.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_major_storage.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_matrix_major_storage is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_matrix_major_storage extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename T, qualifier Q>
+
33  GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
+
34  vec<2, T, Q> const& v1,
+
35  vec<2, T, Q> const& v2);
+
36 
+
39  template<typename T, qualifier Q>
+
40  GLM_FUNC_DECL mat<2, 2, T, Q> rowMajor2(
+
41  mat<2, 2, T, Q> const& m);
+
42 
+
45  template<typename T, qualifier Q>
+
46  GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
+
47  vec<3, T, Q> const& v1,
+
48  vec<3, T, Q> const& v2,
+
49  vec<3, T, Q> const& v3);
+
50 
+
53  template<typename T, qualifier Q>
+
54  GLM_FUNC_DECL mat<3, 3, T, Q> rowMajor3(
+
55  mat<3, 3, T, Q> const& m);
+
56 
+
59  template<typename T, qualifier Q>
+
60  GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
+
61  vec<4, T, Q> const& v1,
+
62  vec<4, T, Q> const& v2,
+
63  vec<4, T, Q> const& v3,
+
64  vec<4, T, Q> const& v4);
+
65 
+
68  template<typename T, qualifier Q>
+
69  GLM_FUNC_DECL mat<4, 4, T, Q> rowMajor4(
+
70  mat<4, 4, T, Q> const& m);
+
71 
+
74  template<typename T, qualifier Q>
+
75  GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
+
76  vec<2, T, Q> const& v1,
+
77  vec<2, T, Q> const& v2);
+
78 
+
81  template<typename T, qualifier Q>
+
82  GLM_FUNC_DECL mat<2, 2, T, Q> colMajor2(
+
83  mat<2, 2, T, Q> const& m);
+
84 
+
87  template<typename T, qualifier Q>
+
88  GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
+
89  vec<3, T, Q> const& v1,
+
90  vec<3, T, Q> const& v2,
+
91  vec<3, T, Q> const& v3);
+
92 
+
95  template<typename T, qualifier Q>
+
96  GLM_FUNC_DECL mat<3, 3, T, Q> colMajor3(
+
97  mat<3, 3, T, Q> const& m);
+
98 
+
101  template<typename T, qualifier Q>
+
102  GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
+
103  vec<4, T, Q> const& v1,
+
104  vec<4, T, Q> const& v2,
+
105  vec<4, T, Q> const& v3,
+
106  vec<4, T, Q> const& v4);
+
107 
+
110  template<typename T, qualifier Q>
+
111  GLM_FUNC_DECL mat<4, 4, T, Q> colMajor4(
+
112  mat<4, 4, T, Q> const& m);
+
113 
+
115 }//namespace glm
+
116 
+
117 #include "matrix_major_storage.inl"
+
+
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2(mat< 2, 2, T, Q > const &m)
Build a column major matrix from other matrix.
+
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2(mat< 2, 2, T, Q > const &m)
Build a row major matrix from other matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4(mat< 4, 4, T, Q > const &m)
Build a row major matrix from other matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4(mat< 4, 4, T, Q > const &m)
Build a column major matrix from other matrix.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3(mat< 3, 3, T, Q > const &m)
Build a column major matrix from other matrix.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3(mat< 3, 3, T, Q > const &m)
Build a row major matrix from other matrix.
+ + + + diff --git a/include/glm/doc/api/a00674.html b/include/glm/doc/api/a00674.html new file mode 100644 index 0000000..1c93c4c --- /dev/null +++ b/include/glm/doc/api/a00674.html @@ -0,0 +1,145 @@ + + + + + + + +1.0.2 API documentation: matrix_operation.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_operation.hpp File Reference
+
+
+ +

GLM_GTX_matrix_operation +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > adjugate (mat< 2, 2, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > adjugate (mat< 3, 3, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > adjugate (mat< 4, 4, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > diagonal2x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 3, T, Q > diagonal2x3 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 4, T, Q > diagonal2x4 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 2, T, Q > diagonal3x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > diagonal3x3 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 4, T, Q > diagonal3x4 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 2, T, Q > diagonal4x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 3, T, Q > diagonal4x3 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > diagonal4x4 (vec< 4, T, Q > const &v)
 Build a diagonal matrix. More...
 
+

Detailed Description

+

GLM_GTX_matrix_operation

+
See also
Core features (dependence)
+ +

Definition in file matrix_operation.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00674_source.html b/include/glm/doc/api/a00674_source.html new file mode 100644 index 0000000..f2c6065 --- /dev/null +++ b/include/glm/doc/api/a00674_source.html @@ -0,0 +1,154 @@ + + + + + + + +1.0.2 API documentation: matrix_operation.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_operation.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_matrix_operation is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_matrix_operation extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T, qualifier Q>
+
32  GLM_FUNC_DECL mat<2, 2, T, Q> diagonal2x2(
+
33  vec<2, T, Q> const& v);
+
34 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL mat<2, 3, T, Q> diagonal2x3(
+
39  vec<2, T, Q> const& v);
+
40 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL mat<2, 4, T, Q> diagonal2x4(
+
45  vec<2, T, Q> const& v);
+
46 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL mat<3, 2, T, Q> diagonal3x2(
+
51  vec<2, T, Q> const& v);
+
52 
+
55  template<typename T, qualifier Q>
+
56  GLM_FUNC_DECL mat<3, 3, T, Q> diagonal3x3(
+
57  vec<3, T, Q> const& v);
+
58 
+
61  template<typename T, qualifier Q>
+
62  GLM_FUNC_DECL mat<3, 4, T, Q> diagonal3x4(
+
63  vec<3, T, Q> const& v);
+
64 
+
67  template<typename T, qualifier Q>
+
68  GLM_FUNC_DECL mat<4, 2, T, Q> diagonal4x2(
+
69  vec<2, T, Q> const& v);
+
70 
+
73  template<typename T, qualifier Q>
+
74  GLM_FUNC_DECL mat<4, 3, T, Q> diagonal4x3(
+
75  vec<3, T, Q> const& v);
+
76 
+
79  template<typename T, qualifier Q>
+
80  GLM_FUNC_DECL mat<4, 4, T, Q> diagonal4x4(
+
81  vec<4, T, Q> const& v);
+
82 
+
85  template<typename T, qualifier Q>
+
86  GLM_FUNC_DECL mat<2, 2, T, Q> adjugate(mat<2, 2, T, Q> const& m);
+
87 
+
90  template<typename T, qualifier Q>
+
91  GLM_FUNC_DECL mat<3, 3, T, Q> adjugate(mat<3, 3, T, Q> const& m);
+
92 
+
95  template<typename T, qualifier Q>
+
96  GLM_FUNC_DECL mat<4, 4, T, Q> adjugate(mat<4, 4, T, Q> const& m);
+
97 
+
99 }//namespace glm
+
100 
+
101 #include "matrix_operation.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > diagonal4x4(vec< 4, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 2, 2, T, Q > diagonal2x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 4, 3, T, Q > diagonal4x3(vec< 3, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > adjugate(mat< 4, 4, T, Q > const &m)
Build an adjugate matrix.
+
GLM_FUNC_DECL mat< 3, 2, T, Q > diagonal3x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 2, 3, T, Q > diagonal2x3(vec< 2, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > diagonal3x3(vec< 3, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 4, 2, T, Q > diagonal4x2(vec< 2, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 3, 4, T, Q > diagonal3x4(vec< 3, T, Q > const &v)
Build a diagonal matrix.
+
GLM_FUNC_DECL mat< 2, 4, T, Q > diagonal2x4(vec< 2, T, Q > const &v)
Build a diagonal matrix.
+ + + + diff --git a/include/glm/doc/api/a00677.html b/include/glm/doc/api/a00677.html new file mode 100644 index 0000000..38b9a29 --- /dev/null +++ b/include/glm/doc/api/a00677.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: matrix_query.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_query.hpp File Reference
+
+
+ +

GLM_GTX_matrix_query +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q, template< length_t, length_t, typename, qualifier > class matType>
GLM_FUNC_DECL bool isIdentity (matType< C, R, T, Q > const &m, T const &epsilon)
 Return whether a matrix is an identity matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 2, 2, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 3, 3, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 4, 4, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 2, 2, T, Q > const &m, T const &epsilon)
 Return whether a matrix a null matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 3, 3, T, Q > const &m, T const &epsilon)
 Return whether a matrix a null matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 4, 4, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a null matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q, template< length_t, length_t, typename, qualifier > class matType>
GLM_FUNC_DECL bool isOrthogonal (matType< C, R, T, Q > const &m, T const &epsilon)
 Return whether a matrix is an orthonormalized matrix. More...
 
+

Detailed Description

+

GLM_GTX_matrix_query

+
See also
Core features (dependence)
+
+GLM_GTX_vector_query (dependence)
+ +

Definition in file matrix_query.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00677_source.html b/include/glm/doc/api/a00677_source.html new file mode 100644 index 0000000..377b65b --- /dev/null +++ b/include/glm/doc/api/a00677_source.html @@ -0,0 +1,130 @@ + + + + + + + +1.0.2 API documentation: matrix_query.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_query.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include "../gtx/vector_query.hpp"
+
19 #include <limits>
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_matrix_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_matrix_query extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
34  template<typename T, qualifier Q>
+
35  GLM_FUNC_DECL bool isNull(mat<2, 2, T, Q> const& m, T const& epsilon);
+
36 
+
39  template<typename T, qualifier Q>
+
40  GLM_FUNC_DECL bool isNull(mat<3, 3, T, Q> const& m, T const& epsilon);
+
41 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL bool isNull(mat<4, 4, T, Q> const& m, T const& epsilon);
+
46 
+
49  template<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>
+
50  GLM_FUNC_DECL bool isIdentity(matType<C, R, T, Q> const& m, T const& epsilon);
+
51 
+
54  template<typename T, qualifier Q>
+
55  GLM_FUNC_DECL bool isNormalized(mat<2, 2, T, Q> const& m, T const& epsilon);
+
56 
+
59  template<typename T, qualifier Q>
+
60  GLM_FUNC_DECL bool isNormalized(mat<3, 3, T, Q> const& m, T const& epsilon);
+
61 
+
64  template<typename T, qualifier Q>
+
65  GLM_FUNC_DECL bool isNormalized(mat<4, 4, T, Q> const& m, T const& epsilon);
+
66 
+
69  template<length_t C, length_t R, typename T, qualifier Q, template<length_t, length_t, typename, qualifier> class matType>
+
70  GLM_FUNC_DECL bool isOrthogonal(matType<C, R, T, Q> const& m, T const& epsilon);
+
71 
+
73 }//namespace glm
+
74 
+
75 #include "matrix_query.inl"
+
+
GLM_FUNC_DECL bool isIdentity(matType< C, R, T, Q > const &m, T const &epsilon)
Return whether a matrix is an identity matrix.
+
GLM_FUNC_DECL bool isOrthogonal(matType< C, R, T, Q > const &m, T const &epsilon)
Return whether a matrix is an orthonormalized matrix.
+
GLM_FUNC_DECL bool isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)
Return whether a matrix is a normalized matrix.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+
GLM_FUNC_DECL bool isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)
Return whether a matrix is a null matrix.
+ + + + diff --git a/include/glm/doc/api/a00680.html b/include/glm/doc/api/a00680.html new file mode 100644 index 0000000..51c3c4a --- /dev/null +++ b/include/glm/doc/api/a00680.html @@ -0,0 +1,118 @@ + + + + + + + +1.0.2 API documentation: matrix_transform_2d.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix_transform_2d.hpp File Reference
+
+
+ +

GLM_GTX_matrix_transform_2d +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > rotate (mat< 3, 3, T, Q > const &m, T angle)
 Builds a rotation 3 * 3 matrix created from an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > scale (mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
 Builds a scale 3 * 3 matrix created from a vector of 2 components. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearX (mat< 3, 3, T, Q > const &m, T y)
 Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearY (mat< 3, 3, T, Q > const &m, T x)
 Builds a vertical (parallel to the y axis) shear 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > translate (mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
 Builds a translation 3 * 3 matrix created from a vector of 2 components. More...
 
+

Detailed Description

+

GLM_GTX_matrix_transform_2d

+
Author
Miguel Ángel Pérez Martínez
+
See also
Core features (dependence)
+ +

Definition in file matrix_transform_2d.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00680_source.html b/include/glm/doc/api/a00680_source.html new file mode 100644 index 0000000..53e1d86 --- /dev/null +++ b/include/glm/doc/api/a00680_source.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: matrix_transform_2d.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix_transform_2d.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../mat3x3.hpp"
+
18 #include "../vec2.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_matrix_transform_2d is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_matrix_transform_2d extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
35  template<typename T, qualifier Q>
+
36  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> translate(
+
37  mat<3, 3, T, Q> const& m,
+
38  vec<2, T, Q> const& v);
+
39 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> rotate(
+
46  mat<3, 3, T, Q> const& m,
+
47  T angle);
+
48 
+
53  template<typename T, qualifier Q>
+
54  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> scale(
+
55  mat<3, 3, T, Q> const& m,
+
56  vec<2, T, Q> const& v);
+
57 
+
62  template<typename T, qualifier Q>
+
63  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearX(
+
64  mat<3, 3, T, Q> const& m,
+
65  T y);
+
66 
+
71  template<typename T, qualifier Q>
+
72  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> shearY(
+
73  mat<3, 3, T, Q> const& m,
+
74  T x);
+
75 
+
77 }//namespace glm
+
78 
+
79 #include "matrix_transform_2d.inl"
+
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
Builds a scale 3 * 3 matrix created from a vector of 2 components.
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearY(mat< 3, 3, T, Q > const &m, T x)
Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
Builds a translation 3 * 3 matrix created from a vector of 2 components.
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearX(mat< 3, 3, T, Q > const &m, T y)
Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > rotate(mat< 3, 3, T, Q > const &m, T angle)
Builds a rotation 3 * 3 matrix created from an angle.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+ + + + diff --git a/include/glm/doc/api/a00683.html b/include/glm/doc/api/a00683.html new file mode 100644 index 0000000..ef09226 --- /dev/null +++ b/include/glm/doc/api/a00683.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: mixed_product.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
mixed_product.hpp File Reference
+
+
+ +

GLM_GTX_mixed_producte +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL T mixedProduct (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
 
+

Detailed Description

+

GLM_GTX_mixed_producte

+
See also
Core features (dependence)
+ +

Definition in file mixed_product.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00683_source.html b/include/glm/doc/api/a00683_source.html new file mode 100644 index 0000000..414a0c3 --- /dev/null +++ b/include/glm/doc/api/a00683_source.html @@ -0,0 +1,106 @@ + + + + + + + +1.0.2 API documentation: mixed_product.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mixed_product.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_mixed_product is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_mixed_product extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
30  template<typename T, qualifier Q>
+
31  GLM_FUNC_DECL T mixedProduct(
+
32  vec<3, T, Q> const& v1,
+
33  vec<3, T, Q> const& v2,
+
34  vec<3, T, Q> const& v3);
+
35 
+
37 }// namespace glm
+
38 
+
39 #include "mixed_product.inl"
+
+
GLM_FUNC_DECL T mixedProduct(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
+ + + + diff --git a/include/glm/doc/api/a00686.html b/include/glm/doc/api/a00686.html new file mode 100644 index 0000000..99f4e46 --- /dev/null +++ b/include/glm/doc/api/a00686.html @@ -0,0 +1,141 @@ + + + + + + + +1.0.2 API documentation: norm.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
norm.hpp File Reference
+
+
+ +

GLM_GTX_norm +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T distance2 (vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
 Returns the squared distance between p0 and p1, i.e., length2(p0 - p1). More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l1Norm (vec< 3, T, Q > const &v)
 Returns the L1 norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l1Norm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the L1 norm between x and y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l2Norm (vec< 3, T, Q > const &x)
 Returns the L2 norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l2Norm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the L2 norm between x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T length2 (vec< L, T, Q > const &x)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lMaxNorm (vec< 3, T, Q > const &x)
 Returns the LMax norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lMaxNorm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the LMax norm between x and y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lxNorm (vec< 3, T, Q > const &x, unsigned int Depth)
 Returns the L norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lxNorm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)
 Returns the L norm between x and y. More...
 
+

Detailed Description

+

GLM_GTX_norm

+
See also
Core features (dependence)
+
+GLM_GTX_quaternion (dependence)
+
+GLM_GTX_component_wise (dependence)
+ +

Definition in file norm.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00686_source.html b/include/glm/doc/api/a00686_source.html new file mode 100644 index 0000000..f9c3c3b --- /dev/null +++ b/include/glm/doc/api/a00686_source.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: norm.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
norm.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../geometric.hpp"
+
19 #include "../gtx/component_wise.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_norm is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_norm extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
34  template<length_t L, typename T, qualifier Q>
+
35  GLM_FUNC_DECL T length2(vec<L, T, Q> const& x);
+
36 
+
39  template<length_t L, typename T, qualifier Q>
+
40  GLM_FUNC_DECL T distance2(vec<L, T, Q> const& p0, vec<L, T, Q> const& p1);
+
41 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
+
46 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL T l1Norm(vec<3, T, Q> const& v);
+
51 
+
54  template<typename T, qualifier Q>
+
55  GLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
+
56 
+
59  template<typename T, qualifier Q>
+
60  GLM_FUNC_DECL T l2Norm(vec<3, T, Q> const& x);
+
61 
+
64  template<typename T, qualifier Q>
+
65  GLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y, unsigned int Depth);
+
66 
+
69  template<typename T, qualifier Q>
+
70  GLM_FUNC_DECL T lxNorm(vec<3, T, Q> const& x, unsigned int Depth);
+
71 
+
74  template<typename T, qualifier Q>
+
75  GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
+
76 
+
79  template<typename T, qualifier Q>
+
80  GLM_FUNC_DECL T lMaxNorm(vec<3, T, Q> const& x);
+
81 
+
83 }//namespace glm
+
84 
+
85 #include "norm.inl"
+
+
GLM_FUNC_DECL T lMaxNorm(vec< 3, T, Q > const &x)
Returns the LMax norm of v.
+
GLM_FUNC_DECL T distance2(vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).
+
GLM_FUNC_DECL T l1Norm(vec< 3, T, Q > const &v)
Returns the L1 norm of v.
+
GLM_FUNC_DECL T length2(vec< L, T, Q > const &x)
Returns the squared length of x.
+
GLM_FUNC_DECL T l2Norm(vec< 3, T, Q > const &x)
Returns the L2 norm of v.
+
GLM_FUNC_DECL T lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)
Returns the L norm of v.
+ + + + diff --git a/include/glm/doc/api/a00689.html b/include/glm/doc/api/a00689.html new file mode 100644 index 0000000..43b6b2b --- /dev/null +++ b/include/glm/doc/api/a00689.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: normal.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
normal.hpp File Reference
+
+
+ +

GLM_GTX_normal +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > triangleNormal (vec< 3, T, Q > const &p1, vec< 3, T, Q > const &p2, vec< 3, T, Q > const &p3)
 Computes triangle normal from triangle points. More...
 
+

Detailed Description

+

GLM_GTX_normal

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file normal.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00689_source.html b/include/glm/doc/api/a00689_source.html new file mode 100644 index 0000000..78409da --- /dev/null +++ b/include/glm/doc/api/a00689_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: normal.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
normal.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_normal is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_normal extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
33  template<typename T, qualifier Q>
+
34  GLM_FUNC_DECL vec<3, T, Q> triangleNormal(vec<3, T, Q> const& p1, vec<3, T, Q> const& p2, vec<3, T, Q> const& p3);
+
35 
+
37 }//namespace glm
+
38 
+
39 #include "normal.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > triangleNormal(vec< 3, T, Q > const &p1, vec< 3, T, Q > const &p2, vec< 3, T, Q > const &p3)
Computes triangle normal from triangle points.
+ + + + diff --git a/include/glm/doc/api/a00692.html b/include/glm/doc/api/a00692.html new file mode 100644 index 0000000..e873fb4 --- /dev/null +++ b/include/glm/doc/api/a00692.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: normalize_dot.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
normalize_dot.hpp File Reference
+
+
+ +

GLM_GTX_normalize_dot +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastNormalizeDot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Normalize parameters and returns the dot product of x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T normalizeDot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Normalize parameters and returns the dot product of x and y. More...
 
+

Detailed Description

+

GLM_GTX_normalize_dot

+
See also
Core features (dependence)
+
+GLM_GTX_fast_square_root (dependence)
+ +

Definition in file normalize_dot.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00692_source.html b/include/glm/doc/api/a00692_source.html new file mode 100644 index 0000000..bc9d5a2 --- /dev/null +++ b/include/glm/doc/api/a00692_source.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: normalize_dot.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
normalize_dot.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../gtx/fast_square_root.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_normalize_dot is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_normalize_dot extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
34  template<length_t L, typename T, qualifier Q>
+
35  GLM_FUNC_DECL T normalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
36 
+
41  template<length_t L, typename T, qualifier Q>
+
42  GLM_FUNC_DECL T fastNormalizeDot(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
43 
+
45 }//namespace glm
+
46 
+
47 #include "normalize_dot.inl"
+
+
GLM_FUNC_DECL T fastNormalizeDot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Normalize parameters and returns the dot product of x and y.
+
GLM_FUNC_DECL T normalizeDot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Normalize parameters and returns the dot product of x and y.
+ + + + diff --git a/include/glm/doc/api/a00695.html b/include/glm/doc/api/a00695.html new file mode 100644 index 0000000..e1e30a2 --- /dev/null +++ b/include/glm/doc/api/a00695.html @@ -0,0 +1,117 @@ + + + + + + + +1.0.2 API documentation: number_precision.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
number_precision.hpp File Reference
+
+
+ +

GLM_GTX_number_precision +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

+typedef f32 f32mat1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f32 f32mat1x1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f64 f64mat1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f64 f64mat1x1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+

Detailed Description

+

GLM_GTX_number_precision

+
See also
Core features (dependence)
+
+GLM_GTC_type_precision (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file number_precision.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00695_source.html b/include/glm/doc/api/a00695_source.html new file mode 100644 index 0000000..9dbeb0c --- /dev/null +++ b/include/glm/doc/api/a00695_source.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: number_precision.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
number_precision.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../glm.hpp"
+
19 #include "../gtc/type_precision.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_number_precision is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_number_precision extension included")
+
25 #endif
+
26 
+
27 namespace glm{
+
29  // Unsigned int vector types
+
30 
+
33 
+
35  // Float matrix types
+
36 
+
37  typedef f32 f32mat1;
+
38  typedef f32 f32mat1x1;
+
39  typedef f64 f64mat1;
+
40  typedef f64 f64mat1x1;
+
41 
+
43 }//namespace glm
+
44 
+
+
f64 f64mat1x1
Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
+
f32 f32mat1x1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
+
float f32
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:152
+
f64 f64mat1
Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
+
f32 f32mat1
Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
+
double f64
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:168
+ + + + diff --git a/include/glm/doc/api/a00698.html b/include/glm/doc/api/a00698.html new file mode 100644 index 0000000..fe617c7 --- /dev/null +++ b/include/glm/doc/api/a00698.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: optimum_pow.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
optimum_pow.hpp File Reference
+
+
+ +

GLM_GTX_optimum_pow +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType pow2 (genType const &x)
 Returns x raised to the power of 2. More...
 
template<typename genType >
GLM_FUNC_DECL genType pow3 (genType const &x)
 Returns x raised to the power of 3. More...
 
template<typename genType >
GLM_FUNC_DECL genType pow4 (genType const &x)
 Returns x raised to the power of 4. More...
 
+

Detailed Description

+

GLM_GTX_optimum_pow

+
See also
Core features (dependence)
+ +

Definition in file optimum_pow.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00698_source.html b/include/glm/doc/api/a00698_source.html new file mode 100644 index 0000000..ec49c22 --- /dev/null +++ b/include/glm/doc/api/a00698_source.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: optimum_pow.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
optimum_pow.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_optimum_pow is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_optimum_pow extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
32  template<typename genType>
+
33  GLM_FUNC_DECL genType pow2(genType const& x);
+
34 
+
38  template<typename genType>
+
39  GLM_FUNC_DECL genType pow3(genType const& x);
+
40 
+
44  template<typename genType>
+
45  GLM_FUNC_DECL genType pow4(genType const& x);
+
46 
+
48 }//namespace glm
+
49 
+
50 #include "optimum_pow.inl"
+
+
GLM_FUNC_DECL genType pow4(genType const &x)
Returns x raised to the power of 4.
+
GLM_FUNC_DECL genType pow2(genType const &x)
Returns x raised to the power of 2.
+
GLM_FUNC_DECL genType pow3(genType const &x)
Returns x raised to the power of 3.
+ + + + diff --git a/include/glm/doc/api/a00701.html b/include/glm/doc/api/a00701.html new file mode 100644 index 0000000..4cfb910 --- /dev/null +++ b/include/glm/doc/api/a00701.html @@ -0,0 +1,107 @@ + + + + + + + +1.0.2 API documentation: orthonormalize.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
orthonormalize.hpp File Reference
+
+
+ +

GLM_GTX_orthonormalize +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > orthonormalize (mat< 3, 3, T, Q > const &m)
 Returns the orthonormalized matrix of m. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > orthonormalize (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Orthonormalizes x according y. More...
 
+

Detailed Description

+

GLM_GTX_orthonormalize

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file orthonormalize.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00701_source.html b/include/glm/doc/api/a00701_source.html new file mode 100644 index 0000000..9497fdf --- /dev/null +++ b/include/glm/doc/api/a00701_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: orthonormalize.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
orthonormalize.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../vec3.hpp"
+
18 #include "../mat3x3.hpp"
+
19 #include "../geometric.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_orthonormalize is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_orthonormalize extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
35  template<typename T, qualifier Q>
+
36  GLM_FUNC_DECL mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m);
+
37 
+
41  template<typename T, qualifier Q>
+
42  GLM_FUNC_DECL vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y);
+
43 
+
45 }//namespace glm
+
46 
+
47 #include "orthonormalize.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
Orthonormalizes x according y.
+ + + + diff --git a/include/glm/doc/api/a00704.html b/include/glm/doc/api/a00704.html new file mode 100644 index 0000000..137f2a4 --- /dev/null +++ b/include/glm/doc/api/a00704.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: pca.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
pca.hpp File Reference
+
+
+ +

GLM_GTX_pca +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<length_t D, typename T , qualifier Q, typename I >
GLM_FUNC_DECL mat< D, D, T, Q > computeCovarianceMatrix (I const &b, I const &e)
 Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with relative coordinates (e.g., relative to the center of gravity of the object) Dereferencing an iterator of type I must yield a vec<D, T, Qgt;
 
+template<length_t D, typename T , qualifier Q, typename I >
GLM_FUNC_DECL mat< D, D, T, Q > computeCovarianceMatrix (I const &b, I const &e, vec< D, T, Q > const &c)
 Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with absolute coordinates and a precomputed center of gravity c Dereferencing an iterator of type I must yield a vec<D, T, Qgt;
 
template<length_t D, typename T , qualifier Q>
GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n)
 Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of gravity of the object) More...
 
template<length_t D, typename T , qualifier Q>
GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c)
 Compute a covariance matrix form an array of absolute coordinates v and a precomputed center of gravity c More...
 
template<length_t D, typename T , qualifier Q>
GLM_FUNC_DECL unsigned int findEigenvaluesSymReal (mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)
 Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the D Eigenvalues of the matrix, and also provides the corresponding Eigenvectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
+

Detailed Description

+

GLM_GTX_pca

+
See also
Core features (dependence)
+
+GLM_EXT_scalar_relational (dependence)
+ +

Definition in file pca.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00704_source.html b/include/glm/doc/api/a00704_source.html new file mode 100644 index 0000000..8d045da --- /dev/null +++ b/include/glm/doc/api/a00704_source.html @@ -0,0 +1,132 @@ + + + + + + + +1.0.2 API documentation: pca.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
pca.hpp
+
+
+Go to the documentation of this file.
1 
+
39 #pragma once
+
40 
+
41 // Dependency:
+
42 #include "../glm.hpp"
+
43 #include "../ext/scalar_relational.hpp"
+
44 
+
45 #ifndef GLM_ENABLE_EXPERIMENTAL
+
46 # error "GLM: GLM_GTX_pca is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
47 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
48 # pragma message("GLM: GLM_GTX_pca extension included")
+
49 #endif
+
50 
+
51 namespace glm {
+
54 
+
58  template<length_t D, typename T, qualifier Q>
+
59  GLM_INLINE mat<D, D, T, Q> computeCovarianceMatrix(vec<D, T, Q> const* v, size_t n);
+
60 
+
65  template<length_t D, typename T, qualifier Q>
+
66  GLM_INLINE mat<D, D, T, Q> computeCovarianceMatrix(vec<D, T, Q> const* v, size_t n, vec<D, T, Q> const& c);
+
67 
+
70  template<length_t D, typename T, qualifier Q, typename I>
+
71  GLM_FUNC_DECL mat<D, D, T, Q> computeCovarianceMatrix(I const& b, I const& e);
+
72 
+
75  template<length_t D, typename T, qualifier Q, typename I>
+
76  GLM_FUNC_DECL mat<D, D, T, Q> computeCovarianceMatrix(I const& b, I const& e, vec<D, T, Q> const& c);
+
77 
+
86  template<length_t D, typename T, qualifier Q>
+
87  GLM_FUNC_DECL unsigned int findEigenvaluesSymReal
+
88  (
+
89  mat<D, D, T, Q> const& covarMat,
+
90  vec<D, T, Q>& outEigenvalues,
+
91  mat<D, D, T, Q>& outEigenvectors
+
92  );
+
93 
+
96  template<typename T, qualifier Q>
+
97  GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec<2, T, Q>& eigenvalues, mat<2, 2, T, Q>& eigenvectors);
+
98 
+
101  template<typename T, qualifier Q>
+
102  GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec<3, T, Q>& eigenvalues, mat<3, 3, T, Q>& eigenvectors);
+
103 
+
106  template<typename T, qualifier Q>
+
107  GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec<4, T, Q>& eigenvalues, mat<4, 4, T, Q>& eigenvectors);
+
108 
+
110 }//namespace glm
+
111 
+
112 #include "pca.inl"
+
+
GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)
Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.
+
GLM_FUNC_DECL mat< D, D, T, Q > computeCovarianceMatrix(I const &b, I const &e, vec< D, T, Q > const &c)
Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with absolu...
+
GLM_FUNC_DECL GLM_CONSTEXPR genType e()
Return e constant.
+
GLM_FUNC_DECL unsigned int findEigenvaluesSymReal(mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)
Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the...
+ + + + diff --git a/include/glm/doc/api/a00707.html b/include/glm/doc/api/a00707.html new file mode 100644 index 0000000..98fbf21 --- /dev/null +++ b/include/glm/doc/api/a00707.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: perpendicular.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
perpendicular.hpp File Reference
+
+
+ +

GLM_GTX_perpendicular +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType perp (genType const &x, genType const &Normal)
 Projects x a perpendicular axis of Normal. More...
 
+

Detailed Description

+

GLM_GTX_perpendicular

+
See also
Core features (dependence)
+
+GLM_GTX_projection (dependence)
+ +

Definition in file perpendicular.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00707_source.html b/include/glm/doc/api/a00707_source.html new file mode 100644 index 0000000..cbcd84b --- /dev/null +++ b/include/glm/doc/api/a00707_source.html @@ -0,0 +1,104 @@ + + + + + + + +1.0.2 API documentation: perpendicular.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
perpendicular.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include "../gtx/projection.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_perpendicular is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_perpendicular extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
33  template<typename genType>
+
34  GLM_FUNC_DECL genType perp(genType const& x, genType const& Normal);
+
35 
+
37 }//namespace glm
+
38 
+
39 #include "perpendicular.inl"
+
+
GLM_FUNC_DECL genType perp(genType const &x, genType const &Normal)
Projects x a perpendicular axis of Normal.
+ + + + diff --git a/include/glm/doc/api/a00710.html b/include/glm/doc/api/a00710.html new file mode 100644 index 0000000..c0a32bb --- /dev/null +++ b/include/glm/doc/api/a00710.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: polar_coordinates.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
polar_coordinates.hpp File Reference
+
+
+ +

GLM_GTX_polar_coordinates +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > euclidean (vec< 2, T, Q > const &polar)
 Convert Polar to Euclidean coordinates. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > polar (vec< 3, T, Q > const &euclidean)
 Convert Euclidean to Polar coordinates, x is the latitude, y the longitude and z the xz distance. More...
 
+

Detailed Description

+

GLM_GTX_polar_coordinates

+
See also
Core features (dependence)
+ +

Definition in file polar_coordinates.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00710_source.html b/include/glm/doc/api/a00710_source.html new file mode 100644 index 0000000..6f339e5 --- /dev/null +++ b/include/glm/doc/api/a00710_source.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: polar_coordinates.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
polar_coordinates.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_polar_coordinates is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_polar_coordinates extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
32  template<typename T, qualifier Q>
+
33  GLM_FUNC_DECL vec<3, T, Q> polar(
+
34  vec<3, T, Q> const& euclidean);
+
35 
+
39  template<typename T, qualifier Q>
+
40  GLM_FUNC_DECL vec<3, T, Q> euclidean(
+
41  vec<2, T, Q> const& polar);
+
42 
+
44 }//namespace glm
+
45 
+
46 #include "polar_coordinates.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > polar(vec< 3, T, Q > const &euclidean)
Convert Euclidean to Polar coordinates, x is the latitude, y the longitude and z the xz distance.
+
GLM_FUNC_DECL vec< 3, T, Q > euclidean(vec< 2, T, Q > const &polar)
Convert Polar to Euclidean coordinates.
+ + + + diff --git a/include/glm/doc/api/a00713.html b/include/glm/doc/api/a00713.html new file mode 100644 index 0000000..955495b --- /dev/null +++ b/include/glm/doc/api/a00713.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: projection.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
projection.hpp File Reference
+
+
+ +

GLM_GTX_projection +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType proj (genType const &x, genType const &Normal)
 Projects x on Normal. More...
 
+

Detailed Description

+

GLM_GTX_projection

+
See also
Core features (dependence)
+ +

Definition in file projection.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00713_source.html b/include/glm/doc/api/a00713_source.html new file mode 100644 index 0000000..145d285 --- /dev/null +++ b/include/glm/doc/api/a00713_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: projection.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
projection.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../geometric.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_projection is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_projection extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
35  template<typename genType>
+
36  GLM_FUNC_DECL genType proj(genType const& x, genType const& Normal);
+
37 
+
39 }//namespace glm
+
40 
+
41 #include "projection.inl"
+
+
GLM_FUNC_DECL genType proj(genType const &x, genType const &Normal)
Projects x on Normal.
+ + + + diff --git a/include/glm/doc/api/a00716.html b/include/glm/doc/api/a00716.html new file mode 100644 index 0000000..52a8609 --- /dev/null +++ b/include/glm/doc/api/a00716.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: range.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
range.hpp File Reference
+
+
+ +

GLM_GTX_range +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_range

+
Author
Joshua Moerman
+ +

Definition in file range.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00716_source.html b/include/glm/doc/api/a00716_source.html new file mode 100644 index 0000000..b04d941 --- /dev/null +++ b/include/glm/doc/api/a00716_source.html @@ -0,0 +1,164 @@ + + + + + + + +1.0.2 API documentation: range.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
range.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../detail/setup.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_range is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_range extension included")
+
22 #endif
+
23 
+
24 #include "../gtc/type_ptr.hpp"
+
25 #include "../gtc/vec1.hpp"
+
26 
+
27 namespace glm
+
28 {
+
31 
+
32 # if GLM_COMPILER & GLM_COMPILER_VC
+
33 # pragma warning(push)
+
34 # pragma warning(disable : 4100) // unreferenced formal parameter
+
35 # endif
+
36 
+
37  template<typename T, qualifier Q>
+
38  inline length_t components(vec<1, T, Q> const& v)
+
39  {
+
40  return v.length();
+
41  }
+
42 
+
43  template<typename T, qualifier Q>
+
44  inline length_t components(vec<2, T, Q> const& v)
+
45  {
+
46  return v.length();
+
47  }
+
48 
+
49  template<typename T, qualifier Q>
+
50  inline length_t components(vec<3, T, Q> const& v)
+
51  {
+
52  return v.length();
+
53  }
+
54 
+
55  template<typename T, qualifier Q>
+
56  inline length_t components(vec<4, T, Q> const& v)
+
57  {
+
58  return v.length();
+
59  }
+
60 
+
61  template<typename genType>
+
62  inline length_t components(genType const& m)
+
63  {
+
64  return m.length() * m[0].length();
+
65  }
+
66 
+
67  template<typename genType>
+
68  inline typename genType::value_type const * begin(genType const& v)
+
69  {
+
70  return value_ptr(v);
+
71  }
+
72 
+
73  template<typename genType>
+
74  inline typename genType::value_type const * end(genType const& v)
+
75  {
+
76  return begin(v) + components(v);
+
77  }
+
78 
+
79  template<typename genType>
+
80  inline typename genType::value_type * begin(genType& v)
+
81  {
+
82  return value_ptr(v);
+
83  }
+
84 
+
85  template<typename genType>
+
86  inline typename genType::value_type * end(genType& v)
+
87  {
+
88  return begin(v) + components(v);
+
89  }
+
90 
+
91 # if GLM_COMPILER & GLM_COMPILER_VC
+
92 # pragma warning(pop)
+
93 # endif
+
94 
+
96 }//namespace glm
+
+
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &v)
Return the constant address to the data of the input parameter.
+ + + + diff --git a/include/glm/doc/api/a00719.html b/include/glm/doc/api/a00719.html new file mode 100644 index 0000000..701b236 --- /dev/null +++ b/include/glm/doc/api/a00719.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: raw_data.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
raw_data.hpp File Reference
+
+
+ +

GLM_GTX_raw_data +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Typedefs

typedef detail::uint8 byte
 Type for byte numbers. More...
 
typedef detail::uint32 dword
 Type for dword numbers. More...
 
typedef detail::uint64 qword
 Type for qword numbers. More...
 
typedef detail::uint16 word
 Type for word numbers. More...
 
+

Detailed Description

+

GLM_GTX_raw_data

+
See also
Core features (dependence)
+ +

Definition in file raw_data.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00719_source.html b/include/glm/doc/api/a00719_source.html new file mode 100644 index 0000000..218b138 --- /dev/null +++ b/include/glm/doc/api/a00719_source.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: raw_data.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
raw_data.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "../ext/scalar_uint_sized.hpp"
+
17 #include "../detail/setup.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_raw_data is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_raw_data extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  typedef detail::uint8 byte;
+
33 
+
36  typedef detail::uint16 word;
+
37 
+
40  typedef detail::uint32 dword;
+
41 
+
44  typedef detail::uint64 qword;
+
45 
+
47 }// namespace glm
+
48 
+
49 #include "raw_data.inl"
+
+
detail::uint8 byte
Type for byte numbers.
Definition: raw_data.hpp:32
+
detail::uint64 qword
Type for qword numbers.
Definition: raw_data.hpp:44
+
detail::uint16 word
Type for word numbers.
Definition: raw_data.hpp:36
+
detail::uint32 dword
Type for dword numbers.
Definition: raw_data.hpp:40
+ + + + diff --git a/include/glm/doc/api/a00722.html b/include/glm/doc/api/a00722.html new file mode 100644 index 0000000..f1fe9d4 --- /dev/null +++ b/include/glm/doc/api/a00722.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: rotate_normalized_axis.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
rotate_normalized_axis.hpp File Reference
+
+
+ +

GLM_GTX_rotate_normalized_axis +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotateNormalizedAxis (mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from a normalized axis and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotateNormalizedAxis (qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
 Rotates a quaternion from a vector of 3 components normalized axis and an angle. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00722_source.html b/include/glm/doc/api/a00722_source.html new file mode 100644 index 0000000..e5efcaa --- /dev/null +++ b/include/glm/doc/api/a00722_source.html @@ -0,0 +1,116 @@ + + + + + + + +1.0.2 API documentation: rotate_normalized_axis.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
rotate_normalized_axis.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../glm.hpp"
+
19 #include "../gtc/epsilon.hpp"
+
20 #include "../gtc/quaternion.hpp"
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTX_rotate_normalized_axis is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTX_rotate_normalized_axis extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
44  template<typename T, qualifier Q>
+
45  GLM_FUNC_DECL mat<4, 4, T, Q> rotateNormalizedAxis(
+
46  mat<4, 4, T, Q> const& m,
+
47  T const& angle,
+
48  vec<3, T, Q> const& axis);
+
49 
+
57  template<typename T, qualifier Q>
+
58  GLM_FUNC_DECL qua<T, Q> rotateNormalizedAxis(
+
59  qua<T, Q> const& q,
+
60  T const& angle,
+
61  vec<3, T, Q> const& axis);
+
62 
+
64 }//namespace glm
+
65 
+
66 #include "rotate_normalized_axis.inl"
+
+
GLM_FUNC_DECL qua< T, Q > rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
Rotates a quaternion from a vector of 3 components normalized axis and an angle.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
+ + + + diff --git a/include/glm/doc/api/a00725.html b/include/glm/doc/api/a00725.html new file mode 100644 index 0000000..13c3f3e --- /dev/null +++ b/include/glm/doc/api/a00725.html @@ -0,0 +1,143 @@ + + + + + + + +1.0.2 API documentation: rotate_vector.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
rotate_vector.hpp File Reference
+
+
+ +

GLM_GTX_rotate_vector +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation (vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
 Build a rotation matrix from a normal and a up vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > rotate (vec< 2, T, Q > const &v, T const &angle)
 Rotate a two dimensional vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
 Rotate a three dimensional vector around an axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
 Rotate a four dimensional vector around an axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateX (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the X axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateX (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the X axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateY (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateY (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateZ (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the Z axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateZ (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the Z axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > slerp (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)
 Returns Spherical interpolation between two vectors. More...
 
+

Detailed Description

+

GLM_GTX_rotate_vector

+
See also
Core features (dependence)
+
+GLM_GTX_transform (dependence)
+ +

Definition in file rotate_vector.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00725_source.html b/include/glm/doc/api/a00725_source.html new file mode 100644 index 0000000..d4c2dc7 --- /dev/null +++ b/include/glm/doc/api/a00725_source.html @@ -0,0 +1,167 @@ + + + + + + + +1.0.2 API documentation: rotate_vector.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
rotate_vector.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../gtx/transform.hpp"
+
18 #include "../gtc/epsilon.hpp"
+
19 #include "../ext/vector_relational.hpp"
+
20 #include "../glm.hpp"
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTX_rotate_vector is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTX_rotate_vector extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
40  template<typename T, qualifier Q>
+
41  GLM_FUNC_DECL vec<3, T, Q> slerp(
+
42  vec<3, T, Q> const& x,
+
43  vec<3, T, Q> const& y,
+
44  T const& a);
+
45 
+
48  template<typename T, qualifier Q>
+
49  GLM_FUNC_DECL vec<2, T, Q> rotate(
+
50  vec<2, T, Q> const& v,
+
51  T const& angle);
+
52 
+
55  template<typename T, qualifier Q>
+
56  GLM_FUNC_DECL vec<3, T, Q> rotate(
+
57  vec<3, T, Q> const& v,
+
58  T const& angle,
+
59  vec<3, T, Q> const& normal);
+
60 
+
63  template<typename T, qualifier Q>
+
64  GLM_FUNC_DECL vec<4, T, Q> rotate(
+
65  vec<4, T, Q> const& v,
+
66  T const& angle,
+
67  vec<3, T, Q> const& normal);
+
68 
+
71  template<typename T, qualifier Q>
+
72  GLM_FUNC_DECL vec<3, T, Q> rotateX(
+
73  vec<3, T, Q> const& v,
+
74  T const& angle);
+
75 
+
78  template<typename T, qualifier Q>
+
79  GLM_FUNC_DECL vec<3, T, Q> rotateY(
+
80  vec<3, T, Q> const& v,
+
81  T const& angle);
+
82 
+
85  template<typename T, qualifier Q>
+
86  GLM_FUNC_DECL vec<3, T, Q> rotateZ(
+
87  vec<3, T, Q> const& v,
+
88  T const& angle);
+
89 
+
92  template<typename T, qualifier Q>
+
93  GLM_FUNC_DECL vec<4, T, Q> rotateX(
+
94  vec<4, T, Q> const& v,
+
95  T const& angle);
+
96 
+
99  template<typename T, qualifier Q>
+
100  GLM_FUNC_DECL vec<4, T, Q> rotateY(
+
101  vec<4, T, Q> const& v,
+
102  T const& angle);
+
103 
+
106  template<typename T, qualifier Q>
+
107  GLM_FUNC_DECL vec<4, T, Q> rotateZ(
+
108  vec<4, T, Q> const& v,
+
109  T const& angle);
+
110 
+
113  template<typename T, qualifier Q>
+
114  GLM_FUNC_DECL mat<4, 4, T, Q> orientation(
+
115  vec<3, T, Q> const& Normal,
+
116  vec<3, T, Q> const& Up);
+
117 
+
119 }//namespace glm
+
120 
+
121 #include "rotate_vector.inl"
+
+
GLM_FUNC_DECL vec< 4, T, Q > rotateY(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Y axis.
+
GLM_FUNC_DECL vec< 4, T, Q > rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
Rotate a four dimensional vector around an axis.
+
GLM_FUNC_DECL vec< 4, T, Q > rotateX(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the X axis.
+
GLM_FUNC_DECL vec< 4, T, Q > rotateZ(vec< 4, T, Q > const &v, T const &angle)
Rotate a four dimensional vector around the Z axis.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation(vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
Build a rotation matrix from a normal and a up vector.
+
GLM_FUNC_DECL vec< 3, T, Q > slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)
Returns Spherical interpolation between two vectors.
+ + + + diff --git a/include/glm/doc/api/a00728.html b/include/glm/doc/api/a00728.html new file mode 100644 index 0000000..5fcc0da --- /dev/null +++ b/include/glm/doc/api/a00728.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: scalar_multiplication.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_multiplication.hpp File Reference
+
+ + + + + diff --git a/include/glm/doc/api/a00728_source.html b/include/glm/doc/api/a00728_source.html new file mode 100644 index 0000000..5927d03 --- /dev/null +++ b/include/glm/doc/api/a00728_source.html @@ -0,0 +1,154 @@ + + + + + + + +1.0.2 API documentation: scalar_multiplication.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scalar_multiplication.hpp
+
+
+Go to the documentation of this file.
1 
+
18 #pragma once
+
19 
+
20 #include "../detail/setup.hpp"
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTX_scalar_multiplication is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTX_scalar_multiplication extension included")
+
26 #endif
+
27 
+
28 #include "../vec2.hpp"
+
29 #include "../vec3.hpp"
+
30 #include "../vec4.hpp"
+
31 #include "../mat2x2.hpp"
+
32 #include <type_traits>
+
33 
+
34 namespace glm
+
35 {
+
38 
+
39  template<typename T, typename Vec>
+
40  using return_type_scalar_multiplication = typename std::enable_if<
+
41  !std::is_same<T, float>::value // T may not be a float
+
42  && std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...)
+
43  >::type;
+
44 
+
45 #define GLM_IMPLEMENT_SCAL_MULT(Vec) \
+
46  template<typename T> \
+
47  return_type_scalar_multiplication<T, Vec> \
+
48  operator*(T const& s, Vec rh){ \
+
49  return rh *= static_cast<float>(s); \
+
50  } \
+
51  \
+
52  template<typename T> \
+
53  return_type_scalar_multiplication<T, Vec> \
+
54  operator*(Vec lh, T const& s){ \
+
55  return lh *= static_cast<float>(s); \
+
56  } \
+
57  \
+
58  template<typename T> \
+
59  return_type_scalar_multiplication<T, Vec> \
+
60  operator/(Vec lh, T const& s){ \
+
61  return lh *= 1.0f / static_cast<float>(s); \
+
62  }
+
63 
+
64 GLM_IMPLEMENT_SCAL_MULT(vec2)
+
65 GLM_IMPLEMENT_SCAL_MULT(vec3)
+
66 GLM_IMPLEMENT_SCAL_MULT(vec4)
+
67 
+
68 GLM_IMPLEMENT_SCAL_MULT(mat2)
+
69 GLM_IMPLEMENT_SCAL_MULT(mat2x3)
+
70 GLM_IMPLEMENT_SCAL_MULT(mat2x4)
+
71 GLM_IMPLEMENT_SCAL_MULT(mat3x2)
+
72 GLM_IMPLEMENT_SCAL_MULT(mat3)
+
73 GLM_IMPLEMENT_SCAL_MULT(mat3x4)
+
74 GLM_IMPLEMENT_SCAL_MULT(mat4x2)
+
75 GLM_IMPLEMENT_SCAL_MULT(mat4x3)
+
76 GLM_IMPLEMENT_SCAL_MULT(mat4)
+
77 
+
78 #undef GLM_IMPLEMENT_SCAL_MULT
+
79 } // namespace glm
+
+
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
mat< 4, 3, float, defaultp > mat4x3
4 columns of 3 components matrix of single-precision floating-point numbers.
+
mat< 3, 2, float, defaultp > mat3x2
3 columns of 2 components matrix of single-precision floating-point numbers.
+
mat< 2, 4, float, defaultp > mat2x4
2 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 2, 3, float, defaultp > mat2x3
2 columns of 3 components matrix of single-precision floating-point numbers.
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+
mat< 3, 4, float, defaultp > mat3x4
3 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 4, 2, float, defaultp > mat4x2
4 columns of 2 components matrix of single-precision floating-point numbers.
+
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00731.html b/include/glm/doc/api/a00731.html new file mode 100644 index 0000000..89cf6d8 --- /dev/null +++ b/include/glm/doc/api/a00731.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: spline.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
spline.hpp File Reference
+
+
+ +

GLM_GTX_spline +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 Return a point from a catmull rom curve. More...
 
template<typename genType >
GLM_FUNC_DECL genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 Return a point from a cubic curve. More...
 
template<typename genType >
GLM_FUNC_DECL genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 Return a point from a hermite curve. More...
 
+

Detailed Description

+

GLM_GTX_spline

+
See also
Core features (dependence)
+ +

Definition in file spline.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00731_source.html b/include/glm/doc/api/a00731_source.html new file mode 100644 index 0000000..ee825e7 --- /dev/null +++ b/include/glm/doc/api/a00731_source.html @@ -0,0 +1,127 @@ + + + + + + + +1.0.2 API documentation: spline.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
spline.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../gtx/optimum_pow.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_spline is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_spline extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  template<typename genType>
+
33  GLM_FUNC_DECL genType catmullRom(
+
34  genType const& v1,
+
35  genType const& v2,
+
36  genType const& v3,
+
37  genType const& v4,
+
38  typename genType::value_type const& s);
+
39 
+
42  template<typename genType>
+
43  GLM_FUNC_DECL genType hermite(
+
44  genType const& v1,
+
45  genType const& t1,
+
46  genType const& v2,
+
47  genType const& t2,
+
48  typename genType::value_type const& s);
+
49 
+
52  template<typename genType>
+
53  GLM_FUNC_DECL genType cubic(
+
54  genType const& v1,
+
55  genType const& v2,
+
56  genType const& v3,
+
57  genType const& v4,
+
58  typename genType::value_type const& s);
+
59 
+
61 }//namespace glm
+
62 
+
63 #include "spline.inl"
+
+
GLM_FUNC_DECL genType cubic(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a cubic curve.
+
GLM_FUNC_DECL genType catmullRom(genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
Return a point from a catmull rom curve.
+
GLM_FUNC_DECL genType hermite(genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
Return a point from a hermite curve.
+ + + + diff --git a/include/glm/doc/api/a00734.html b/include/glm/doc/api/a00734.html new file mode 100644 index 0000000..0dbb885 --- /dev/null +++ b/include/glm/doc/api/a00734.html @@ -0,0 +1,123 @@ + + + + + + + +1.0.2 API documentation: std_based_type.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
std_based_type.hpp File Reference
+
+
+ +

GLM_GTX_std_based_type +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, std::size_t, defaultp > size1
 Vector type based of one std::size_t component. More...
 
typedef vec< 1, std::size_t, defaultp > size1_t
 Vector type based of one std::size_t component. More...
 
typedef vec< 2, std::size_t, defaultp > size2
 Vector type based of two std::size_t components. More...
 
typedef vec< 2, std::size_t, defaultp > size2_t
 Vector type based of two std::size_t components. More...
 
typedef vec< 3, std::size_t, defaultp > size3
 Vector type based of three std::size_t components. More...
 
typedef vec< 3, std::size_t, defaultp > size3_t
 Vector type based of three std::size_t components. More...
 
typedef vec< 4, std::size_t, defaultp > size4
 Vector type based of four std::size_t components. More...
 
typedef vec< 4, std::size_t, defaultp > size4_t
 Vector type based of four std::size_t components. More...
 
+

Detailed Description

+

GLM_GTX_std_based_type

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file std_based_type.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00734_source.html b/include/glm/doc/api/a00734_source.html new file mode 100644 index 0000000..a401118 --- /dev/null +++ b/include/glm/doc/api/a00734_source.html @@ -0,0 +1,124 @@ + + + + + + + +1.0.2 API documentation: std_based_type.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
std_based_type.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include <cstdlib>
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_std_based_type is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_std_based_type extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
33  typedef vec<1, std::size_t, defaultp> size1;
+
34 
+
37  typedef vec<2, std::size_t, defaultp> size2;
+
38 
+
41  typedef vec<3, std::size_t, defaultp> size3;
+
42 
+
45  typedef vec<4, std::size_t, defaultp> size4;
+
46 
+
49  typedef vec<1, std::size_t, defaultp> size1_t;
+
50 
+
53  typedef vec<2, std::size_t, defaultp> size2_t;
+
54 
+
57  typedef vec<3, std::size_t, defaultp> size3_t;
+
58 
+
61  typedef vec<4, std::size_t, defaultp> size4_t;
+
62 
+
64 }//namespace glm
+
65 
+
66 #include "std_based_type.inl"
+
+
vec< 3, std::size_t, defaultp > size3_t
Vector type based of three std::size_t components.
+
vec< 3, std::size_t, defaultp > size3
Vector type based of three std::size_t components.
+
vec< 1, std::size_t, defaultp > size1
Vector type based of one std::size_t component.
+
vec< 2, std::size_t, defaultp > size2_t
Vector type based of two std::size_t components.
+
vec< 2, std::size_t, defaultp > size2
Vector type based of two std::size_t components.
+
vec< 4, std::size_t, defaultp > size4
Vector type based of four std::size_t components.
+
vec< 4, std::size_t, defaultp > size4_t
Vector type based of four std::size_t components.
+
vec< 1, std::size_t, defaultp > size1_t
Vector type based of one std::size_t component.
+ + + + diff --git a/include/glm/doc/api/a00737.html b/include/glm/doc/api/a00737.html new file mode 100644 index 0000000..036a237 --- /dev/null +++ b/include/glm/doc/api/a00737.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: string_cast.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
string_cast.hpp File Reference
+
+
+ +

GLM_GTX_string_cast +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL std::string to_string (genType const &x)
 Create a string from a GLM vector or matrix typed variable. More...
 
+

Detailed Description

+

GLM_GTX_string_cast

+
See also
Core features (dependence)
+
+GLM_GTX_integer (dependence)
+
+GLM_GTX_quaternion (dependence)
+ +

Definition in file string_cast.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00737_source.html b/include/glm/doc/api/a00737_source.html new file mode 100644 index 0000000..f15a2fe --- /dev/null +++ b/include/glm/doc/api/a00737_source.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: string_cast.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
string_cast.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../glm.hpp"
+
19 #include "../gtc/type_precision.hpp"
+
20 #include "../gtc/quaternion.hpp"
+
21 #include "../gtx/dual_quaternion.hpp"
+
22 #include <string>
+
23 #include <cmath>
+
24 #include <cstring>
+
25 
+
26 #ifndef GLM_ENABLE_EXPERIMENTAL
+
27 # error "GLM: GLM_GTX_string_cast is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
28 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
29 # pragma message("GLM: GLM_GTX_string_cast extension included")
+
30 #endif
+
31 
+
32 namespace glm
+
33 {
+
36 
+
39  template<typename genType>
+
40  GLM_FUNC_DECL std::string to_string(genType const& x);
+
41 
+
43 }//namespace glm
+
44 
+
45 #include "string_cast.inl"
+
+
GLM_FUNC_DECL std::string to_string(genType const &x)
Create a string from a GLM vector or matrix typed variable.
+ + + + diff --git a/include/glm/doc/api/a00740.html b/include/glm/doc/api/a00740.html new file mode 100644 index 0000000..4bd4435 --- /dev/null +++ b/include/glm/doc/api/a00740.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: structured_bindings.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
structured_bindings.hpp File Reference
+
+ + + + + diff --git a/include/glm/doc/api/a00740_source.html b/include/glm/doc/api/a00740_source.html new file mode 100644 index 0000000..0dce005 --- /dev/null +++ b/include/glm/doc/api/a00740_source.html @@ -0,0 +1,163 @@ + + + + + + + +1.0.2 API documentation: structured_bindings.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
structured_bindings.hpp
+
+
+Go to the documentation of this file.
1 
+
9 #pragma once
+
10 
+
11 // Dependency:
+
12 #include "../glm.hpp"
+
13 #include "../gtx/quaternion.hpp"
+
14 
+
15 #ifdef __cpp_structured_bindings
+
16 #if __cpp_structured_bindings >= 201606L
+
17 #include <utility>
+
18 #include <cstddef>
+
19 namespace std {
+
20  template<glm::length_t L,typename T,glm::qualifier Q>
+
21  struct tuple_size<glm::vec<L, T, Q>> {
+
22  static constexpr size_t value = L;
+
23  };
+
24  template<glm::length_t C,glm::length_t R, typename T, glm::qualifier Q>
+
25  struct tuple_size<glm::mat<C,R, T, Q>> {
+
26  static constexpr size_t value = C;
+
27  };
+
28  template<typename T, glm::qualifier Q>
+
29  struct tuple_size<glm::qua<T, Q>> {
+
30  static constexpr size_t value = 4;
+
31  };
+
32  template<std::size_t I,glm::length_t L,typename T,glm::qualifier Q>
+
33  struct tuple_element<I, glm::vec<L,T,Q>>
+
34  {
+
35  GLM_STATIC_ASSERT(I < L,"Index out of bounds");
+
36  typedef T type;
+
37  };
+
38  template<std::size_t I, glm::length_t C, glm::length_t R, typename T, glm::qualifier Q>
+
39  struct tuple_element<I, glm::mat<C,R, T, Q>>
+
40  {
+
41  GLM_STATIC_ASSERT(I < C, "Index out of bounds");
+
42  typedef glm::vec<R,T,Q> type;
+
43  };
+
44  template<std::size_t I, typename T, glm::qualifier Q>
+
45  struct tuple_element<I, glm::qua<T, Q>>
+
46  {
+
47  GLM_STATIC_ASSERT(I < 4, "Index out of bounds");
+
48  typedef T type;
+
49  };
+
50 
+
51 }
+
52 #endif
+
53 #endif
+
54 
+
55 #ifndef GLM_ENABLE_EXPERIMENTAL
+
56 # error "GLM: GLM_GTX_iteration is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
57 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
58 # pragma message("GLM: GLM_GTX_io extension included")
+
59 #endif
+
60 
+
61 namespace glm
+
62 {
+
65 
+
66  template<length_t I, length_t L, typename T, qualifier Q>
+
67  GLM_FUNC_DECL GLM_CONSTEXPR T& get(vec<L, T, Q>& v);
+
68  template<length_t I, length_t L, typename T, qualifier Q>
+
69  GLM_FUNC_DECL GLM_CONSTEXPR T const& get(vec<L, T, Q> const& v);
+
70 
+
71  template<length_t I, length_t C, length_t R, typename T, qualifier Q>
+
72  GLM_FUNC_DECL GLM_CONSTEXPR vec<R, T, Q>& get(mat<C, R, T, Q>& m);
+
73  template<length_t I, length_t C, length_t R, typename T, qualifier Q>
+
74  GLM_FUNC_DECL GLM_CONSTEXPR vec<R, T, Q> const& get(mat<C, R, T, Q> const& m);
+
75 
+
76  template<length_t I, typename T, qualifier Q>
+
77  GLM_FUNC_DECL GLM_CONSTEXPR T& get(qua<T, Q>& q);
+
78  template<length_t I, typename T, qualifier Q>
+
79  GLM_FUNC_DECL GLM_CONSTEXPR T const& get(qua<T, Q> const& q);
+
80 
+
81 #if GLM_HAS_RVALUE_REFERENCES
+
82  template<length_t I, length_t L,typename T, qualifier Q>
+
83  GLM_FUNC_DECL GLM_CONSTEXPR T get(vec<L,T, Q> const&& v);
+
84  template<length_t I,length_t C,length_t R, typename T, qualifier Q>
+
85  GLM_FUNC_DECL GLM_CONSTEXPR vec<R,T,Q> get(mat<C,R,T, Q> const&& m);
+
86  template<length_t I, typename T, qualifier Q>
+
87  GLM_FUNC_DECL GLM_CONSTEXPR T get(qua<T, Q> const&& q);
+
88 #endif
+
89 }//namespace glm
+
91 
+
92 #include "structured_bindings.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00743.html b/include/glm/doc/api/a00743.html new file mode 100644 index 0000000..e95b57f --- /dev/null +++ b/include/glm/doc/api/a00743.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: texture.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
texture.hpp File Reference
+
+
+ +

GLM_GTX_texture +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
levels (vec< L, T, Q > const &Extent)
 Compute the number of mipmaps levels necessary to create a mipmap complete texture. More...
 
+

Detailed Description

+

GLM_GTX_texture

+
See also
Core features (dependence)
+ +

Definition in file texture.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00743_source.html b/include/glm/doc/api/a00743_source.html new file mode 100644 index 0000000..4fa51cc --- /dev/null +++ b/include/glm/doc/api/a00743_source.html @@ -0,0 +1,106 @@ + + + + + + + +1.0.2 API documentation: texture.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
texture.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../gtc/integer.hpp"
+
18 #include "../gtx/component_wise.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_texture is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_texture extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
37  template <length_t L, typename T, qualifier Q>
+
38  T levels(vec<L, T, Q> const& Extent);
+
39 
+
41 }// namespace glm
+
42 
+
43 #include "texture.inl"
+
44 
+
+
T levels(vec< L, T, Q > const &Extent)
Compute the number of mipmaps levels necessary to create a mipmap complete texture.
+ + + + diff --git a/include/glm/doc/api/a00746.html b/include/glm/doc/api/a00746.html new file mode 100644 index 0000000..f8aed9b --- /dev/null +++ b/include/glm/doc/api/a00746.html @@ -0,0 +1,115 @@ + + + + + + + +1.0.2 API documentation: transform.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
transform.hpp File Reference
+
+
+ +

GLM_GTX_transform +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (T angle, vec< 3, T, Q > const &v)
 Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (vec< 3, T, Q > const &v)
 Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > translate (vec< 3, T, Q > const &v)
 Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars. More...
 
+

Detailed Description

+

GLM_GTX_transform

+
See also
Core features (dependence)
+
+GLM_GTC_matrix_transform (dependence)
+
+GLM_GTX_transform
+
+GLM_GTX_transform2
+ +

Definition in file transform.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00746_source.html b/include/glm/doc/api/a00746_source.html new file mode 100644 index 0000000..96c84db --- /dev/null +++ b/include/glm/doc/api/a00746_source.html @@ -0,0 +1,117 @@ + + + + + + + +1.0.2 API documentation: transform.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
transform.hpp
+
+
+Go to the documentation of this file.
1 
+
16 #pragma once
+
17 
+
18 // Dependency:
+
19 #include "../glm.hpp"
+
20 #include "../gtc/matrix_transform.hpp"
+
21 
+
22 #ifndef GLM_ENABLE_EXPERIMENTAL
+
23 # error "GLM: GLM_GTX_transform is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
24 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTX_transform extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
36  template<typename T, qualifier Q>
+
37  GLM_FUNC_DECL mat<4, 4, T, Q> translate(
+
38  vec<3, T, Q> const& v);
+
39 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL mat<4, 4, T, Q> rotate(
+
45  T angle,
+
46  vec<3, T, Q> const& v);
+
47 
+
51  template<typename T, qualifier Q>
+
52  GLM_FUNC_DECL mat<4, 4, T, Q> scale(
+
53  vec<3, T, Q> const& v);
+
54 
+
56 }// namespace glm
+
57 
+
58 #include "transform.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate(T angle, vec< 3, T, Q > const &v)
Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > translate(vec< 3, T, Q > const &v)
Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(vec< 3, T, Q > const &v)
Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.
+ + + + diff --git a/include/glm/doc/api/a00749.html b/include/glm/doc/api/a00749.html new file mode 100644 index 0000000..6de5ab6 --- /dev/null +++ b/include/glm/doc/api/a00749.html @@ -0,0 +1,136 @@ + + + + + + + +1.0.2 API documentation: transform2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
transform2.hpp File Reference
+
+
+ +

GLM_GTX_transform2 +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > proj2D (mat< 3, 3, T, Q > const &m, vec< 3, T, Q > const &normal)
 Build planar projection matrix along normal axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > proj3D (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &normal)
 Build planar projection matrix along normal axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias (mat< 4, 4, T, Q > const &m, T scale, T bias)
 Build a scale bias matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias (T scale, T bias)
 Build a scale bias matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > shearX2D (mat< 3, 3, T, Q > const &m, T y)
 Transforms a matrix with a shearing on X axis. More...
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearX3D (mat< 4, 4, T, Q > const &m, T y, T z)
 Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > shearY2D (mat< 3, 3, T, Q > const &m, T x)
 Transforms a matrix with a shearing on Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearY3D (mat< 4, 4, T, Q > const &m, T x, T z)
 Transforms a matrix with a shearing on Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearZ3D (mat< 4, 4, T, Q > const &m, T x, T y)
 Transforms a matrix with a shearing on Z axis. More...
 
+

Detailed Description

+

GLM_GTX_transform2

+
See also
Core features (dependence)
+
+GLM_GTX_transform (dependence)
+ +

Definition in file transform2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00749_source.html b/include/glm/doc/api/a00749_source.html new file mode 100644 index 0000000..25174c2 --- /dev/null +++ b/include/glm/doc/api/a00749_source.html @@ -0,0 +1,144 @@ + + + + + + + +1.0.2 API documentation: transform2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
transform2.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include "../gtx/transform.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_transform2 is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_transform2 extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
33  template<typename T, qualifier Q>
+
34  GLM_FUNC_DECL mat<3, 3, T, Q> shearX2D(mat<3, 3, T, Q> const& m, T y);
+
35 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_DECL mat<3, 3, T, Q> shearY2D(mat<3, 3, T, Q> const& m, T x);
+
40 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL mat<4, 4, T, Q> shearX3D(mat<4, 4, T, Q> const& m, T y, T z);
+
45 
+
48  template<typename T, qualifier Q>
+
49  GLM_FUNC_DECL mat<4, 4, T, Q> shearY3D(mat<4, 4, T, Q> const& m, T x, T z);
+
50 
+
53  template<typename T, qualifier Q>
+
54  GLM_FUNC_DECL mat<4, 4, T, Q> shearZ3D(mat<4, 4, T, Q> const& m, T x, T y);
+
55 
+
56  //template<typename T> GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shear(const mat<4, 4, T, Q> & m, shearPlane, planePoint, angle)
+
57  // Identity + tan(angle) * cross(Normal, OnPlaneVector) 0
+
58  // - dot(PointOnPlane, normal) * OnPlaneVector 1
+
59 
+
60  // Reflect functions seem to don't work
+
61  //template<typename T> mat<3, 3, T, Q> reflect2D(const mat<3, 3, T, Q> & m, const vec<3, T, Q>& normal){return reflect2DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+
62  //template<typename T> mat<4, 4, T, Q> reflect3D(const mat<4, 4, T, Q> & m, const vec<3, T, Q>& normal){return reflect3DGTX(m, normal);} //!< \brief Build a reflection matrix (from GLM_GTX_transform2 extension)
+
63 
+
66  template<typename T, qualifier Q>
+
67  GLM_FUNC_DECL mat<3, 3, T, Q> proj2D(mat<3, 3, T, Q> const& m, vec<3, T, Q> const& normal);
+
68 
+
71  template<typename T, qualifier Q>
+
72  GLM_FUNC_DECL mat<4, 4, T, Q> proj3D(mat<4, 4, T, Q> const & m, vec<3, T, Q> const& normal);
+
73 
+
76  template<typename T, qualifier Q>
+
77  GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(T scale, T bias);
+
78 
+
81  template<typename T, qualifier Q>
+
82  GLM_FUNC_DECL mat<4, 4, T, Q> scaleBias(mat<4, 4, T, Q> const& m, T scale, T bias);
+
83 
+
85 }// namespace glm
+
86 
+
87 #include "transform2.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > proj3D(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &normal)
Build planar projection matrix along normal axis.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > shearX2D(mat< 3, 3, T, Q > const &m, T y)
Transforms a matrix with a shearing on X axis.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > shearY2D(mat< 3, 3, T, Q > const &m, T x)
Transforms a matrix with a shearing on Y axis.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > shearX3D(mat< 4, 4, T, Q > const &m, T y, T z)
Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > proj2D(mat< 3, 3, T, Q > const &m, vec< 3, T, Q > const &normal)
Build planar projection matrix along normal axis.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)
Build a scale bias matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > shearZ3D(mat< 4, 4, T, Q > const &m, T x, T y)
Transforms a matrix with a shearing on Z axis.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > shearY3D(mat< 4, 4, T, Q > const &m, T x, T z)
Transforms a matrix with a shearing on Y axis.
+ + + + diff --git a/include/glm/doc/api/a00752.html b/include/glm/doc/api/a00752.html new file mode 100644 index 0000000..4f92f50 --- /dev/null +++ b/include/glm/doc/api/a00752.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: type_trait.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_trait.hpp File Reference
+
+
+ +

GLM_GTX_type_trait +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_type_trait

+
See also
Core features (dependence)
+ +

Definition in file type_trait.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00752_source.html b/include/glm/doc/api/a00752_source.html new file mode 100644 index 0000000..983884c --- /dev/null +++ b/include/glm/doc/api/a00752_source.html @@ -0,0 +1,150 @@ + + + + + + + +1.0.2 API documentation: type_trait.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
type_trait.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #ifndef GLM_ENABLE_EXPERIMENTAL
+
16 # error "GLM: GLM_GTX_type_trait is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
17 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
18 # pragma message("GLM: GLM_GTX_type_trait extension included")
+
19 #endif
+
20 
+
21 // Dependency:
+
22 #include "../detail/qualifier.hpp"
+
23 #include "../gtc/quaternion.hpp"
+
24 #include "../gtx/dual_quaternion.hpp"
+
25 
+
26 namespace glm
+
27 {
+
30 
+
31  template<typename T>
+
32  struct type
+
33  {
+
34  static bool const is_vec = false;
+
35  static bool const is_mat = false;
+
36  static bool const is_quat = false;
+
37  static length_t const components = 0;
+
38  static length_t const cols = 0;
+
39  static length_t const rows = 0;
+
40  };
+
41 
+
42  template<length_t L, typename T, qualifier Q>
+
43  struct type<vec<L, T, Q> >
+
44  {
+
45  static bool const is_vec = true;
+
46  static bool const is_mat = false;
+
47  static bool const is_quat = false;
+
48  static length_t const components = L;
+
49  };
+
50 
+
51  template<length_t C, length_t R, typename T, qualifier Q>
+
52  struct type<mat<C, R, T, Q> >
+
53  {
+
54  static bool const is_vec = false;
+
55  static bool const is_mat = true;
+
56  static bool const is_quat = false;
+
57  static length_t const components = C;
+
58  static length_t const cols = C;
+
59  static length_t const rows = R;
+
60  };
+
61 
+
62  template<typename T, qualifier Q>
+
63  struct type<qua<T, Q> >
+
64  {
+
65  static bool const is_vec = false;
+
66  static bool const is_mat = false;
+
67  static bool const is_quat = true;
+
68  static length_t const components = 4;
+
69  };
+
70 
+
71  template<typename T, qualifier Q>
+
72  struct type<tdualquat<T, Q> >
+
73  {
+
74  static bool const is_vec = false;
+
75  static bool const is_mat = false;
+
76  static bool const is_quat = true;
+
77  static length_t const components = 8;
+
78  };
+
79 
+
81 }//namespace glm
+
82 
+
83 #include "type_trait.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00755.html b/include/glm/doc/api/a00755.html new file mode 100644 index 0000000..d3fe0eb --- /dev/null +++ b/include/glm/doc/api/a00755.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: vec_swizzle.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec_swizzle.hpp File Reference
+
+
+ +

GLM_GTX_vec_swizzle +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_vec_swizzle

+
See also
Core features (dependence)
+ +

Definition in file vec_swizzle.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00755_source.html b/include/glm/doc/api/a00755_source.html new file mode 100644 index 0000000..4dee2bb --- /dev/null +++ b/include/glm/doc/api/a00755_source.html @@ -0,0 +1,2836 @@ + + + + + + + +1.0.2 API documentation: vec_swizzle.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec_swizzle.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #include "../glm.hpp"
+
16 
+
17 #ifndef GLM_ENABLE_EXPERIMENTAL
+
18 # error "GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
19 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_GTX_vec_swizzle extension included")
+
21 #endif
+
22 
+
23 namespace glm {
+
26 
+
27  // xx
+
28  template<typename T, qualifier Q>
+
29  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<1, T, Q> &v) {
+
30  return glm::vec<2, T, Q>(v.x, v.x);
+
31  }
+
32 
+
33  template<typename T, qualifier Q>
+
34  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<2, T, Q> &v) {
+
35  return glm::vec<2, T, Q>(v.x, v.x);
+
36  }
+
37 
+
38  template<typename T, qualifier Q>
+
39  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<3, T, Q> &v) {
+
40  return glm::vec<2, T, Q>(v.x, v.x);
+
41  }
+
42 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xx(const glm::vec<4, T, Q> &v) {
+
45  return glm::vec<2, T, Q>(v.x, v.x);
+
46  }
+
47 
+
48  // xy
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<2, T, Q> &v) {
+
51  return glm::vec<2, T, Q>(v.x, v.y);
+
52  }
+
53 
+
54  template<typename T, qualifier Q>
+
55  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<3, T, Q> &v) {
+
56  return glm::vec<2, T, Q>(v.x, v.y);
+
57  }
+
58 
+
59  template<typename T, qualifier Q>
+
60  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xy(const glm::vec<4, T, Q> &v) {
+
61  return glm::vec<2, T, Q>(v.x, v.y);
+
62  }
+
63 
+
64  // xz
+
65  template<typename T, qualifier Q>
+
66  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(const glm::vec<3, T, Q> &v) {
+
67  return glm::vec<2, T, Q>(v.x, v.z);
+
68  }
+
69 
+
70  template<typename T, qualifier Q>
+
71  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xz(const glm::vec<4, T, Q> &v) {
+
72  return glm::vec<2, T, Q>(v.x, v.z);
+
73  }
+
74 
+
75  // xw
+
76  template<typename T, qualifier Q>
+
77  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> xw(const glm::vec<4, T, Q> &v) {
+
78  return glm::vec<2, T, Q>(v.x, v.w);
+
79  }
+
80 
+
81  // yx
+
82  template<typename T, qualifier Q>
+
83  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<2, T, Q> &v) {
+
84  return glm::vec<2, T, Q>(v.y, v.x);
+
85  }
+
86 
+
87  template<typename T, qualifier Q>
+
88  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<3, T, Q> &v) {
+
89  return glm::vec<2, T, Q>(v.y, v.x);
+
90  }
+
91 
+
92  template<typename T, qualifier Q>
+
93  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yx(const glm::vec<4, T, Q> &v) {
+
94  return glm::vec<2, T, Q>(v.y, v.x);
+
95  }
+
96 
+
97  // yy
+
98  template<typename T, qualifier Q>
+
99  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<2, T, Q> &v) {
+
100  return glm::vec<2, T, Q>(v.y, v.y);
+
101  }
+
102 
+
103  template<typename T, qualifier Q>
+
104  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<3, T, Q> &v) {
+
105  return glm::vec<2, T, Q>(v.y, v.y);
+
106  }
+
107 
+
108  template<typename T, qualifier Q>
+
109  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yy(const glm::vec<4, T, Q> &v) {
+
110  return glm::vec<2, T, Q>(v.y, v.y);
+
111  }
+
112 
+
113  // yz
+
114  template<typename T, qualifier Q>
+
115  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(const glm::vec<3, T, Q> &v) {
+
116  return glm::vec<2, T, Q>(v.y, v.z);
+
117  }
+
118 
+
119  template<typename T, qualifier Q>
+
120  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yz(const glm::vec<4, T, Q> &v) {
+
121  return glm::vec<2, T, Q>(v.y, v.z);
+
122  }
+
123 
+
124  // yw
+
125  template<typename T, qualifier Q>
+
126  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> yw(const glm::vec<4, T, Q> &v) {
+
127  return glm::vec<2, T, Q>(v.y, v.w);
+
128  }
+
129 
+
130  // zx
+
131  template<typename T, qualifier Q>
+
132  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(const glm::vec<3, T, Q> &v) {
+
133  return glm::vec<2, T, Q>(v.z, v.x);
+
134  }
+
135 
+
136  template<typename T, qualifier Q>
+
137  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zx(const glm::vec<4, T, Q> &v) {
+
138  return glm::vec<2, T, Q>(v.z, v.x);
+
139  }
+
140 
+
141  // zy
+
142  template<typename T, qualifier Q>
+
143  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(const glm::vec<3, T, Q> &v) {
+
144  return glm::vec<2, T, Q>(v.z, v.y);
+
145  }
+
146 
+
147  template<typename T, qualifier Q>
+
148  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zy(const glm::vec<4, T, Q> &v) {
+
149  return glm::vec<2, T, Q>(v.z, v.y);
+
150  }
+
151 
+
152  // zz
+
153  template<typename T, qualifier Q>
+
154  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(const glm::vec<3, T, Q> &v) {
+
155  return glm::vec<2, T, Q>(v.z, v.z);
+
156  }
+
157 
+
158  template<typename T, qualifier Q>
+
159  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zz(const glm::vec<4, T, Q> &v) {
+
160  return glm::vec<2, T, Q>(v.z, v.z);
+
161  }
+
162 
+
163  // zw
+
164  template<typename T, qualifier Q>
+
165  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> zw(const glm::vec<4, T, Q> &v) {
+
166  return glm::vec<2, T, Q>(v.z, v.w);
+
167  }
+
168 
+
169  // wx
+
170  template<typename T, qualifier Q>
+
171  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wx(const glm::vec<4, T, Q> &v) {
+
172  return glm::vec<2, T, Q>(v.w, v.x);
+
173  }
+
174 
+
175  // wy
+
176  template<typename T, qualifier Q>
+
177  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wy(const glm::vec<4, T, Q> &v) {
+
178  return glm::vec<2, T, Q>(v.w, v.y);
+
179  }
+
180 
+
181  // wz
+
182  template<typename T, qualifier Q>
+
183  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> wz(const glm::vec<4, T, Q> &v) {
+
184  return glm::vec<2, T, Q>(v.w, v.z);
+
185  }
+
186 
+
187  // ww
+
188  template<typename T, qualifier Q>
+
189  GLM_FUNC_QUALIFIER glm::vec<2, T, Q> ww(const glm::vec<4, T, Q> &v) {
+
190  return glm::vec<2, T, Q>(v.w, v.w);
+
191  }
+
192 
+
193  // xxx
+
194  template<typename T, qualifier Q>
+
195  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<1, T, Q> &v) {
+
196  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
197  }
+
198 
+
199  template<typename T, qualifier Q>
+
200  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<2, T, Q> &v) {
+
201  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
202  }
+
203 
+
204  template<typename T, qualifier Q>
+
205  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<3, T, Q> &v) {
+
206  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
207  }
+
208 
+
209  template<typename T, qualifier Q>
+
210  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxx(const glm::vec<4, T, Q> &v) {
+
211  return glm::vec<3, T, Q>(v.x, v.x, v.x);
+
212  }
+
213 
+
214  // xxy
+
215  template<typename T, qualifier Q>
+
216  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<2, T, Q> &v) {
+
217  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
218  }
+
219 
+
220  template<typename T, qualifier Q>
+
221  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<3, T, Q> &v) {
+
222  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
223  }
+
224 
+
225  template<typename T, qualifier Q>
+
226  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxy(const glm::vec<4, T, Q> &v) {
+
227  return glm::vec<3, T, Q>(v.x, v.x, v.y);
+
228  }
+
229 
+
230  // xxz
+
231  template<typename T, qualifier Q>
+
232  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(const glm::vec<3, T, Q> &v) {
+
233  return glm::vec<3, T, Q>(v.x, v.x, v.z);
+
234  }
+
235 
+
236  template<typename T, qualifier Q>
+
237  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxz(const glm::vec<4, T, Q> &v) {
+
238  return glm::vec<3, T, Q>(v.x, v.x, v.z);
+
239  }
+
240 
+
241  // xxw
+
242  template<typename T, qualifier Q>
+
243  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xxw(const glm::vec<4, T, Q> &v) {
+
244  return glm::vec<3, T, Q>(v.x, v.x, v.w);
+
245  }
+
246 
+
247  // xyx
+
248  template<typename T, qualifier Q>
+
249  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<2, T, Q> &v) {
+
250  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
251  }
+
252 
+
253  template<typename T, qualifier Q>
+
254  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<3, T, Q> &v) {
+
255  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
256  }
+
257 
+
258  template<typename T, qualifier Q>
+
259  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyx(const glm::vec<4, T, Q> &v) {
+
260  return glm::vec<3, T, Q>(v.x, v.y, v.x);
+
261  }
+
262 
+
263  // xyy
+
264  template<typename T, qualifier Q>
+
265  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<2, T, Q> &v) {
+
266  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
267  }
+
268 
+
269  template<typename T, qualifier Q>
+
270  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<3, T, Q> &v) {
+
271  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
272  }
+
273 
+
274  template<typename T, qualifier Q>
+
275  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyy(const glm::vec<4, T, Q> &v) {
+
276  return glm::vec<3, T, Q>(v.x, v.y, v.y);
+
277  }
+
278 
+
279  // xyz
+
280  template<typename T, qualifier Q>
+
281  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyz(const glm::vec<3, T, Q> &v) {
+
282  return glm::vec<3, T, Q>(v.x, v.y, v.z);
+
283  }
+
284 
+
285  // xyw
+
286  template<typename T, qualifier Q>
+
287  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xyw(const glm::vec<4, T, Q> &v) {
+
288  return glm::vec<3, T, Q>(v.x, v.y, v.w);
+
289  }
+
290 
+
291  // xzx
+
292  template<typename T, qualifier Q>
+
293  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzx(const glm::vec<3, T, Q> &v) {
+
294  return glm::vec<3, T, Q>(v.x, v.z, v.x);
+
295  }
+
296 
+
297  template<typename T, qualifier Q>
+
298  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzx(const glm::vec<4, T, Q> &v) {
+
299  return glm::vec<3, T, Q>(v.x, v.z, v.x);
+
300  }
+
301 
+
302  // xzy
+
303  template<typename T, qualifier Q>
+
304  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzy(const glm::vec<3, T, Q> &v) {
+
305  return glm::vec<3, T, Q>(v.x, v.z, v.y);
+
306  }
+
307 
+
308  template<typename T, qualifier Q>
+
309  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzy(const glm::vec<4, T, Q> &v) {
+
310  return glm::vec<3, T, Q>(v.x, v.z, v.y);
+
311  }
+
312 
+
313  // xzz
+
314  template<typename T, qualifier Q>
+
315  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzz(const glm::vec<3, T, Q> &v) {
+
316  return glm::vec<3, T, Q>(v.x, v.z, v.z);
+
317  }
+
318 
+
319  template<typename T, qualifier Q>
+
320  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzz(const glm::vec<4, T, Q> &v) {
+
321  return glm::vec<3, T, Q>(v.x, v.z, v.z);
+
322  }
+
323 
+
324  // xzw
+
325  template<typename T, qualifier Q>
+
326  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xzw(const glm::vec<4, T, Q> &v) {
+
327  return glm::vec<3, T, Q>(v.x, v.z, v.w);
+
328  }
+
329 
+
330  // xwx
+
331  template<typename T, qualifier Q>
+
332  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwx(const glm::vec<4, T, Q> &v) {
+
333  return glm::vec<3, T, Q>(v.x, v.w, v.x);
+
334  }
+
335 
+
336  // xwy
+
337  template<typename T, qualifier Q>
+
338  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwy(const glm::vec<4, T, Q> &v) {
+
339  return glm::vec<3, T, Q>(v.x, v.w, v.y);
+
340  }
+
341 
+
342  // xwz
+
343  template<typename T, qualifier Q>
+
344  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xwz(const glm::vec<4, T, Q> &v) {
+
345  return glm::vec<3, T, Q>(v.x, v.w, v.z);
+
346  }
+
347 
+
348  // xww
+
349  template<typename T, qualifier Q>
+
350  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> xww(const glm::vec<4, T, Q> &v) {
+
351  return glm::vec<3, T, Q>(v.x, v.w, v.w);
+
352  }
+
353 
+
354  // yxx
+
355  template<typename T, qualifier Q>
+
356  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<2, T, Q> &v) {
+
357  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
358  }
+
359 
+
360  template<typename T, qualifier Q>
+
361  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<3, T, Q> &v) {
+
362  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
363  }
+
364 
+
365  template<typename T, qualifier Q>
+
366  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxx(const glm::vec<4, T, Q> &v) {
+
367  return glm::vec<3, T, Q>(v.y, v.x, v.x);
+
368  }
+
369 
+
370  // yxy
+
371  template<typename T, qualifier Q>
+
372  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<2, T, Q> &v) {
+
373  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
374  }
+
375 
+
376  template<typename T, qualifier Q>
+
377  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<3, T, Q> &v) {
+
378  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
379  }
+
380 
+
381  template<typename T, qualifier Q>
+
382  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxy(const glm::vec<4, T, Q> &v) {
+
383  return glm::vec<3, T, Q>(v.y, v.x, v.y);
+
384  }
+
385 
+
386  // yxz
+
387  template<typename T, qualifier Q>
+
388  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxz(const glm::vec<3, T, Q> &v) {
+
389  return glm::vec<3, T, Q>(v.y, v.x, v.z);
+
390  }
+
391 
+
392  template<typename T, qualifier Q>
+
393  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxz(const glm::vec<4, T, Q> &v) {
+
394  return glm::vec<3, T, Q>(v.y, v.x, v.z);
+
395  }
+
396 
+
397  // yxw
+
398  template<typename T, qualifier Q>
+
399  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yxw(const glm::vec<4, T, Q> &v) {
+
400  return glm::vec<3, T, Q>(v.y, v.x, v.w);
+
401  }
+
402 
+
403  // yyx
+
404  template<typename T, qualifier Q>
+
405  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<2, T, Q> &v) {
+
406  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
407  }
+
408 
+
409  template<typename T, qualifier Q>
+
410  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<3, T, Q> &v) {
+
411  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
412  }
+
413 
+
414  template<typename T, qualifier Q>
+
415  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyx(const glm::vec<4, T, Q> &v) {
+
416  return glm::vec<3, T, Q>(v.y, v.y, v.x);
+
417  }
+
418 
+
419  // yyy
+
420  template<typename T, qualifier Q>
+
421  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<2, T, Q> &v) {
+
422  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
423  }
+
424 
+
425  template<typename T, qualifier Q>
+
426  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<3, T, Q> &v) {
+
427  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
428  }
+
429 
+
430  template<typename T, qualifier Q>
+
431  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyy(const glm::vec<4, T, Q> &v) {
+
432  return glm::vec<3, T, Q>(v.y, v.y, v.y);
+
433  }
+
434 
+
435  // yyz
+
436  template<typename T, qualifier Q>
+
437  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyz(const glm::vec<3, T, Q> &v) {
+
438  return glm::vec<3, T, Q>(v.y, v.y, v.z);
+
439  }
+
440 
+
441  template<typename T, qualifier Q>
+
442  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyz(const glm::vec<4, T, Q> &v) {
+
443  return glm::vec<3, T, Q>(v.y, v.y, v.z);
+
444  }
+
445 
+
446  // yyw
+
447  template<typename T, qualifier Q>
+
448  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yyw(const glm::vec<4, T, Q> &v) {
+
449  return glm::vec<3, T, Q>(v.y, v.y, v.w);
+
450  }
+
451 
+
452  // yzx
+
453  template<typename T, qualifier Q>
+
454  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzx(const glm::vec<3, T, Q> &v) {
+
455  return glm::vec<3, T, Q>(v.y, v.z, v.x);
+
456  }
+
457 
+
458  template<typename T, qualifier Q>
+
459  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzx(const glm::vec<4, T, Q> &v) {
+
460  return glm::vec<3, T, Q>(v.y, v.z, v.x);
+
461  }
+
462 
+
463  // yzy
+
464  template<typename T, qualifier Q>
+
465  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzy(const glm::vec<3, T, Q> &v) {
+
466  return glm::vec<3, T, Q>(v.y, v.z, v.y);
+
467  }
+
468 
+
469  template<typename T, qualifier Q>
+
470  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzy(const glm::vec<4, T, Q> &v) {
+
471  return glm::vec<3, T, Q>(v.y, v.z, v.y);
+
472  }
+
473 
+
474  // yzz
+
475  template<typename T, qualifier Q>
+
476  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzz(const glm::vec<3, T, Q> &v) {
+
477  return glm::vec<3, T, Q>(v.y, v.z, v.z);
+
478  }
+
479 
+
480  template<typename T, qualifier Q>
+
481  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzz(const glm::vec<4, T, Q> &v) {
+
482  return glm::vec<3, T, Q>(v.y, v.z, v.z);
+
483  }
+
484 
+
485  // yzw
+
486  template<typename T, qualifier Q>
+
487  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yzw(const glm::vec<4, T, Q> &v) {
+
488  return glm::vec<3, T, Q>(v.y, v.z, v.w);
+
489  }
+
490 
+
491  // ywx
+
492  template<typename T, qualifier Q>
+
493  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywx(const glm::vec<4, T, Q> &v) {
+
494  return glm::vec<3, T, Q>(v.y, v.w, v.x);
+
495  }
+
496 
+
497  // ywy
+
498  template<typename T, qualifier Q>
+
499  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywy(const glm::vec<4, T, Q> &v) {
+
500  return glm::vec<3, T, Q>(v.y, v.w, v.y);
+
501  }
+
502 
+
503  // ywz
+
504  template<typename T, qualifier Q>
+
505  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> ywz(const glm::vec<4, T, Q> &v) {
+
506  return glm::vec<3, T, Q>(v.y, v.w, v.z);
+
507  }
+
508 
+
509  // yww
+
510  template<typename T, qualifier Q>
+
511  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> yww(const glm::vec<4, T, Q> &v) {
+
512  return glm::vec<3, T, Q>(v.y, v.w, v.w);
+
513  }
+
514 
+
515  // zxx
+
516  template<typename T, qualifier Q>
+
517  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxx(const glm::vec<3, T, Q> &v) {
+
518  return glm::vec<3, T, Q>(v.z, v.x, v.x);
+
519  }
+
520 
+
521  template<typename T, qualifier Q>
+
522  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxx(const glm::vec<4, T, Q> &v) {
+
523  return glm::vec<3, T, Q>(v.z, v.x, v.x);
+
524  }
+
525 
+
526  // zxy
+
527  template<typename T, qualifier Q>
+
528  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxy(const glm::vec<3, T, Q> &v) {
+
529  return glm::vec<3, T, Q>(v.z, v.x, v.y);
+
530  }
+
531 
+
532  template<typename T, qualifier Q>
+
533  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxy(const glm::vec<4, T, Q> &v) {
+
534  return glm::vec<3, T, Q>(v.z, v.x, v.y);
+
535  }
+
536 
+
537  // zxz
+
538  template<typename T, qualifier Q>
+
539  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxz(const glm::vec<3, T, Q> &v) {
+
540  return glm::vec<3, T, Q>(v.z, v.x, v.z);
+
541  }
+
542 
+
543  template<typename T, qualifier Q>
+
544  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxz(const glm::vec<4, T, Q> &v) {
+
545  return glm::vec<3, T, Q>(v.z, v.x, v.z);
+
546  }
+
547 
+
548  // zxw
+
549  template<typename T, qualifier Q>
+
550  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zxw(const glm::vec<4, T, Q> &v) {
+
551  return glm::vec<3, T, Q>(v.z, v.x, v.w);
+
552  }
+
553 
+
554  // zyx
+
555  template<typename T, qualifier Q>
+
556  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyx(const glm::vec<3, T, Q> &v) {
+
557  return glm::vec<3, T, Q>(v.z, v.y, v.x);
+
558  }
+
559 
+
560  template<typename T, qualifier Q>
+
561  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyx(const glm::vec<4, T, Q> &v) {
+
562  return glm::vec<3, T, Q>(v.z, v.y, v.x);
+
563  }
+
564 
+
565  // zyy
+
566  template<typename T, qualifier Q>
+
567  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyy(const glm::vec<3, T, Q> &v) {
+
568  return glm::vec<3, T, Q>(v.z, v.y, v.y);
+
569  }
+
570 
+
571  template<typename T, qualifier Q>
+
572  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyy(const glm::vec<4, T, Q> &v) {
+
573  return glm::vec<3, T, Q>(v.z, v.y, v.y);
+
574  }
+
575 
+
576  // zyz
+
577  template<typename T, qualifier Q>
+
578  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyz(const glm::vec<3, T, Q> &v) {
+
579  return glm::vec<3, T, Q>(v.z, v.y, v.z);
+
580  }
+
581 
+
582  template<typename T, qualifier Q>
+
583  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyz(const glm::vec<4, T, Q> &v) {
+
584  return glm::vec<3, T, Q>(v.z, v.y, v.z);
+
585  }
+
586 
+
587  // zyw
+
588  template<typename T, qualifier Q>
+
589  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zyw(const glm::vec<4, T, Q> &v) {
+
590  return glm::vec<3, T, Q>(v.z, v.y, v.w);
+
591  }
+
592 
+
593  // zzx
+
594  template<typename T, qualifier Q>
+
595  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzx(const glm::vec<3, T, Q> &v) {
+
596  return glm::vec<3, T, Q>(v.z, v.z, v.x);
+
597  }
+
598 
+
599  template<typename T, qualifier Q>
+
600  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzx(const glm::vec<4, T, Q> &v) {
+
601  return glm::vec<3, T, Q>(v.z, v.z, v.x);
+
602  }
+
603 
+
604  // zzy
+
605  template<typename T, qualifier Q>
+
606  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzy(const glm::vec<3, T, Q> &v) {
+
607  return glm::vec<3, T, Q>(v.z, v.z, v.y);
+
608  }
+
609 
+
610  template<typename T, qualifier Q>
+
611  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzy(const glm::vec<4, T, Q> &v) {
+
612  return glm::vec<3, T, Q>(v.z, v.z, v.y);
+
613  }
+
614 
+
615  // zzz
+
616  template<typename T, qualifier Q>
+
617  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzz(const glm::vec<3, T, Q> &v) {
+
618  return glm::vec<3, T, Q>(v.z, v.z, v.z);
+
619  }
+
620 
+
621  template<typename T, qualifier Q>
+
622  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzz(const glm::vec<4, T, Q> &v) {
+
623  return glm::vec<3, T, Q>(v.z, v.z, v.z);
+
624  }
+
625 
+
626  // zzw
+
627  template<typename T, qualifier Q>
+
628  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zzw(const glm::vec<4, T, Q> &v) {
+
629  return glm::vec<3, T, Q>(v.z, v.z, v.w);
+
630  }
+
631 
+
632  // zwx
+
633  template<typename T, qualifier Q>
+
634  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwx(const glm::vec<4, T, Q> &v) {
+
635  return glm::vec<3, T, Q>(v.z, v.w, v.x);
+
636  }
+
637 
+
638  // zwy
+
639  template<typename T, qualifier Q>
+
640  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwy(const glm::vec<4, T, Q> &v) {
+
641  return glm::vec<3, T, Q>(v.z, v.w, v.y);
+
642  }
+
643 
+
644  // zwz
+
645  template<typename T, qualifier Q>
+
646  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zwz(const glm::vec<4, T, Q> &v) {
+
647  return glm::vec<3, T, Q>(v.z, v.w, v.z);
+
648  }
+
649 
+
650  // zww
+
651  template<typename T, qualifier Q>
+
652  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> zww(const glm::vec<4, T, Q> &v) {
+
653  return glm::vec<3, T, Q>(v.z, v.w, v.w);
+
654  }
+
655 
+
656  // wxx
+
657  template<typename T, qualifier Q>
+
658  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxx(const glm::vec<4, T, Q> &v) {
+
659  return glm::vec<3, T, Q>(v.w, v.x, v.x);
+
660  }
+
661 
+
662  // wxy
+
663  template<typename T, qualifier Q>
+
664  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxy(const glm::vec<4, T, Q> &v) {
+
665  return glm::vec<3, T, Q>(v.w, v.x, v.y);
+
666  }
+
667 
+
668  // wxz
+
669  template<typename T, qualifier Q>
+
670  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxz(const glm::vec<4, T, Q> &v) {
+
671  return glm::vec<3, T, Q>(v.w, v.x, v.z);
+
672  }
+
673 
+
674  // wxw
+
675  template<typename T, qualifier Q>
+
676  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wxw(const glm::vec<4, T, Q> &v) {
+
677  return glm::vec<3, T, Q>(v.w, v.x, v.w);
+
678  }
+
679 
+
680  // wyx
+
681  template<typename T, qualifier Q>
+
682  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyx(const glm::vec<4, T, Q> &v) {
+
683  return glm::vec<3, T, Q>(v.w, v.y, v.x);
+
684  }
+
685 
+
686  // wyy
+
687  template<typename T, qualifier Q>
+
688  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyy(const glm::vec<4, T, Q> &v) {
+
689  return glm::vec<3, T, Q>(v.w, v.y, v.y);
+
690  }
+
691 
+
692  // wyz
+
693  template<typename T, qualifier Q>
+
694  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyz(const glm::vec<4, T, Q> &v) {
+
695  return glm::vec<3, T, Q>(v.w, v.y, v.z);
+
696  }
+
697 
+
698  // wyw
+
699  template<typename T, qualifier Q>
+
700  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wyw(const glm::vec<4, T, Q> &v) {
+
701  return glm::vec<3, T, Q>(v.w, v.y, v.w);
+
702  }
+
703 
+
704  // wzx
+
705  template<typename T, qualifier Q>
+
706  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzx(const glm::vec<4, T, Q> &v) {
+
707  return glm::vec<3, T, Q>(v.w, v.z, v.x);
+
708  }
+
709 
+
710  // wzy
+
711  template<typename T, qualifier Q>
+
712  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzy(const glm::vec<4, T, Q> &v) {
+
713  return glm::vec<3, T, Q>(v.w, v.z, v.y);
+
714  }
+
715 
+
716  // wzz
+
717  template<typename T, qualifier Q>
+
718  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzz(const glm::vec<4, T, Q> &v) {
+
719  return glm::vec<3, T, Q>(v.w, v.z, v.z);
+
720  }
+
721 
+
722  // wzw
+
723  template<typename T, qualifier Q>
+
724  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wzw(const glm::vec<4, T, Q> &v) {
+
725  return glm::vec<3, T, Q>(v.w, v.z, v.w);
+
726  }
+
727 
+
728  // wwx
+
729  template<typename T, qualifier Q>
+
730  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwx(const glm::vec<4, T, Q> &v) {
+
731  return glm::vec<3, T, Q>(v.w, v.w, v.x);
+
732  }
+
733 
+
734  // wwy
+
735  template<typename T, qualifier Q>
+
736  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwy(const glm::vec<4, T, Q> &v) {
+
737  return glm::vec<3, T, Q>(v.w, v.w, v.y);
+
738  }
+
739 
+
740  // wwz
+
741  template<typename T, qualifier Q>
+
742  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> wwz(const glm::vec<4, T, Q> &v) {
+
743  return glm::vec<3, T, Q>(v.w, v.w, v.z);
+
744  }
+
745 
+
746  // www
+
747  template<typename T, qualifier Q>
+
748  GLM_FUNC_QUALIFIER glm::vec<3, T, Q> www(const glm::vec<4, T, Q> &v) {
+
749  return glm::vec<3, T, Q>(v.w, v.w, v.w);
+
750  }
+
751 
+
752  // xxxx
+
753  template<typename T, qualifier Q>
+
754  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<1, T, Q> &v) {
+
755  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
756  }
+
757 
+
758  template<typename T, qualifier Q>
+
759  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<2, T, Q> &v) {
+
760  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
761  }
+
762 
+
763  template<typename T, qualifier Q>
+
764  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<3, T, Q> &v) {
+
765  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
766  }
+
767 
+
768  template<typename T, qualifier Q>
+
769  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxx(const glm::vec<4, T, Q> &v) {
+
770  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
+
771  }
+
772 
+
773  // xxxy
+
774  template<typename T, qualifier Q>
+
775  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<2, T, Q> &v) {
+
776  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
777  }
+
778 
+
779  template<typename T, qualifier Q>
+
780  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<3, T, Q> &v) {
+
781  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
782  }
+
783 
+
784  template<typename T, qualifier Q>
+
785  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxy(const glm::vec<4, T, Q> &v) {
+
786  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
+
787  }
+
788 
+
789  // xxxz
+
790  template<typename T, qualifier Q>
+
791  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxz(const glm::vec<3, T, Q> &v) {
+
792  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
+
793  }
+
794 
+
795  template<typename T, qualifier Q>
+
796  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxz(const glm::vec<4, T, Q> &v) {
+
797  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
+
798  }
+
799 
+
800  // xxxw
+
801  template<typename T, qualifier Q>
+
802  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxxw(const glm::vec<4, T, Q> &v) {
+
803  return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
+
804  }
+
805 
+
806  // xxyx
+
807  template<typename T, qualifier Q>
+
808  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<2, T, Q> &v) {
+
809  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
810  }
+
811 
+
812  template<typename T, qualifier Q>
+
813  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<3, T, Q> &v) {
+
814  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
815  }
+
816 
+
817  template<typename T, qualifier Q>
+
818  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyx(const glm::vec<4, T, Q> &v) {
+
819  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
+
820  }
+
821 
+
822  // xxyy
+
823  template<typename T, qualifier Q>
+
824  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<2, T, Q> &v) {
+
825  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
826  }
+
827 
+
828  template<typename T, qualifier Q>
+
829  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<3, T, Q> &v) {
+
830  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
831  }
+
832 
+
833  template<typename T, qualifier Q>
+
834  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyy(const glm::vec<4, T, Q> &v) {
+
835  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
+
836  }
+
837 
+
838  // xxyz
+
839  template<typename T, qualifier Q>
+
840  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyz(const glm::vec<3, T, Q> &v) {
+
841  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
+
842  }
+
843 
+
844  template<typename T, qualifier Q>
+
845  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyz(const glm::vec<4, T, Q> &v) {
+
846  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
+
847  }
+
848 
+
849  // xxyw
+
850  template<typename T, qualifier Q>
+
851  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxyw(const glm::vec<4, T, Q> &v) {
+
852  return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
+
853  }
+
854 
+
855  // xxzx
+
856  template<typename T, qualifier Q>
+
857  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzx(const glm::vec<3, T, Q> &v) {
+
858  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
+
859  }
+
860 
+
861  template<typename T, qualifier Q>
+
862  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzx(const glm::vec<4, T, Q> &v) {
+
863  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
+
864  }
+
865 
+
866  // xxzy
+
867  template<typename T, qualifier Q>
+
868  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzy(const glm::vec<3, T, Q> &v) {
+
869  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
+
870  }
+
871 
+
872  template<typename T, qualifier Q>
+
873  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzy(const glm::vec<4, T, Q> &v) {
+
874  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
+
875  }
+
876 
+
877  // xxzz
+
878  template<typename T, qualifier Q>
+
879  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzz(const glm::vec<3, T, Q> &v) {
+
880  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
+
881  }
+
882 
+
883  template<typename T, qualifier Q>
+
884  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzz(const glm::vec<4, T, Q> &v) {
+
885  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
+
886  }
+
887 
+
888  // xxzw
+
889  template<typename T, qualifier Q>
+
890  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxzw(const glm::vec<4, T, Q> &v) {
+
891  return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
+
892  }
+
893 
+
894  // xxwx
+
895  template<typename T, qualifier Q>
+
896  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwx(const glm::vec<4, T, Q> &v) {
+
897  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
+
898  }
+
899 
+
900  // xxwy
+
901  template<typename T, qualifier Q>
+
902  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwy(const glm::vec<4, T, Q> &v) {
+
903  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
+
904  }
+
905 
+
906  // xxwz
+
907  template<typename T, qualifier Q>
+
908  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxwz(const glm::vec<4, T, Q> &v) {
+
909  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
+
910  }
+
911 
+
912  // xxww
+
913  template<typename T, qualifier Q>
+
914  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xxww(const glm::vec<4, T, Q> &v) {
+
915  return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
+
916  }
+
917 
+
918  // xyxx
+
919  template<typename T, qualifier Q>
+
920  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<2, T, Q> &v) {
+
921  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
922  }
+
923 
+
924  template<typename T, qualifier Q>
+
925  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<3, T, Q> &v) {
+
926  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
927  }
+
928 
+
929  template<typename T, qualifier Q>
+
930  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxx(const glm::vec<4, T, Q> &v) {
+
931  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
+
932  }
+
933 
+
934  // xyxy
+
935  template<typename T, qualifier Q>
+
936  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<2, T, Q> &v) {
+
937  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
938  }
+
939 
+
940  template<typename T, qualifier Q>
+
941  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<3, T, Q> &v) {
+
942  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
943  }
+
944 
+
945  template<typename T, qualifier Q>
+
946  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxy(const glm::vec<4, T, Q> &v) {
+
947  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
+
948  }
+
949 
+
950  // xyxz
+
951  template<typename T, qualifier Q>
+
952  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxz(const glm::vec<3, T, Q> &v) {
+
953  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
+
954  }
+
955 
+
956  template<typename T, qualifier Q>
+
957  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxz(const glm::vec<4, T, Q> &v) {
+
958  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
+
959  }
+
960 
+
961  // xyxw
+
962  template<typename T, qualifier Q>
+
963  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyxw(const glm::vec<4, T, Q> &v) {
+
964  return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
+
965  }
+
966 
+
967  // xyyx
+
968  template<typename T, qualifier Q>
+
969  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<2, T, Q> &v) {
+
970  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
971  }
+
972 
+
973  template<typename T, qualifier Q>
+
974  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<3, T, Q> &v) {
+
975  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
976  }
+
977 
+
978  template<typename T, qualifier Q>
+
979  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyx(const glm::vec<4, T, Q> &v) {
+
980  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
+
981  }
+
982 
+
983  // xyyy
+
984  template<typename T, qualifier Q>
+
985  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<2, T, Q> &v) {
+
986  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
987  }
+
988 
+
989  template<typename T, qualifier Q>
+
990  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<3, T, Q> &v) {
+
991  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
992  }
+
993 
+
994  template<typename T, qualifier Q>
+
995  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyy(const glm::vec<4, T, Q> &v) {
+
996  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
+
997  }
+
998 
+
999  // xyyz
+
1000  template<typename T, qualifier Q>
+
1001  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyz(const glm::vec<3, T, Q> &v) {
+
1002  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
+
1003  }
+
1004 
+
1005  template<typename T, qualifier Q>
+
1006  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyz(const glm::vec<4, T, Q> &v) {
+
1007  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
+
1008  }
+
1009 
+
1010  // xyyw
+
1011  template<typename T, qualifier Q>
+
1012  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyyw(const glm::vec<4, T, Q> &v) {
+
1013  return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
+
1014  }
+
1015 
+
1016  // xyzx
+
1017  template<typename T, qualifier Q>
+
1018  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzx(const glm::vec<3, T, Q> &v) {
+
1019  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
+
1020  }
+
1021 
+
1022  template<typename T, qualifier Q>
+
1023  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzx(const glm::vec<4, T, Q> &v) {
+
1024  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
+
1025  }
+
1026 
+
1027  // xyzy
+
1028  template<typename T, qualifier Q>
+
1029  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzy(const glm::vec<3, T, Q> &v) {
+
1030  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
+
1031  }
+
1032 
+
1033  template<typename T, qualifier Q>
+
1034  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzy(const glm::vec<4, T, Q> &v) {
+
1035  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
+
1036  }
+
1037 
+
1038 
+
1039  // xyzw
+
1040  template<typename T, qualifier Q>
+
1041  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyzw(const glm::vec<4, T, Q> &v) {
+
1042  return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
+
1043  }
+
1044 
+
1045  // xywx
+
1046  template<typename T, qualifier Q>
+
1047  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywx(const glm::vec<4, T, Q> &v) {
+
1048  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
+
1049  }
+
1050 
+
1051  // xywy
+
1052  template<typename T, qualifier Q>
+
1053  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywy(const glm::vec<4, T, Q> &v) {
+
1054  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
+
1055  }
+
1056 
+
1057  // xywz
+
1058  template<typename T, qualifier Q>
+
1059  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xywz(const glm::vec<4, T, Q> &v) {
+
1060  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
+
1061  }
+
1062 
+
1063  // xyww
+
1064  template<typename T, qualifier Q>
+
1065  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xyww(const glm::vec<4, T, Q> &v) {
+
1066  return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
+
1067  }
+
1068 
+
1069  // xzxx
+
1070  template<typename T, qualifier Q>
+
1071  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(const glm::vec<3, T, Q> &v) {
+
1072  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
+
1073  }
+
1074 
+
1075  template<typename T, qualifier Q>
+
1076  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxx(const glm::vec<4, T, Q> &v) {
+
1077  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
+
1078  }
+
1079 
+
1080  // xzxy
+
1081  template<typename T, qualifier Q>
+
1082  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(const glm::vec<3, T, Q> &v) {
+
1083  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
+
1084  }
+
1085 
+
1086  template<typename T, qualifier Q>
+
1087  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxy(const glm::vec<4, T, Q> &v) {
+
1088  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
+
1089  }
+
1090 
+
1091  // xzxz
+
1092  template<typename T, qualifier Q>
+
1093  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(const glm::vec<3, T, Q> &v) {
+
1094  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
+
1095  }
+
1096 
+
1097  template<typename T, qualifier Q>
+
1098  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxz(const glm::vec<4, T, Q> &v) {
+
1099  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
+
1100  }
+
1101 
+
1102  // xzxw
+
1103  template<typename T, qualifier Q>
+
1104  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzxw(const glm::vec<4, T, Q> &v) {
+
1105  return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
+
1106  }
+
1107 
+
1108  // xzyx
+
1109  template<typename T, qualifier Q>
+
1110  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(const glm::vec<3, T, Q> &v) {
+
1111  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
+
1112  }
+
1113 
+
1114  template<typename T, qualifier Q>
+
1115  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyx(const glm::vec<4, T, Q> &v) {
+
1116  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
+
1117  }
+
1118 
+
1119  // xzyy
+
1120  template<typename T, qualifier Q>
+
1121  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(const glm::vec<3, T, Q> &v) {
+
1122  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
+
1123  }
+
1124 
+
1125  template<typename T, qualifier Q>
+
1126  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyy(const glm::vec<4, T, Q> &v) {
+
1127  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
+
1128  }
+
1129 
+
1130  // xzyz
+
1131  template<typename T, qualifier Q>
+
1132  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(const glm::vec<3, T, Q> &v) {
+
1133  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
+
1134  }
+
1135 
+
1136  template<typename T, qualifier Q>
+
1137  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyz(const glm::vec<4, T, Q> &v) {
+
1138  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
+
1139  }
+
1140 
+
1141  // xzyw
+
1142  template<typename T, qualifier Q>
+
1143  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzyw(const glm::vec<4, T, Q> &v) {
+
1144  return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
+
1145  }
+
1146 
+
1147  // xzzx
+
1148  template<typename T, qualifier Q>
+
1149  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(const glm::vec<3, T, Q> &v) {
+
1150  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
+
1151  }
+
1152 
+
1153  template<typename T, qualifier Q>
+
1154  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzx(const glm::vec<4, T, Q> &v) {
+
1155  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
+
1156  }
+
1157 
+
1158  // xzzy
+
1159  template<typename T, qualifier Q>
+
1160  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(const glm::vec<3, T, Q> &v) {
+
1161  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
+
1162  }
+
1163 
+
1164  template<typename T, qualifier Q>
+
1165  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzy(const glm::vec<4, T, Q> &v) {
+
1166  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
+
1167  }
+
1168 
+
1169  // xzzz
+
1170  template<typename T, qualifier Q>
+
1171  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(const glm::vec<3, T, Q> &v) {
+
1172  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
+
1173  }
+
1174 
+
1175  template<typename T, qualifier Q>
+
1176  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzz(const glm::vec<4, T, Q> &v) {
+
1177  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
+
1178  }
+
1179 
+
1180  // xzzw
+
1181  template<typename T, qualifier Q>
+
1182  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzzw(const glm::vec<4, T, Q> &v) {
+
1183  return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
+
1184  }
+
1185 
+
1186  // xzwx
+
1187  template<typename T, qualifier Q>
+
1188  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwx(const glm::vec<4, T, Q> &v) {
+
1189  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
+
1190  }
+
1191 
+
1192  // xzwy
+
1193  template<typename T, qualifier Q>
+
1194  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwy(const glm::vec<4, T, Q> &v) {
+
1195  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
+
1196  }
+
1197 
+
1198  // xzwz
+
1199  template<typename T, qualifier Q>
+
1200  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzwz(const glm::vec<4, T, Q> &v) {
+
1201  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
+
1202  }
+
1203 
+
1204  // xzww
+
1205  template<typename T, qualifier Q>
+
1206  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xzww(const glm::vec<4, T, Q> &v) {
+
1207  return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
+
1208  }
+
1209 
+
1210  // xwxx
+
1211  template<typename T, qualifier Q>
+
1212  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxx(const glm::vec<4, T, Q> &v) {
+
1213  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
+
1214  }
+
1215 
+
1216  // xwxy
+
1217  template<typename T, qualifier Q>
+
1218  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxy(const glm::vec<4, T, Q> &v) {
+
1219  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
+
1220  }
+
1221 
+
1222  // xwxz
+
1223  template<typename T, qualifier Q>
+
1224  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxz(const glm::vec<4, T, Q> &v) {
+
1225  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
+
1226  }
+
1227 
+
1228  // xwxw
+
1229  template<typename T, qualifier Q>
+
1230  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwxw(const glm::vec<4, T, Q> &v) {
+
1231  return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
+
1232  }
+
1233 
+
1234  // xwyx
+
1235  template<typename T, qualifier Q>
+
1236  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyx(const glm::vec<4, T, Q> &v) {
+
1237  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
+
1238  }
+
1239 
+
1240  // xwyy
+
1241  template<typename T, qualifier Q>
+
1242  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyy(const glm::vec<4, T, Q> &v) {
+
1243  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
+
1244  }
+
1245 
+
1246  // xwyz
+
1247  template<typename T, qualifier Q>
+
1248  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyz(const glm::vec<4, T, Q> &v) {
+
1249  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
+
1250  }
+
1251 
+
1252  // xwyw
+
1253  template<typename T, qualifier Q>
+
1254  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwyw(const glm::vec<4, T, Q> &v) {
+
1255  return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
+
1256  }
+
1257 
+
1258  // xwzx
+
1259  template<typename T, qualifier Q>
+
1260  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzx(const glm::vec<4, T, Q> &v) {
+
1261  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
+
1262  }
+
1263 
+
1264  // xwzy
+
1265  template<typename T, qualifier Q>
+
1266  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzy(const glm::vec<4, T, Q> &v) {
+
1267  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
+
1268  }
+
1269 
+
1270  // xwzz
+
1271  template<typename T, qualifier Q>
+
1272  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzz(const glm::vec<4, T, Q> &v) {
+
1273  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
+
1274  }
+
1275 
+
1276  // xwzw
+
1277  template<typename T, qualifier Q>
+
1278  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwzw(const glm::vec<4, T, Q> &v) {
+
1279  return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
+
1280  }
+
1281 
+
1282  // xwwx
+
1283  template<typename T, qualifier Q>
+
1284  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwx(const glm::vec<4, T, Q> &v) {
+
1285  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
+
1286  }
+
1287 
+
1288  // xwwy
+
1289  template<typename T, qualifier Q>
+
1290  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwy(const glm::vec<4, T, Q> &v) {
+
1291  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
+
1292  }
+
1293 
+
1294  // xwwz
+
1295  template<typename T, qualifier Q>
+
1296  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwwz(const glm::vec<4, T, Q> &v) {
+
1297  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
+
1298  }
+
1299 
+
1300  // xwww
+
1301  template<typename T, qualifier Q>
+
1302  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> xwww(const glm::vec<4, T, Q> &v) {
+
1303  return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
+
1304  }
+
1305 
+
1306  // yxxx
+
1307  template<typename T, qualifier Q>
+
1308  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<2, T, Q> &v) {
+
1309  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1310  }
+
1311 
+
1312  template<typename T, qualifier Q>
+
1313  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<3, T, Q> &v) {
+
1314  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1315  }
+
1316 
+
1317  template<typename T, qualifier Q>
+
1318  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxx(const glm::vec<4, T, Q> &v) {
+
1319  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
+
1320  }
+
1321 
+
1322  // yxxy
+
1323  template<typename T, qualifier Q>
+
1324  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<2, T, Q> &v) {
+
1325  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1326  }
+
1327 
+
1328  template<typename T, qualifier Q>
+
1329  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<3, T, Q> &v) {
+
1330  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1331  }
+
1332 
+
1333  template<typename T, qualifier Q>
+
1334  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxy(const glm::vec<4, T, Q> &v) {
+
1335  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
+
1336  }
+
1337 
+
1338  // yxxz
+
1339  template<typename T, qualifier Q>
+
1340  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(const glm::vec<3, T, Q> &v) {
+
1341  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
+
1342  }
+
1343 
+
1344  template<typename T, qualifier Q>
+
1345  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxz(const glm::vec<4, T, Q> &v) {
+
1346  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
+
1347  }
+
1348 
+
1349  // yxxw
+
1350  template<typename T, qualifier Q>
+
1351  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxxw(const glm::vec<4, T, Q> &v) {
+
1352  return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
+
1353  }
+
1354 
+
1355  // yxyx
+
1356  template<typename T, qualifier Q>
+
1357  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<2, T, Q> &v) {
+
1358  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1359  }
+
1360 
+
1361  template<typename T, qualifier Q>
+
1362  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<3, T, Q> &v) {
+
1363  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1364  }
+
1365 
+
1366  template<typename T, qualifier Q>
+
1367  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyx(const glm::vec<4, T, Q> &v) {
+
1368  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
+
1369  }
+
1370 
+
1371  // yxyy
+
1372  template<typename T, qualifier Q>
+
1373  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<2, T, Q> &v) {
+
1374  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1375  }
+
1376 
+
1377  template<typename T, qualifier Q>
+
1378  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<3, T, Q> &v) {
+
1379  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1380  }
+
1381 
+
1382  template<typename T, qualifier Q>
+
1383  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyy(const glm::vec<4, T, Q> &v) {
+
1384  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
+
1385  }
+
1386 
+
1387  // yxyz
+
1388  template<typename T, qualifier Q>
+
1389  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(const glm::vec<3, T, Q> &v) {
+
1390  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
+
1391  }
+
1392 
+
1393  template<typename T, qualifier Q>
+
1394  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyz(const glm::vec<4, T, Q> &v) {
+
1395  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
+
1396  }
+
1397 
+
1398  // yxyw
+
1399  template<typename T, qualifier Q>
+
1400  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxyw(const glm::vec<4, T, Q> &v) {
+
1401  return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
+
1402  }
+
1403 
+
1404  // yxzx
+
1405  template<typename T, qualifier Q>
+
1406  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(const glm::vec<3, T, Q> &v) {
+
1407  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
+
1408  }
+
1409 
+
1410  template<typename T, qualifier Q>
+
1411  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzx(const glm::vec<4, T, Q> &v) {
+
1412  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
+
1413  }
+
1414 
+
1415  // yxzy
+
1416  template<typename T, qualifier Q>
+
1417  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(const glm::vec<3, T, Q> &v) {
+
1418  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
+
1419  }
+
1420 
+
1421  template<typename T, qualifier Q>
+
1422  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzy(const glm::vec<4, T, Q> &v) {
+
1423  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
+
1424  }
+
1425 
+
1426  // yxzz
+
1427  template<typename T, qualifier Q>
+
1428  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(const glm::vec<3, T, Q> &v) {
+
1429  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
+
1430  }
+
1431 
+
1432  template<typename T, qualifier Q>
+
1433  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzz(const glm::vec<4, T, Q> &v) {
+
1434  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
+
1435  }
+
1436 
+
1437  // yxzw
+
1438  template<typename T, qualifier Q>
+
1439  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxzw(const glm::vec<4, T, Q> &v) {
+
1440  return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
+
1441  }
+
1442 
+
1443  // yxwx
+
1444  template<typename T, qualifier Q>
+
1445  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwx(const glm::vec<4, T, Q> &v) {
+
1446  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
+
1447  }
+
1448 
+
1449  // yxwy
+
1450  template<typename T, qualifier Q>
+
1451  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwy(const glm::vec<4, T, Q> &v) {
+
1452  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
+
1453  }
+
1454 
+
1455  // yxwz
+
1456  template<typename T, qualifier Q>
+
1457  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxwz(const glm::vec<4, T, Q> &v) {
+
1458  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
+
1459  }
+
1460 
+
1461  // yxww
+
1462  template<typename T, qualifier Q>
+
1463  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yxww(const glm::vec<4, T, Q> &v) {
+
1464  return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
+
1465  }
+
1466 
+
1467  // yyxx
+
1468  template<typename T, qualifier Q>
+
1469  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<2, T, Q> &v) {
+
1470  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1471  }
+
1472 
+
1473  template<typename T, qualifier Q>
+
1474  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<3, T, Q> &v) {
+
1475  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1476  }
+
1477 
+
1478  template<typename T, qualifier Q>
+
1479  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxx(const glm::vec<4, T, Q> &v) {
+
1480  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
+
1481  }
+
1482 
+
1483  // yyxy
+
1484  template<typename T, qualifier Q>
+
1485  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<2, T, Q> &v) {
+
1486  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1487  }
+
1488 
+
1489  template<typename T, qualifier Q>
+
1490  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<3, T, Q> &v) {
+
1491  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1492  }
+
1493 
+
1494  template<typename T, qualifier Q>
+
1495  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxy(const glm::vec<4, T, Q> &v) {
+
1496  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
+
1497  }
+
1498 
+
1499  // yyxz
+
1500  template<typename T, qualifier Q>
+
1501  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(const glm::vec<3, T, Q> &v) {
+
1502  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
+
1503  }
+
1504 
+
1505  template<typename T, qualifier Q>
+
1506  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxz(const glm::vec<4, T, Q> &v) {
+
1507  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
+
1508  }
+
1509 
+
1510  // yyxw
+
1511  template<typename T, qualifier Q>
+
1512  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyxw(const glm::vec<4, T, Q> &v) {
+
1513  return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
+
1514  }
+
1515 
+
1516  // yyyx
+
1517  template<typename T, qualifier Q>
+
1518  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<2, T, Q> &v) {
+
1519  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1520  }
+
1521 
+
1522  template<typename T, qualifier Q>
+
1523  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<3, T, Q> &v) {
+
1524  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1525  }
+
1526 
+
1527  template<typename T, qualifier Q>
+
1528  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyx(const glm::vec<4, T, Q> &v) {
+
1529  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
+
1530  }
+
1531 
+
1532  // yyyy
+
1533  template<typename T, qualifier Q>
+
1534  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<2, T, Q> &v) {
+
1535  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1536  }
+
1537 
+
1538  template<typename T, qualifier Q>
+
1539  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<3, T, Q> &v) {
+
1540  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1541  }
+
1542 
+
1543  template<typename T, qualifier Q>
+
1544  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyy(const glm::vec<4, T, Q> &v) {
+
1545  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
+
1546  }
+
1547 
+
1548  // yyyz
+
1549  template<typename T, qualifier Q>
+
1550  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(const glm::vec<3, T, Q> &v) {
+
1551  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
+
1552  }
+
1553 
+
1554  template<typename T, qualifier Q>
+
1555  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyz(const glm::vec<4, T, Q> &v) {
+
1556  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
+
1557  }
+
1558 
+
1559  // yyyw
+
1560  template<typename T, qualifier Q>
+
1561  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyyw(const glm::vec<4, T, Q> &v) {
+
1562  return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
+
1563  }
+
1564 
+
1565  // yyzx
+
1566  template<typename T, qualifier Q>
+
1567  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(const glm::vec<3, T, Q> &v) {
+
1568  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
+
1569  }
+
1570 
+
1571  template<typename T, qualifier Q>
+
1572  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzx(const glm::vec<4, T, Q> &v) {
+
1573  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
+
1574  }
+
1575 
+
1576  // yyzy
+
1577  template<typename T, qualifier Q>
+
1578  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(const glm::vec<3, T, Q> &v) {
+
1579  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
+
1580  }
+
1581 
+
1582  template<typename T, qualifier Q>
+
1583  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzy(const glm::vec<4, T, Q> &v) {
+
1584  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
+
1585  }
+
1586 
+
1587  // yyzz
+
1588  template<typename T, qualifier Q>
+
1589  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(const glm::vec<3, T, Q> &v) {
+
1590  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
+
1591  }
+
1592 
+
1593  template<typename T, qualifier Q>
+
1594  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzz(const glm::vec<4, T, Q> &v) {
+
1595  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
+
1596  }
+
1597 
+
1598  // yyzw
+
1599  template<typename T, qualifier Q>
+
1600  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyzw(const glm::vec<4, T, Q> &v) {
+
1601  return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
+
1602  }
+
1603 
+
1604  // yywx
+
1605  template<typename T, qualifier Q>
+
1606  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywx(const glm::vec<4, T, Q> &v) {
+
1607  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
+
1608  }
+
1609 
+
1610  // yywy
+
1611  template<typename T, qualifier Q>
+
1612  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywy(const glm::vec<4, T, Q> &v) {
+
1613  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
+
1614  }
+
1615 
+
1616  // yywz
+
1617  template<typename T, qualifier Q>
+
1618  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yywz(const glm::vec<4, T, Q> &v) {
+
1619  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
+
1620  }
+
1621 
+
1622  // yyww
+
1623  template<typename T, qualifier Q>
+
1624  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yyww(const glm::vec<4, T, Q> &v) {
+
1625  return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
+
1626  }
+
1627 
+
1628  // yzxx
+
1629  template<typename T, qualifier Q>
+
1630  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(const glm::vec<3, T, Q> &v) {
+
1631  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
+
1632  }
+
1633 
+
1634  template<typename T, qualifier Q>
+
1635  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxx(const glm::vec<4, T, Q> &v) {
+
1636  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
+
1637  }
+
1638 
+
1639  // yzxy
+
1640  template<typename T, qualifier Q>
+
1641  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(const glm::vec<3, T, Q> &v) {
+
1642  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
+
1643  }
+
1644 
+
1645  template<typename T, qualifier Q>
+
1646  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxy(const glm::vec<4, T, Q> &v) {
+
1647  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
+
1648  }
+
1649 
+
1650  // yzxz
+
1651  template<typename T, qualifier Q>
+
1652  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(const glm::vec<3, T, Q> &v) {
+
1653  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
+
1654  }
+
1655 
+
1656  template<typename T, qualifier Q>
+
1657  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxz(const glm::vec<4, T, Q> &v) {
+
1658  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
+
1659  }
+
1660 
+
1661  // yzxw
+
1662  template<typename T, qualifier Q>
+
1663  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzxw(const glm::vec<4, T, Q> &v) {
+
1664  return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
+
1665  }
+
1666 
+
1667  // yzyx
+
1668  template<typename T, qualifier Q>
+
1669  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(const glm::vec<3, T, Q> &v) {
+
1670  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
+
1671  }
+
1672 
+
1673  template<typename T, qualifier Q>
+
1674  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyx(const glm::vec<4, T, Q> &v) {
+
1675  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
+
1676  }
+
1677 
+
1678  // yzyy
+
1679  template<typename T, qualifier Q>
+
1680  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(const glm::vec<3, T, Q> &v) {
+
1681  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
+
1682  }
+
1683 
+
1684  template<typename T, qualifier Q>
+
1685  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyy(const glm::vec<4, T, Q> &v) {
+
1686  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
+
1687  }
+
1688 
+
1689  // yzyz
+
1690  template<typename T, qualifier Q>
+
1691  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(const glm::vec<3, T, Q> &v) {
+
1692  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
+
1693  }
+
1694 
+
1695  template<typename T, qualifier Q>
+
1696  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyz(const glm::vec<4, T, Q> &v) {
+
1697  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
+
1698  }
+
1699 
+
1700  // yzyw
+
1701  template<typename T, qualifier Q>
+
1702  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzyw(const glm::vec<4, T, Q> &v) {
+
1703  return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
+
1704  }
+
1705 
+
1706  // yzzx
+
1707  template<typename T, qualifier Q>
+
1708  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(const glm::vec<3, T, Q> &v) {
+
1709  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
+
1710  }
+
1711 
+
1712  template<typename T, qualifier Q>
+
1713  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzx(const glm::vec<4, T, Q> &v) {
+
1714  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
+
1715  }
+
1716 
+
1717  // yzzy
+
1718  template<typename T, qualifier Q>
+
1719  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(const glm::vec<3, T, Q> &v) {
+
1720  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
+
1721  }
+
1722 
+
1723  template<typename T, qualifier Q>
+
1724  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzy(const glm::vec<4, T, Q> &v) {
+
1725  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
+
1726  }
+
1727 
+
1728  // yzzz
+
1729  template<typename T, qualifier Q>
+
1730  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(const glm::vec<3, T, Q> &v) {
+
1731  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
+
1732  }
+
1733 
+
1734  template<typename T, qualifier Q>
+
1735  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzz(const glm::vec<4, T, Q> &v) {
+
1736  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
+
1737  }
+
1738 
+
1739  // yzzw
+
1740  template<typename T, qualifier Q>
+
1741  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzzw(const glm::vec<4, T, Q> &v) {
+
1742  return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
+
1743  }
+
1744 
+
1745  // yzwx
+
1746  template<typename T, qualifier Q>
+
1747  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwx(const glm::vec<4, T, Q> &v) {
+
1748  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
+
1749  }
+
1750 
+
1751  // yzwy
+
1752  template<typename T, qualifier Q>
+
1753  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwy(const glm::vec<4, T, Q> &v) {
+
1754  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
+
1755  }
+
1756 
+
1757  // yzwz
+
1758  template<typename T, qualifier Q>
+
1759  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzwz(const glm::vec<4, T, Q> &v) {
+
1760  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
+
1761  }
+
1762 
+
1763  // yzww
+
1764  template<typename T, qualifier Q>
+
1765  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> yzww(const glm::vec<4, T, Q> &v) {
+
1766  return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
+
1767  }
+
1768 
+
1769  // ywxx
+
1770  template<typename T, qualifier Q>
+
1771  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxx(const glm::vec<4, T, Q> &v) {
+
1772  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
+
1773  }
+
1774 
+
1775  // ywxy
+
1776  template<typename T, qualifier Q>
+
1777  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxy(const glm::vec<4, T, Q> &v) {
+
1778  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
+
1779  }
+
1780 
+
1781  // ywxz
+
1782  template<typename T, qualifier Q>
+
1783  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxz(const glm::vec<4, T, Q> &v) {
+
1784  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
+
1785  }
+
1786 
+
1787  // ywxw
+
1788  template<typename T, qualifier Q>
+
1789  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywxw(const glm::vec<4, T, Q> &v) {
+
1790  return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
+
1791  }
+
1792 
+
1793  // ywyx
+
1794  template<typename T, qualifier Q>
+
1795  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyx(const glm::vec<4, T, Q> &v) {
+
1796  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
+
1797  }
+
1798 
+
1799  // ywyy
+
1800  template<typename T, qualifier Q>
+
1801  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyy(const glm::vec<4, T, Q> &v) {
+
1802  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
+
1803  }
+
1804 
+
1805  // ywyz
+
1806  template<typename T, qualifier Q>
+
1807  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyz(const glm::vec<4, T, Q> &v) {
+
1808  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
+
1809  }
+
1810 
+
1811  // ywyw
+
1812  template<typename T, qualifier Q>
+
1813  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywyw(const glm::vec<4, T, Q> &v) {
+
1814  return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
+
1815  }
+
1816 
+
1817  // ywzx
+
1818  template<typename T, qualifier Q>
+
1819  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzx(const glm::vec<4, T, Q> &v) {
+
1820  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
+
1821  }
+
1822 
+
1823  // ywzy
+
1824  template<typename T, qualifier Q>
+
1825  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzy(const glm::vec<4, T, Q> &v) {
+
1826  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
+
1827  }
+
1828 
+
1829  // ywzz
+
1830  template<typename T, qualifier Q>
+
1831  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzz(const glm::vec<4, T, Q> &v) {
+
1832  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
+
1833  }
+
1834 
+
1835  // ywzw
+
1836  template<typename T, qualifier Q>
+
1837  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywzw(const glm::vec<4, T, Q> &v) {
+
1838  return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
+
1839  }
+
1840 
+
1841  // ywwx
+
1842  template<typename T, qualifier Q>
+
1843  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwx(const glm::vec<4, T, Q> &v) {
+
1844  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
+
1845  }
+
1846 
+
1847  // ywwy
+
1848  template<typename T, qualifier Q>
+
1849  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwy(const glm::vec<4, T, Q> &v) {
+
1850  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
+
1851  }
+
1852 
+
1853  // ywwz
+
1854  template<typename T, qualifier Q>
+
1855  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywwz(const glm::vec<4, T, Q> &v) {
+
1856  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
+
1857  }
+
1858 
+
1859  // ywww
+
1860  template<typename T, qualifier Q>
+
1861  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> ywww(const glm::vec<4, T, Q> &v) {
+
1862  return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
+
1863  }
+
1864 
+
1865  // zxxx
+
1866  template<typename T, qualifier Q>
+
1867  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(const glm::vec<3, T, Q> &v) {
+
1868  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
+
1869  }
+
1870 
+
1871  template<typename T, qualifier Q>
+
1872  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxx(const glm::vec<4, T, Q> &v) {
+
1873  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
+
1874  }
+
1875 
+
1876  // zxxy
+
1877  template<typename T, qualifier Q>
+
1878  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(const glm::vec<3, T, Q> &v) {
+
1879  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
+
1880  }
+
1881 
+
1882  template<typename T, qualifier Q>
+
1883  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxy(const glm::vec<4, T, Q> &v) {
+
1884  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
+
1885  }
+
1886 
+
1887  // zxxz
+
1888  template<typename T, qualifier Q>
+
1889  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(const glm::vec<3, T, Q> &v) {
+
1890  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
+
1891  }
+
1892 
+
1893  template<typename T, qualifier Q>
+
1894  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxz(const glm::vec<4, T, Q> &v) {
+
1895  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
+
1896  }
+
1897 
+
1898  // zxxw
+
1899  template<typename T, qualifier Q>
+
1900  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxxw(const glm::vec<4, T, Q> &v) {
+
1901  return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
+
1902  }
+
1903 
+
1904  // zxyx
+
1905  template<typename T, qualifier Q>
+
1906  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(const glm::vec<3, T, Q> &v) {
+
1907  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
+
1908  }
+
1909 
+
1910  template<typename T, qualifier Q>
+
1911  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyx(const glm::vec<4, T, Q> &v) {
+
1912  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
+
1913  }
+
1914 
+
1915  // zxyy
+
1916  template<typename T, qualifier Q>
+
1917  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(const glm::vec<3, T, Q> &v) {
+
1918  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
+
1919  }
+
1920 
+
1921  template<typename T, qualifier Q>
+
1922  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyy(const glm::vec<4, T, Q> &v) {
+
1923  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
+
1924  }
+
1925 
+
1926  // zxyz
+
1927  template<typename T, qualifier Q>
+
1928  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(const glm::vec<3, T, Q> &v) {
+
1929  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
+
1930  }
+
1931 
+
1932  template<typename T, qualifier Q>
+
1933  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyz(const glm::vec<4, T, Q> &v) {
+
1934  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
+
1935  }
+
1936 
+
1937  // zxyw
+
1938  template<typename T, qualifier Q>
+
1939  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxyw(const glm::vec<4, T, Q> &v) {
+
1940  return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
+
1941  }
+
1942 
+
1943  // zxzx
+
1944  template<typename T, qualifier Q>
+
1945  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(const glm::vec<3, T, Q> &v) {
+
1946  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
+
1947  }
+
1948 
+
1949  template<typename T, qualifier Q>
+
1950  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzx(const glm::vec<4, T, Q> &v) {
+
1951  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
+
1952  }
+
1953 
+
1954  // zxzy
+
1955  template<typename T, qualifier Q>
+
1956  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(const glm::vec<3, T, Q> &v) {
+
1957  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
+
1958  }
+
1959 
+
1960  template<typename T, qualifier Q>
+
1961  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzy(const glm::vec<4, T, Q> &v) {
+
1962  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
+
1963  }
+
1964 
+
1965  // zxzz
+
1966  template<typename T, qualifier Q>
+
1967  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(const glm::vec<3, T, Q> &v) {
+
1968  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
+
1969  }
+
1970 
+
1971  template<typename T, qualifier Q>
+
1972  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzz(const glm::vec<4, T, Q> &v) {
+
1973  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
+
1974  }
+
1975 
+
1976  // zxzw
+
1977  template<typename T, qualifier Q>
+
1978  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxzw(const glm::vec<4, T, Q> &v) {
+
1979  return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
+
1980  }
+
1981 
+
1982  // zxwx
+
1983  template<typename T, qualifier Q>
+
1984  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwx(const glm::vec<4, T, Q> &v) {
+
1985  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
+
1986  }
+
1987 
+
1988  // zxwy
+
1989  template<typename T, qualifier Q>
+
1990  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwy(const glm::vec<4, T, Q> &v) {
+
1991  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
+
1992  }
+
1993 
+
1994  // zxwz
+
1995  template<typename T, qualifier Q>
+
1996  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxwz(const glm::vec<4, T, Q> &v) {
+
1997  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
+
1998  }
+
1999 
+
2000  // zxww
+
2001  template<typename T, qualifier Q>
+
2002  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zxww(const glm::vec<4, T, Q> &v) {
+
2003  return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
+
2004  }
+
2005 
+
2006  // zyxx
+
2007  template<typename T, qualifier Q>
+
2008  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(const glm::vec<3, T, Q> &v) {
+
2009  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
+
2010  }
+
2011 
+
2012  template<typename T, qualifier Q>
+
2013  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxx(const glm::vec<4, T, Q> &v) {
+
2014  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
+
2015  }
+
2016 
+
2017  // zyxy
+
2018  template<typename T, qualifier Q>
+
2019  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(const glm::vec<3, T, Q> &v) {
+
2020  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
+
2021  }
+
2022 
+
2023  template<typename T, qualifier Q>
+
2024  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxy(const glm::vec<4, T, Q> &v) {
+
2025  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
+
2026  }
+
2027 
+
2028  // zyxz
+
2029  template<typename T, qualifier Q>
+
2030  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(const glm::vec<3, T, Q> &v) {
+
2031  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
+
2032  }
+
2033 
+
2034  template<typename T, qualifier Q>
+
2035  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxz(const glm::vec<4, T, Q> &v) {
+
2036  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
+
2037  }
+
2038 
+
2039  // zyxw
+
2040  template<typename T, qualifier Q>
+
2041  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyxw(const glm::vec<4, T, Q> &v) {
+
2042  return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
+
2043  }
+
2044 
+
2045  // zyyx
+
2046  template<typename T, qualifier Q>
+
2047  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(const glm::vec<3, T, Q> &v) {
+
2048  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
+
2049  }
+
2050 
+
2051  template<typename T, qualifier Q>
+
2052  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyx(const glm::vec<4, T, Q> &v) {
+
2053  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
+
2054  }
+
2055 
+
2056  // zyyy
+
2057  template<typename T, qualifier Q>
+
2058  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(const glm::vec<3, T, Q> &v) {
+
2059  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
+
2060  }
+
2061 
+
2062  template<typename T, qualifier Q>
+
2063  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyy(const glm::vec<4, T, Q> &v) {
+
2064  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
+
2065  }
+
2066 
+
2067  // zyyz
+
2068  template<typename T, qualifier Q>
+
2069  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(const glm::vec<3, T, Q> &v) {
+
2070  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
+
2071  }
+
2072 
+
2073  template<typename T, qualifier Q>
+
2074  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyz(const glm::vec<4, T, Q> &v) {
+
2075  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
+
2076  }
+
2077 
+
2078  // zyyw
+
2079  template<typename T, qualifier Q>
+
2080  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyyw(const glm::vec<4, T, Q> &v) {
+
2081  return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
+
2082  }
+
2083 
+
2084  // zyzx
+
2085  template<typename T, qualifier Q>
+
2086  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(const glm::vec<3, T, Q> &v) {
+
2087  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
+
2088  }
+
2089 
+
2090  template<typename T, qualifier Q>
+
2091  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzx(const glm::vec<4, T, Q> &v) {
+
2092  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
+
2093  }
+
2094 
+
2095  // zyzy
+
2096  template<typename T, qualifier Q>
+
2097  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(const glm::vec<3, T, Q> &v) {
+
2098  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
+
2099  }
+
2100 
+
2101  template<typename T, qualifier Q>
+
2102  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzy(const glm::vec<4, T, Q> &v) {
+
2103  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
+
2104  }
+
2105 
+
2106  // zyzz
+
2107  template<typename T, qualifier Q>
+
2108  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(const glm::vec<3, T, Q> &v) {
+
2109  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
+
2110  }
+
2111 
+
2112  template<typename T, qualifier Q>
+
2113  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzz(const glm::vec<4, T, Q> &v) {
+
2114  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
+
2115  }
+
2116 
+
2117  // zyzw
+
2118  template<typename T, qualifier Q>
+
2119  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyzw(const glm::vec<4, T, Q> &v) {
+
2120  return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
+
2121  }
+
2122 
+
2123  // zywx
+
2124  template<typename T, qualifier Q>
+
2125  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywx(const glm::vec<4, T, Q> &v) {
+
2126  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
+
2127  }
+
2128 
+
2129  // zywy
+
2130  template<typename T, qualifier Q>
+
2131  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywy(const glm::vec<4, T, Q> &v) {
+
2132  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
+
2133  }
+
2134 
+
2135  // zywz
+
2136  template<typename T, qualifier Q>
+
2137  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zywz(const glm::vec<4, T, Q> &v) {
+
2138  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
+
2139  }
+
2140 
+
2141  // zyww
+
2142  template<typename T, qualifier Q>
+
2143  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zyww(const glm::vec<4, T, Q> &v) {
+
2144  return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
+
2145  }
+
2146 
+
2147  // zzxx
+
2148  template<typename T, qualifier Q>
+
2149  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(const glm::vec<3, T, Q> &v) {
+
2150  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
+
2151  }
+
2152 
+
2153  template<typename T, qualifier Q>
+
2154  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxx(const glm::vec<4, T, Q> &v) {
+
2155  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
+
2156  }
+
2157 
+
2158  // zzxy
+
2159  template<typename T, qualifier Q>
+
2160  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(const glm::vec<3, T, Q> &v) {
+
2161  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
+
2162  }
+
2163 
+
2164  template<typename T, qualifier Q>
+
2165  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxy(const glm::vec<4, T, Q> &v) {
+
2166  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
+
2167  }
+
2168 
+
2169  // zzxz
+
2170  template<typename T, qualifier Q>
+
2171  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(const glm::vec<3, T, Q> &v) {
+
2172  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
+
2173  }
+
2174 
+
2175  template<typename T, qualifier Q>
+
2176  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxz(const glm::vec<4, T, Q> &v) {
+
2177  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
+
2178  }
+
2179 
+
2180  // zzxw
+
2181  template<typename T, qualifier Q>
+
2182  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzxw(const glm::vec<4, T, Q> &v) {
+
2183  return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
+
2184  }
+
2185 
+
2186  // zzyx
+
2187  template<typename T, qualifier Q>
+
2188  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(const glm::vec<3, T, Q> &v) {
+
2189  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
+
2190  }
+
2191 
+
2192  template<typename T, qualifier Q>
+
2193  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyx(const glm::vec<4, T, Q> &v) {
+
2194  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
+
2195  }
+
2196 
+
2197  // zzyy
+
2198  template<typename T, qualifier Q>
+
2199  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(const glm::vec<3, T, Q> &v) {
+
2200  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
+
2201  }
+
2202 
+
2203  template<typename T, qualifier Q>
+
2204  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyy(const glm::vec<4, T, Q> &v) {
+
2205  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
+
2206  }
+
2207 
+
2208  // zzyz
+
2209  template<typename T, qualifier Q>
+
2210  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(const glm::vec<3, T, Q> &v) {
+
2211  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
+
2212  }
+
2213 
+
2214  template<typename T, qualifier Q>
+
2215  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyz(const glm::vec<4, T, Q> &v) {
+
2216  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
+
2217  }
+
2218 
+
2219  // zzyw
+
2220  template<typename T, qualifier Q>
+
2221  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzyw(const glm::vec<4, T, Q> &v) {
+
2222  return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
+
2223  }
+
2224 
+
2225  // zzzx
+
2226  template<typename T, qualifier Q>
+
2227  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(const glm::vec<3, T, Q> &v) {
+
2228  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
+
2229  }
+
2230 
+
2231  template<typename T, qualifier Q>
+
2232  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzx(const glm::vec<4, T, Q> &v) {
+
2233  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
+
2234  }
+
2235 
+
2236  // zzzy
+
2237  template<typename T, qualifier Q>
+
2238  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(const glm::vec<3, T, Q> &v) {
+
2239  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
+
2240  }
+
2241 
+
2242  template<typename T, qualifier Q>
+
2243  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzy(const glm::vec<4, T, Q> &v) {
+
2244  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
+
2245  }
+
2246 
+
2247  // zzzz
+
2248  template<typename T, qualifier Q>
+
2249  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(const glm::vec<3, T, Q> &v) {
+
2250  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
+
2251  }
+
2252 
+
2253  template<typename T, qualifier Q>
+
2254  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzz(const glm::vec<4, T, Q> &v) {
+
2255  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
+
2256  }
+
2257 
+
2258  // zzzw
+
2259  template<typename T, qualifier Q>
+
2260  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzzw(const glm::vec<4, T, Q> &v) {
+
2261  return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
+
2262  }
+
2263 
+
2264  // zzwx
+
2265  template<typename T, qualifier Q>
+
2266  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwx(const glm::vec<4, T, Q> &v) {
+
2267  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
+
2268  }
+
2269 
+
2270  // zzwy
+
2271  template<typename T, qualifier Q>
+
2272  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwy(const glm::vec<4, T, Q> &v) {
+
2273  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
+
2274  }
+
2275 
+
2276  // zzwz
+
2277  template<typename T, qualifier Q>
+
2278  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzwz(const glm::vec<4, T, Q> &v) {
+
2279  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
+
2280  }
+
2281 
+
2282  // zzww
+
2283  template<typename T, qualifier Q>
+
2284  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zzww(const glm::vec<4, T, Q> &v) {
+
2285  return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
+
2286  }
+
2287 
+
2288  // zwxx
+
2289  template<typename T, qualifier Q>
+
2290  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxx(const glm::vec<4, T, Q> &v) {
+
2291  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
+
2292  }
+
2293 
+
2294  // zwxy
+
2295  template<typename T, qualifier Q>
+
2296  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxy(const glm::vec<4, T, Q> &v) {
+
2297  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
+
2298  }
+
2299 
+
2300  // zwxz
+
2301  template<typename T, qualifier Q>
+
2302  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxz(const glm::vec<4, T, Q> &v) {
+
2303  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
+
2304  }
+
2305 
+
2306  // zwxw
+
2307  template<typename T, qualifier Q>
+
2308  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwxw(const glm::vec<4, T, Q> &v) {
+
2309  return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
+
2310  }
+
2311 
+
2312  // zwyx
+
2313  template<typename T, qualifier Q>
+
2314  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyx(const glm::vec<4, T, Q> &v) {
+
2315  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
+
2316  }
+
2317 
+
2318  // zwyy
+
2319  template<typename T, qualifier Q>
+
2320  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyy(const glm::vec<4, T, Q> &v) {
+
2321  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
+
2322  }
+
2323 
+
2324  // zwyz
+
2325  template<typename T, qualifier Q>
+
2326  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyz(const glm::vec<4, T, Q> &v) {
+
2327  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
+
2328  }
+
2329 
+
2330  // zwyw
+
2331  template<typename T, qualifier Q>
+
2332  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwyw(const glm::vec<4, T, Q> &v) {
+
2333  return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
+
2334  }
+
2335 
+
2336  // zwzx
+
2337  template<typename T, qualifier Q>
+
2338  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzx(const glm::vec<4, T, Q> &v) {
+
2339  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
+
2340  }
+
2341 
+
2342  // zwzy
+
2343  template<typename T, qualifier Q>
+
2344  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzy(const glm::vec<4, T, Q> &v) {
+
2345  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
+
2346  }
+
2347 
+
2348  // zwzz
+
2349  template<typename T, qualifier Q>
+
2350  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzz(const glm::vec<4, T, Q> &v) {
+
2351  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
+
2352  }
+
2353 
+
2354  // zwzw
+
2355  template<typename T, qualifier Q>
+
2356  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwzw(const glm::vec<4, T, Q> &v) {
+
2357  return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
+
2358  }
+
2359 
+
2360  // zwwx
+
2361  template<typename T, qualifier Q>
+
2362  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwx(const glm::vec<4, T, Q> &v) {
+
2363  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
+
2364  }
+
2365 
+
2366  // zwwy
+
2367  template<typename T, qualifier Q>
+
2368  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwy(const glm::vec<4, T, Q> &v) {
+
2369  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
+
2370  }
+
2371 
+
2372  // zwwz
+
2373  template<typename T, qualifier Q>
+
2374  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwwz(const glm::vec<4, T, Q> &v) {
+
2375  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
+
2376  }
+
2377 
+
2378  // zwww
+
2379  template<typename T, qualifier Q>
+
2380  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> zwww(const glm::vec<4, T, Q> &v) {
+
2381  return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
+
2382  }
+
2383 
+
2384  // wxxx
+
2385  template<typename T, qualifier Q>
+
2386  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxx(const glm::vec<4, T, Q> &v) {
+
2387  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
+
2388  }
+
2389 
+
2390  // wxxy
+
2391  template<typename T, qualifier Q>
+
2392  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxy(const glm::vec<4, T, Q> &v) {
+
2393  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
+
2394  }
+
2395 
+
2396  // wxxz
+
2397  template<typename T, qualifier Q>
+
2398  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxz(const glm::vec<4, T, Q> &v) {
+
2399  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
+
2400  }
+
2401 
+
2402  // wxxw
+
2403  template<typename T, qualifier Q>
+
2404  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxxw(const glm::vec<4, T, Q> &v) {
+
2405  return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
+
2406  }
+
2407 
+
2408  // wxyx
+
2409  template<typename T, qualifier Q>
+
2410  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyx(const glm::vec<4, T, Q> &v) {
+
2411  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
+
2412  }
+
2413 
+
2414  // wxyy
+
2415  template<typename T, qualifier Q>
+
2416  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyy(const glm::vec<4, T, Q> &v) {
+
2417  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
+
2418  }
+
2419 
+
2420  // wxyz
+
2421  template<typename T, qualifier Q>
+
2422  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyz(const glm::vec<4, T, Q> &v) {
+
2423  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
+
2424  }
+
2425 
+
2426  // wxyw
+
2427  template<typename T, qualifier Q>
+
2428  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxyw(const glm::vec<4, T, Q> &v) {
+
2429  return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
+
2430  }
+
2431 
+
2432  // wxzx
+
2433  template<typename T, qualifier Q>
+
2434  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzx(const glm::vec<4, T, Q> &v) {
+
2435  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
+
2436  }
+
2437 
+
2438  // wxzy
+
2439  template<typename T, qualifier Q>
+
2440  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzy(const glm::vec<4, T, Q> &v) {
+
2441  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
+
2442  }
+
2443 
+
2444  // wxzz
+
2445  template<typename T, qualifier Q>
+
2446  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzz(const glm::vec<4, T, Q> &v) {
+
2447  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
+
2448  }
+
2449 
+
2450  // wxzw
+
2451  template<typename T, qualifier Q>
+
2452  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxzw(const glm::vec<4, T, Q> &v) {
+
2453  return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
+
2454  }
+
2455 
+
2456  // wxwx
+
2457  template<typename T, qualifier Q>
+
2458  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwx(const glm::vec<4, T, Q> &v) {
+
2459  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
+
2460  }
+
2461 
+
2462  // wxwy
+
2463  template<typename T, qualifier Q>
+
2464  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwy(const glm::vec<4, T, Q> &v) {
+
2465  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
+
2466  }
+
2467 
+
2468  // wxwz
+
2469  template<typename T, qualifier Q>
+
2470  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxwz(const glm::vec<4, T, Q> &v) {
+
2471  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
+
2472  }
+
2473 
+
2474  // wxww
+
2475  template<typename T, qualifier Q>
+
2476  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wxww(const glm::vec<4, T, Q> &v) {
+
2477  return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
+
2478  }
+
2479 
+
2480  // wyxx
+
2481  template<typename T, qualifier Q>
+
2482  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxx(const glm::vec<4, T, Q> &v) {
+
2483  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
+
2484  }
+
2485 
+
2486  // wyxy
+
2487  template<typename T, qualifier Q>
+
2488  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxy(const glm::vec<4, T, Q> &v) {
+
2489  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
+
2490  }
+
2491 
+
2492  // wyxz
+
2493  template<typename T, qualifier Q>
+
2494  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxz(const glm::vec<4, T, Q> &v) {
+
2495  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
+
2496  }
+
2497 
+
2498  // wyxw
+
2499  template<typename T, qualifier Q>
+
2500  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyxw(const glm::vec<4, T, Q> &v) {
+
2501  return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
+
2502  }
+
2503 
+
2504  // wyyx
+
2505  template<typename T, qualifier Q>
+
2506  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyx(const glm::vec<4, T, Q> &v) {
+
2507  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
+
2508  }
+
2509 
+
2510  // wyyy
+
2511  template<typename T, qualifier Q>
+
2512  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyy(const glm::vec<4, T, Q> &v) {
+
2513  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
+
2514  }
+
2515 
+
2516  // wyyz
+
2517  template<typename T, qualifier Q>
+
2518  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyz(const glm::vec<4, T, Q> &v) {
+
2519  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
+
2520  }
+
2521 
+
2522  // wyyw
+
2523  template<typename T, qualifier Q>
+
2524  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyyw(const glm::vec<4, T, Q> &v) {
+
2525  return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
+
2526  }
+
2527 
+
2528  // wyzx
+
2529  template<typename T, qualifier Q>
+
2530  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzx(const glm::vec<4, T, Q> &v) {
+
2531  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
+
2532  }
+
2533 
+
2534  // wyzy
+
2535  template<typename T, qualifier Q>
+
2536  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzy(const glm::vec<4, T, Q> &v) {
+
2537  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
+
2538  }
+
2539 
+
2540  // wyzz
+
2541  template<typename T, qualifier Q>
+
2542  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzz(const glm::vec<4, T, Q> &v) {
+
2543  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
+
2544  }
+
2545 
+
2546  // wyzw
+
2547  template<typename T, qualifier Q>
+
2548  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyzw(const glm::vec<4, T, Q> &v) {
+
2549  return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
+
2550  }
+
2551 
+
2552  // wywx
+
2553  template<typename T, qualifier Q>
+
2554  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywx(const glm::vec<4, T, Q> &v) {
+
2555  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
+
2556  }
+
2557 
+
2558  // wywy
+
2559  template<typename T, qualifier Q>
+
2560  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywy(const glm::vec<4, T, Q> &v) {
+
2561  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
+
2562  }
+
2563 
+
2564  // wywz
+
2565  template<typename T, qualifier Q>
+
2566  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wywz(const glm::vec<4, T, Q> &v) {
+
2567  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
+
2568  }
+
2569 
+
2570  // wyww
+
2571  template<typename T, qualifier Q>
+
2572  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wyww(const glm::vec<4, T, Q> &v) {
+
2573  return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
+
2574  }
+
2575 
+
2576  // wzxx
+
2577  template<typename T, qualifier Q>
+
2578  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxx(const glm::vec<4, T, Q> &v) {
+
2579  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
+
2580  }
+
2581 
+
2582  // wzxy
+
2583  template<typename T, qualifier Q>
+
2584  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxy(const glm::vec<4, T, Q> &v) {
+
2585  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
+
2586  }
+
2587 
+
2588  // wzxz
+
2589  template<typename T, qualifier Q>
+
2590  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxz(const glm::vec<4, T, Q> &v) {
+
2591  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
+
2592  }
+
2593 
+
2594  // wzxw
+
2595  template<typename T, qualifier Q>
+
2596  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzxw(const glm::vec<4, T, Q> &v) {
+
2597  return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
+
2598  }
+
2599 
+
2600  // wzyx
+
2601  template<typename T, qualifier Q>
+
2602  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyx(const glm::vec<4, T, Q> &v) {
+
2603  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
+
2604  }
+
2605 
+
2606  // wzyy
+
2607  template<typename T, qualifier Q>
+
2608  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyy(const glm::vec<4, T, Q> &v) {
+
2609  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
+
2610  }
+
2611 
+
2612  // wzyz
+
2613  template<typename T, qualifier Q>
+
2614  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyz(const glm::vec<4, T, Q> &v) {
+
2615  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
+
2616  }
+
2617 
+
2618  // wzyw
+
2619  template<typename T, qualifier Q>
+
2620  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzyw(const glm::vec<4, T, Q> &v) {
+
2621  return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
+
2622  }
+
2623 
+
2624  // wzzx
+
2625  template<typename T, qualifier Q>
+
2626  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzx(const glm::vec<4, T, Q> &v) {
+
2627  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
+
2628  }
+
2629 
+
2630  // wzzy
+
2631  template<typename T, qualifier Q>
+
2632  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzy(const glm::vec<4, T, Q> &v) {
+
2633  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
+
2634  }
+
2635 
+
2636  // wzzz
+
2637  template<typename T, qualifier Q>
+
2638  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzz(const glm::vec<4, T, Q> &v) {
+
2639  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
+
2640  }
+
2641 
+
2642  // wzzw
+
2643  template<typename T, qualifier Q>
+
2644  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzzw(const glm::vec<4, T, Q> &v) {
+
2645  return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
+
2646  }
+
2647 
+
2648  // wzwx
+
2649  template<typename T, qualifier Q>
+
2650  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwx(const glm::vec<4, T, Q> &v) {
+
2651  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
+
2652  }
+
2653 
+
2654  // wzwy
+
2655  template<typename T, qualifier Q>
+
2656  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwy(const glm::vec<4, T, Q> &v) {
+
2657  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
+
2658  }
+
2659 
+
2660  // wzwz
+
2661  template<typename T, qualifier Q>
+
2662  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzwz(const glm::vec<4, T, Q> &v) {
+
2663  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
+
2664  }
+
2665 
+
2666  // wzww
+
2667  template<typename T, qualifier Q>
+
2668  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wzww(const glm::vec<4, T, Q> &v) {
+
2669  return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
+
2670  }
+
2671 
+
2672  // wwxx
+
2673  template<typename T, qualifier Q>
+
2674  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxx(const glm::vec<4, T, Q> &v) {
+
2675  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
+
2676  }
+
2677 
+
2678  // wwxy
+
2679  template<typename T, qualifier Q>
+
2680  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxy(const glm::vec<4, T, Q> &v) {
+
2681  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
+
2682  }
+
2683 
+
2684  // wwxz
+
2685  template<typename T, qualifier Q>
+
2686  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxz(const glm::vec<4, T, Q> &v) {
+
2687  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
+
2688  }
+
2689 
+
2690  // wwxw
+
2691  template<typename T, qualifier Q>
+
2692  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwxw(const glm::vec<4, T, Q> &v) {
+
2693  return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
+
2694  }
+
2695 
+
2696  // wwyx
+
2697  template<typename T, qualifier Q>
+
2698  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyx(const glm::vec<4, T, Q> &v) {
+
2699  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
+
2700  }
+
2701 
+
2702  // wwyy
+
2703  template<typename T, qualifier Q>
+
2704  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyy(const glm::vec<4, T, Q> &v) {
+
2705  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
+
2706  }
+
2707 
+
2708  // wwyz
+
2709  template<typename T, qualifier Q>
+
2710  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyz(const glm::vec<4, T, Q> &v) {
+
2711  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
+
2712  }
+
2713 
+
2714  // wwyw
+
2715  template<typename T, qualifier Q>
+
2716  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwyw(const glm::vec<4, T, Q> &v) {
+
2717  return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
+
2718  }
+
2719 
+
2720  // wwzx
+
2721  template<typename T, qualifier Q>
+
2722  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzx(const glm::vec<4, T, Q> &v) {
+
2723  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
+
2724  }
+
2725 
+
2726  // wwzy
+
2727  template<typename T, qualifier Q>
+
2728  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzy(const glm::vec<4, T, Q> &v) {
+
2729  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
+
2730  }
+
2731 
+
2732  // wwzz
+
2733  template<typename T, qualifier Q>
+
2734  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzz(const glm::vec<4, T, Q> &v) {
+
2735  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
+
2736  }
+
2737 
+
2738  // wwzw
+
2739  template<typename T, qualifier Q>
+
2740  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwzw(const glm::vec<4, T, Q> &v) {
+
2741  return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
+
2742  }
+
2743 
+
2744  // wwwx
+
2745  template<typename T, qualifier Q>
+
2746  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwx(const glm::vec<4, T, Q> &v) {
+
2747  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
+
2748  }
+
2749 
+
2750  // wwwy
+
2751  template<typename T, qualifier Q>
+
2752  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwy(const glm::vec<4, T, Q> &v) {
+
2753  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
+
2754  }
+
2755 
+
2756  // wwwz
+
2757  template<typename T, qualifier Q>
+
2758  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwwz(const glm::vec<4, T, Q> &v) {
+
2759  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
+
2760  }
+
2761 
+
2762  // wwww
+
2763  template<typename T, qualifier Q>
+
2764  GLM_FUNC_QUALIFIER glm::vec<4, T, Q> wwww(const glm::vec<4, T, Q> &v) {
+
2765  return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);
+
2766  }
+
2767 
+
2769 }//namespace glm
+
+ + + + diff --git a/include/glm/doc/api/a00758.html b/include/glm/doc/api/a00758.html new file mode 100644 index 0000000..d3bd89d --- /dev/null +++ b/include/glm/doc/api/a00758.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: vector_angle.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_angle.hpp File Reference
+
+
+ +

GLM_GTX_vector_angle +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T angle (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the absolute angle between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T orientedAngle (vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)
 Returns the oriented angle between two 2d vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T orientedAngle (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)
 Returns the oriented angle between two 3d vectors based from a reference axis. More...
 
+

Detailed Description

+

GLM_GTX_vector_angle

+
See also
Core features (dependence)
+
+GLM_GTX_quaternion (dependence)
+
+gtx_epsilon (dependence)
+ +

Definition in file vector_angle.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00758_source.html b/include/glm/doc/api/a00758_source.html new file mode 100644 index 0000000..d13ad2d --- /dev/null +++ b/include/glm/doc/api/a00758_source.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: vector_angle.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_angle.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependency:
+
18 #include "../glm.hpp"
+
19 #include "../gtc/epsilon.hpp"
+
20 #include "../gtx/quaternion.hpp"
+
21 #include "../gtx/rotate_vector.hpp"
+
22 
+
23 #ifndef GLM_ENABLE_EXPERIMENTAL
+
24 # error "GLM: GLM_GTX_vector_angle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
25 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_GTX_vector_angle extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
37  template<length_t L, typename T, qualifier Q>
+
38  GLM_FUNC_DECL T angle(vec<L, T, Q> const& x, vec<L, T, Q> const& y);
+
39 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL T orientedAngle(vec<2, T, Q> const& x, vec<2, T, Q> const& y);
+
45 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL T orientedAngle(vec<3, T, Q> const& x, vec<3, T, Q> const& y, vec<3, T, Q> const& ref);
+
51 
+
53 }// namespace glm
+
54 
+
55 #include "vector_angle.inl"
+
+
GLM_FUNC_DECL T angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)
Returns the absolute angle between two vectors.
+
GLM_FUNC_DECL T orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)
Returns the oriented angle between two 3d vectors based from a reference axis.
+ + + + diff --git a/include/glm/doc/api/a00761.html b/include/glm/doc/api/a00761.html new file mode 100644 index 0000000..997d8d4 --- /dev/null +++ b/include/glm/doc/api/a00761.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: vector_query.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
vector_query.hpp File Reference
+
+
+ +

GLM_GTX_vector_query +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areCollinear (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are collinears. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areOrthogonal (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are orthogonals. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areOrthonormal (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are orthonormal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isCompNull (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a each component of a vector is null. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a vector is normalized. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a vector is null. More...
 
+

Detailed Description

+

GLM_GTX_vector_query

+
See also
Core features (dependence)
+ +

Definition in file vector_query.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00761_source.html b/include/glm/doc/api/a00761_source.html new file mode 100644 index 0000000..9a58473 --- /dev/null +++ b/include/glm/doc/api/a00761_source.html @@ -0,0 +1,126 @@ + + + + + + + +1.0.2 API documentation: vector_query.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vector_query.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include <cfloat>
+
18 #include <limits>
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # error "GLM: GLM_GTX_vector_query is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_vector_query extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
30 
+
33  template<length_t L, typename T, qualifier Q>
+
34  GLM_FUNC_DECL bool areCollinear(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
+
35 
+
38  template<length_t L, typename T, qualifier Q>
+
39  GLM_FUNC_DECL bool areOrthogonal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
+
40 
+
43  template<length_t L, typename T, qualifier Q>
+
44  GLM_FUNC_DECL bool isNormalized(vec<L, T, Q> const& v, T const& epsilon);
+
45 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL bool isNull(vec<L, T, Q> const& v, T const& epsilon);
+
50 
+
53  template<length_t L, typename T, qualifier Q>
+
54  GLM_FUNC_DECL vec<L, bool, Q> isCompNull(vec<L, T, Q> const& v, T const& epsilon);
+
55 
+
58  template<length_t L, typename T, qualifier Q>
+
59  GLM_FUNC_DECL bool areOrthonormal(vec<L, T, Q> const& v0, vec<L, T, Q> const& v1, T const& epsilon);
+
60 
+
62 }// namespace glm
+
63 
+
64 #include "vector_query.inl"
+
+
GLM_FUNC_DECL bool isNull(vec< L, T, Q > const &v, T const &epsilon)
Check whether a vector is null.
+
GLM_FUNC_DECL bool areOrthonormal(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are orthonormal.
+
GLM_FUNC_DECL bool areOrthogonal(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are orthogonals.
+
GLM_FUNC_DECL bool areCollinear(vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
Check whether two vectors are collinears.
+
GLM_FUNC_DECL vec< L, bool, Q > isCompNull(vec< L, T, Q > const &v, T const &epsilon)
Check whether a each component of a vector is null.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+
GLM_FUNC_DECL bool isNormalized(vec< L, T, Q > const &v, T const &epsilon)
Check whether a vector is normalized.
+ + + + diff --git a/include/glm/doc/api/a00764.html b/include/glm/doc/api/a00764.html new file mode 100644 index 0000000..eae0f96 --- /dev/null +++ b/include/glm/doc/api/a00764.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: wrap.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wrap.hpp File Reference
+
+
+ +

GLM_GTX_wrap +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

GLM_GTX_wrap

+
See also
Core features (dependence)
+ +

Definition in file wrap.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00764_source.html b/include/glm/doc/api/a00764_source.html new file mode 100644 index 0000000..d305541 --- /dev/null +++ b/include/glm/doc/api/a00764_source.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: wrap.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wrap.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../ext/scalar_common.hpp"
+
18 #include "../ext/vector_common.hpp"
+
19 #include "../gtc/vec1.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_wrap is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_wrap extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
33 }// namespace glm
+
34 
+
35 #include "wrap.inl"
+
+ + + + diff --git a/include/glm/doc/api/a00767.html b/include/glm/doc/api/a00767.html new file mode 100644 index 0000000..4161adc --- /dev/null +++ b/include/glm/doc/api/a00767.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat2x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat2x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00767_source.html b/include/glm/doc/api/a00767_source.html new file mode 100644 index 0000000..6653732 --- /dev/null +++ b/include/glm/doc/api/a00767_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: mat2x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x2.hpp
+
+ + +
Core features
+ + + + + + diff --git a/include/glm/doc/api/a00770.html b/include/glm/doc/api/a00770.html new file mode 100644 index 0000000..0ea8fd7 --- /dev/null +++ b/include/glm/doc/api/a00770.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat2x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat2x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00770_source.html b/include/glm/doc/api/a00770_source.html new file mode 100644 index 0000000..5dd50d2 --- /dev/null +++ b/include/glm/doc/api/a00770_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: mat2x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x3.hpp
+
+ +
Core features
+ + + + + + + diff --git a/include/glm/doc/api/a00773.html b/include/glm/doc/api/a00773.html new file mode 100644 index 0000000..6b566b4 --- /dev/null +++ b/include/glm/doc/api/a00773.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat2x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat2x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00773_source.html b/include/glm/doc/api/a00773_source.html new file mode 100644 index 0000000..ec8e44f --- /dev/null +++ b/include/glm/doc/api/a00773_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: mat2x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat2x4.hpp
+
+ + + + +
Core features
+ + + + diff --git a/include/glm/doc/api/a00776.html b/include/glm/doc/api/a00776.html new file mode 100644 index 0000000..4d3a164 --- /dev/null +++ b/include/glm/doc/api/a00776.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat3x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat3x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00776_source.html b/include/glm/doc/api/a00776_source.html new file mode 100644 index 0000000..d6eca24 --- /dev/null +++ b/include/glm/doc/api/a00776_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: mat3x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x2.hpp
+
+ + +
Core features
+ + + + + + diff --git a/include/glm/doc/api/a00779.html b/include/glm/doc/api/a00779.html new file mode 100644 index 0000000..e1b2891 --- /dev/null +++ b/include/glm/doc/api/a00779.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat3x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat3x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00779_source.html b/include/glm/doc/api/a00779_source.html new file mode 100644 index 0000000..6d9d9ee --- /dev/null +++ b/include/glm/doc/api/a00779_source.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: mat3x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x3.hpp
+
+ + + + +
Core features
+ + + + diff --git a/include/glm/doc/api/a00782.html b/include/glm/doc/api/a00782.html new file mode 100644 index 0000000..0c66e47 --- /dev/null +++ b/include/glm/doc/api/a00782.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat3x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat3x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00782_source.html b/include/glm/doc/api/a00782_source.html new file mode 100644 index 0000000..7c28dc1 --- /dev/null +++ b/include/glm/doc/api/a00782_source.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: mat3x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat3x4.hpp
+
+ + +
Core features
+ + + + + + diff --git a/include/glm/doc/api/a00785.html b/include/glm/doc/api/a00785.html new file mode 100644 index 0000000..a239e0a --- /dev/null +++ b/include/glm/doc/api/a00785.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat4x2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat4x2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00785_source.html b/include/glm/doc/api/a00785_source.html new file mode 100644 index 0000000..c1d3a2b --- /dev/null +++ b/include/glm/doc/api/a00785_source.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: mat4x2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x2.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+ + + +
8 #include "./ext/matrix_float4x2_precision.hpp"
+
9 
+
+ +
Core features
+ + + + + diff --git a/include/glm/doc/api/a00788.html b/include/glm/doc/api/a00788.html new file mode 100644 index 0000000..3fbf2e4 --- /dev/null +++ b/include/glm/doc/api/a00788.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat4x3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat4x3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00788_source.html b/include/glm/doc/api/a00788_source.html new file mode 100644 index 0000000..8099ad9 --- /dev/null +++ b/include/glm/doc/api/a00788_source.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: mat4x3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x3.hpp
+
+ + + + +
Core features
+ + + + diff --git a/include/glm/doc/api/a00791.html b/include/glm/doc/api/a00791.html new file mode 100644 index 0000000..4f07218 --- /dev/null +++ b/include/glm/doc/api/a00791.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: mat4x4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file mat4x4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00791_source.html b/include/glm/doc/api/a00791_source.html new file mode 100644 index 0000000..9560812 --- /dev/null +++ b/include/glm/doc/api/a00791_source.html @@ -0,0 +1,92 @@ + + + + + + + +1.0.2 API documentation: mat4x4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
mat4x4.hpp
+
+ + + + +
Core features
+ + + + diff --git a/include/glm/doc/api/a00794.html b/include/glm/doc/api/a00794.html new file mode 100644 index 0000000..eaf8eb5 --- /dev/null +++ b/include/glm/doc/api/a00794.html @@ -0,0 +1,117 @@ + + + + + + + +1.0.2 API documentation: matrix.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
matrix.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL T determinant (mat< C, R, T, Q > const &m)
 Return the determinant of a squared matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > inverse (mat< C, R, T, Q > const &m)
 Return the inverse of a squared matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j]. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct (vec< C, T, Q > const &c, vec< R, T, Q > const &r)
 Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose (mat< C, R, T, Q > const &x)
 Returns the transposed matrix of x. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00794_source.html b/include/glm/doc/api/a00794_source.html new file mode 100644 index 0000000..08670a0 --- /dev/null +++ b/include/glm/doc/api/a00794_source.html @@ -0,0 +1,197 @@ + + + + + + + +1.0.2 API documentation: matrix.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
matrix.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies
+
16 #include "detail/qualifier.hpp"
+
17 #include "detail/setup.hpp"
+
18 #include "vec2.hpp"
+
19 #include "vec3.hpp"
+
20 #include "vec4.hpp"
+
21 #include "mat2x2.hpp"
+
22 #include "mat2x3.hpp"
+
23 #include "mat2x4.hpp"
+
24 #include "mat3x2.hpp"
+
25 #include "mat3x3.hpp"
+
26 #include "mat3x4.hpp"
+
27 #include "mat4x2.hpp"
+
28 #include "mat4x3.hpp"
+
29 #include "mat4x4.hpp"
+
30 
+
31 namespace glm {
+
32 namespace detail
+
33 {
+
34  template<length_t C, length_t R, typename T, qualifier Q>
+
35  struct outerProduct_trait{};
+
36 
+
37  template<typename T, qualifier Q>
+
38  struct outerProduct_trait<2, 2, T, Q>
+
39  {
+
40  typedef mat<2, 2, T, Q> type;
+
41  };
+
42 
+
43  template<typename T, qualifier Q>
+
44  struct outerProduct_trait<2, 3, T, Q>
+
45  {
+
46  typedef mat<3, 2, T, Q> type;
+
47  };
+
48 
+
49  template<typename T, qualifier Q>
+
50  struct outerProduct_trait<2, 4, T, Q>
+
51  {
+
52  typedef mat<4, 2, T, Q> type;
+
53  };
+
54 
+
55  template<typename T, qualifier Q>
+
56  struct outerProduct_trait<3, 2, T, Q>
+
57  {
+
58  typedef mat<2, 3, T, Q> type;
+
59  };
+
60 
+
61  template<typename T, qualifier Q>
+
62  struct outerProduct_trait<3, 3, T, Q>
+
63  {
+
64  typedef mat<3, 3, T, Q> type;
+
65  };
+
66 
+
67  template<typename T, qualifier Q>
+
68  struct outerProduct_trait<3, 4, T, Q>
+
69  {
+
70  typedef mat<4, 3, T, Q> type;
+
71  };
+
72 
+
73  template<typename T, qualifier Q>
+
74  struct outerProduct_trait<4, 2, T, Q>
+
75  {
+
76  typedef mat<2, 4, T, Q> type;
+
77  };
+
78 
+
79  template<typename T, qualifier Q>
+
80  struct outerProduct_trait<4, 3, T, Q>
+
81  {
+
82  typedef mat<3, 4, T, Q> type;
+
83  };
+
84 
+
85  template<typename T, qualifier Q>
+
86  struct outerProduct_trait<4, 4, T, Q>
+
87  {
+
88  typedef mat<4, 4, T, Q> type;
+
89  };
+
90 }//namespace detail
+
91 
+
94 
+
105  template<length_t C, length_t R, typename T, qualifier Q>
+
106  GLM_FUNC_DECL mat<C, R, T, Q> matrixCompMult(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
+
107 
+
119  template<length_t C, length_t R, typename T, qualifier Q>
+
120  GLM_FUNC_DECL typename detail::outerProduct_trait<C, R, T, Q>::type outerProduct(vec<C, T, Q> const& c, vec<R, T, Q> const& r);
+
121 
+
131  template<length_t C, length_t R, typename T, qualifier Q>
+
132  GLM_FUNC_DECL typename mat<C, R, T, Q>::transpose_type transpose(mat<C, R, T, Q> const& x);
+
133 
+
143  template<length_t C, length_t R, typename T, qualifier Q>
+
144  GLM_FUNC_DECL T determinant(mat<C, R, T, Q> const& m);
+
145 
+
155  template<length_t C, length_t R, typename T, qualifier Q>
+
156  GLM_FUNC_DECL mat<C, R, T, Q> inverse(mat<C, R, T, Q> const& m);
+
157 
+
159 }//namespace glm
+
160 
+
161 #include "detail/func_matrix.inl"
+
+
GLM_FUNC_DECL T determinant(mat< C, R, T, Q > const &m)
Return the determinant of a squared matrix.
+
Core features
+
GLM_FUNC_DECL mat< C, R, T, Q > inverse(mat< C, R, T, Q > const &m)
Return the inverse of a squared matrix.
+
Core features
+
Core features
+
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct(vec< C, T, Q > const &c, vec< R, T, Q > const &r)
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a...
+
Core features
+
Core features
+
Core features
+
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose(mat< C, R, T, Q > const &x)
Returns the transposed matrix of x.
+
Core features
+
Core features
+
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and...
+
Core features
+
Core features
+
Core features
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00797.html b/include/glm/doc/api/a00797.html new file mode 100644 index 0000000..74c6e4a --- /dev/null +++ b/include/glm/doc/api/a00797.html @@ -0,0 +1,157 @@ + + + + + + + +1.0.2 API documentation: trigonometric.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
trigonometric.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > acos (vec< L, T, Q > const &x)
 Arc cosine. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > acosh (vec< L, T, Q > const &x)
 Arc hyperbolic cosine; returns the non-negative inverse of cosh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > asin (vec< L, T, Q > const &x)
 Arc sine. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > asinh (vec< L, T, Q > const &x)
 Arc hyperbolic sine; returns the inverse of sinh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atan (vec< L, T, Q > const &y, vec< L, T, Q > const &x)
 Arc tangent. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atan (vec< L, T, Q > const &y_over_x)
 Arc tangent. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atanh (vec< L, T, Q > const &x)
 Arc hyperbolic tangent; returns the inverse of tanh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > cos (vec< L, T, Q > const &angle)
 The standard trigonometric cosine function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > cosh (vec< L, T, Q > const &angle)
 Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > degrees (vec< L, T, Q > const &radians)
 Converts radians to degrees and returns the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > radians (vec< L, T, Q > const &degrees)
 Converts degrees to radians and returns the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sin (vec< L, T, Q > const &angle)
 The standard trigonometric sine function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sinh (vec< L, T, Q > const &angle)
 Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > tan (vec< L, T, Q > const &angle)
 The standard trigonometric tangent function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > tanh (vec< L, T, Q > const &angle)
 Returns the hyperbolic tangent function, sinh(angle) / cosh(angle) More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a00797_source.html b/include/glm/doc/api/a00797_source.html new file mode 100644 index 0000000..d8c4c07 --- /dev/null +++ b/include/glm/doc/api/a00797_source.html @@ -0,0 +1,153 @@ + + + + + + + +1.0.2 API documentation: trigonometric.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
trigonometric.hpp
+
+
+Go to the documentation of this file.
1 
+
19 #pragma once
+
20 
+
21 #include "detail/setup.hpp"
+
22 #include "detail/qualifier.hpp"
+
23 
+
24 namespace glm
+
25 {
+
28 
+
37  template<length_t L, typename T, qualifier Q>
+
38  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> radians(vec<L, T, Q> const& degrees);
+
39 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> degrees(vec<L, T, Q> const& radians);
+
50 
+
60  template<length_t L, typename T, qualifier Q>
+
61  GLM_FUNC_DECL vec<L, T, Q> sin(vec<L, T, Q> const& angle);
+
62 
+
72  template<length_t L, typename T, qualifier Q>
+
73  GLM_FUNC_DECL vec<L, T, Q> cos(vec<L, T, Q> const& angle);
+
74 
+
83  template<length_t L, typename T, qualifier Q>
+
84  GLM_FUNC_DECL vec<L, T, Q> tan(vec<L, T, Q> const& angle);
+
85 
+
96  template<length_t L, typename T, qualifier Q>
+
97  GLM_FUNC_DECL vec<L, T, Q> asin(vec<L, T, Q> const& x);
+
98 
+
109  template<length_t L, typename T, qualifier Q>
+
110  GLM_FUNC_DECL vec<L, T, Q> acos(vec<L, T, Q> const& x);
+
111 
+
124  template<length_t L, typename T, qualifier Q>
+
125  GLM_FUNC_DECL vec<L, T, Q> atan(vec<L, T, Q> const& y, vec<L, T, Q> const& x);
+
126 
+
136  template<length_t L, typename T, qualifier Q>
+
137  GLM_FUNC_DECL vec<L, T, Q> atan(vec<L, T, Q> const& y_over_x);
+
138 
+
147  template<length_t L, typename T, qualifier Q>
+
148  GLM_FUNC_DECL vec<L, T, Q> sinh(vec<L, T, Q> const& angle);
+
149 
+
158  template<length_t L, typename T, qualifier Q>
+
159  GLM_FUNC_DECL vec<L, T, Q> cosh(vec<L, T, Q> const& angle);
+
160 
+
169  template<length_t L, typename T, qualifier Q>
+
170  GLM_FUNC_DECL vec<L, T, Q> tanh(vec<L, T, Q> const& angle);
+
171 
+
180  template<length_t L, typename T, qualifier Q>
+
181  GLM_FUNC_DECL vec<L, T, Q> asinh(vec<L, T, Q> const& x);
+
182 
+
192  template<length_t L, typename T, qualifier Q>
+
193  GLM_FUNC_DECL vec<L, T, Q> acosh(vec<L, T, Q> const& x);
+
194 
+
204  template<length_t L, typename T, qualifier Q>
+
205  GLM_FUNC_DECL vec<L, T, Q> atanh(vec<L, T, Q> const& x);
+
206 
+
208 }//namespace glm
+
209 
+
210 #include "detail/func_trigonometric.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > sinh(vec< L, T, Q > const &angle)
Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.
+
GLM_FUNC_DECL vec< L, T, Q > cosh(vec< L, T, Q > const &angle)
Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.
+
GLM_FUNC_DECL vec< L, T, Q > cos(vec< L, T, Q > const &angle)
The standard trigonometric cosine function.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > radians(vec< L, T, Q > const &degrees)
Converts degrees to radians and returns the result.
+
GLM_FUNC_DECL vec< L, T, Q > acosh(vec< L, T, Q > const &x)
Arc hyperbolic cosine; returns the non-negative inverse of cosh.
+
GLM_FUNC_DECL vec< L, T, Q > atan(vec< L, T, Q > const &y_over_x)
Arc tangent.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL vec< L, T, Q > asinh(vec< L, T, Q > const &x)
Arc hyperbolic sine; returns the inverse of sinh.
+
GLM_FUNC_DECL vec< L, T, Q > tanh(vec< L, T, Q > const &angle)
Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)
+
GLM_FUNC_DECL vec< L, T, Q > sin(vec< L, T, Q > const &angle)
The standard trigonometric sine function.
+
GLM_FUNC_DECL vec< L, T, Q > atanh(vec< L, T, Q > const &x)
Arc hyperbolic tangent; returns the inverse of tanh.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > degrees(vec< L, T, Q > const &radians)
Converts radians to degrees and returns the result.
+
GLM_FUNC_DECL vec< L, T, Q > asin(vec< L, T, Q > const &x)
Arc sine.
+
GLM_FUNC_DECL vec< L, T, Q > acos(vec< L, T, Q > const &x)
Arc cosine.
+
GLM_FUNC_DECL vec< L, T, Q > tan(vec< L, T, Q > const &angle)
The standard trigonometric tangent function.
+ + + + diff --git a/include/glm/doc/api/a00800.html b/include/glm/doc/api/a00800.html new file mode 100644 index 0000000..30b2cd2 --- /dev/null +++ b/include/glm/doc/api/a00800.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: vec2.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec2.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file vec2.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00800_source.html b/include/glm/doc/api/a00800_source.html new file mode 100644 index 0000000..3618edf --- /dev/null +++ b/include/glm/doc/api/a00800_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: vec2.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec2.hpp
+
+ +
Core features
+
GLM_EXT_vector_uint2_sized
+
GLM_EXT_vector_int2_sized
+
Core features
+ +
Core features
+
Core features
+ +
Core features
+ + + + + diff --git a/include/glm/doc/api/a00803.html b/include/glm/doc/api/a00803.html new file mode 100644 index 0000000..3c32f50 --- /dev/null +++ b/include/glm/doc/api/a00803.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: vec3.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec3.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file vec3.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00803_source.html b/include/glm/doc/api/a00803_source.html new file mode 100644 index 0000000..0e0e538 --- /dev/null +++ b/include/glm/doc/api/a00803_source.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: vec3.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec3.hpp
+
+ + +
Core features
+
Core features
+
GLM_EXT_vector_uint3_sized
+ +
Core features
+
Core features
+
Core features
+ +
GLM_EXT_vector_int3_sized
+ + + + diff --git a/include/glm/doc/api/a00806.html b/include/glm/doc/api/a00806.html new file mode 100644 index 0000000..519865b --- /dev/null +++ b/include/glm/doc/api/a00806.html @@ -0,0 +1,90 @@ + + + + + + + +1.0.2 API documentation: vec4.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec4.hpp File Reference
+
+
+ +

Core features +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

Core features

+ +

Definition in file vec4.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a00806_source.html b/include/glm/doc/api/a00806_source.html new file mode 100644 index 0000000..f39666f --- /dev/null +++ b/include/glm/doc/api/a00806_source.html @@ -0,0 +1,104 @@ + + + + + + + +1.0.2 API documentation: vec4.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
vec4.hpp
+
+
+Go to the documentation of this file.
1 
+
4 #pragma once
+
5 #include "./ext/vector_bool4.hpp"
+ + + + + +
11 #include "./ext/vector_int4.hpp"
+ +
13 #include "./ext/vector_uint4.hpp"
+ +
15 
+
+
Core features
+
GLM_EXT_vector_int4_sized
+
Core features
+ + + +
Core features
+
Core features
+
GLM_EXT_vector_uint4_sized
+
Core features
+ + + + diff --git a/include/glm/doc/api/a00809_source.html b/include/glm/doc/api/a00809_source.html new file mode 100644 index 0000000..c1624b8 --- /dev/null +++ b/include/glm/doc/api/a00809_source.html @@ -0,0 +1,2619 @@ + + + + + + + +1.0.2 API documentation: man.doxy Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
man.doxy
+
+
+
1 # Doxyfile 1.8.18
+
2 
+
3 # This file describes the settings to be used by the documentation system
+
4 # doxygen (www.doxygen.org) for a project.
+
5 #
+
6 # All text after a double hash (##) is considered a comment and is placed in
+
7 # front of the TAG it is preceding.
+
8 #
+
9 # All text after a single hash (#) is considered a comment and will be ignored.
+
10 # The format is:
+
11 # TAG = value [value, ...]
+
12 # For lists, items can also be appended using:
+
13 # TAG += value [value, ...]
+
14 # Values that contain spaces should be placed between quotes (\" \").
+
15 
+
16 #---------------------------------------------------------------------------
+
17 # Project related configuration options
+
18 #---------------------------------------------------------------------------
+
19 
+
20 # This tag specifies the encoding used for all characters in the configuration
+
21 # file that follow. The default is UTF-8 which is also the encoding used for all
+
22 # text before the first occurrence of this tag. Doxygen uses libiconv (or the
+
23 # iconv built into libc) for the transcoding. See
+
24 # https://www.gnu.org/software/libiconv/ for the list of possible encodings.
+
25 # The default value is: UTF-8.
+
26 
+
27 DOXYFILE_ENCODING = UTF-8
+
28 
+
29 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
+
30 # double-quotes, unless you are using Doxywizard) that should identify the
+
31 # project for which the documentation is generated. This name is used in the
+
32 # title of most generated pages and in a few other places.
+
33 # The default value is: My Project.
+
34 
+
35 PROJECT_NAME = "1.0.0 API documentation"
+
36 
+
37 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
+
38 # could be handy for archiving the generated documentation or if some version
+
39 # control system is used.
+
40 
+
41 PROJECT_NUMBER =
+
42 
+
43 # Using the PROJECT_BRIEF tag one can provide an optional one line description
+
44 # for a project that appears at the top of each page and should give viewer a
+
45 # quick idea about the purpose of the project. Keep the description short.
+
46 
+
47 PROJECT_BRIEF =
+
48 
+
49 # With the PROJECT_LOGO tag one can specify a logo or an icon that is included
+
50 # in the documentation. The maximum height of the logo should not exceed 55
+
51 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
+
52 # the logo to the output directory.
+
53 
+
54 PROJECT_LOGO = theme/logo-mini.png
+
55 
+
56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
+
57 # into which the generated documentation will be written. If a relative path is
+
58 # entered, it will be relative to the location where doxygen was started. If
+
59 # left blank the current directory will be used.
+
60 
+
61 OUTPUT_DIRECTORY = .
+
62 
+
63 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
+
64 # directories (in 2 levels) under the output directory of each output format and
+
65 # will distribute the generated files over these directories. Enabling this
+
66 # option can be useful when feeding doxygen a huge amount of source files, where
+
67 # putting all generated files in the same directory would otherwise causes
+
68 # performance problems for the file system.
+
69 # The default value is: NO.
+
70 
+
71 CREATE_SUBDIRS = NO
+
72 
+
73 # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
+
74 # characters to appear in the names of generated files. If set to NO, non-ASCII
+
75 # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
+
76 # U+3044.
+
77 # The default value is: NO.
+
78 
+
79 ALLOW_UNICODE_NAMES = NO
+
80 
+
81 # The OUTPUT_LANGUAGE tag is used to specify the language in which all
+
82 # documentation generated by doxygen is written. Doxygen will use this
+
83 # information to generate all constant output in the proper language.
+
84 # Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
+
85 # Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
+
86 # Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
+
87 # Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
+
88 # Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
+
89 # Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
+
90 # Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
+
91 # Ukrainian and Vietnamese.
+
92 # The default value is: English.
+
93 
+
94 OUTPUT_LANGUAGE = English
+
95 
+
96 # The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all
+
97 # documentation generated by doxygen is written. Doxygen will use this
+
98 # information to generate all generated output in the proper direction.
+
99 # Possible values are: None, LTR, RTL and Context.
+
100 # The default value is: None.
+
101 
+
102 OUTPUT_TEXT_DIRECTION = None
+
103 
+
104 # If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
+
105 # descriptions after the members that are listed in the file and class
+
106 # documentation (similar to Javadoc). Set to NO to disable this.
+
107 # The default value is: YES.
+
108 
+
109 BRIEF_MEMBER_DESC = YES
+
110 
+
111 # If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
+
112 # description of a member or function before the detailed description
+
113 #
+
114 # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+
115 # brief descriptions will be completely suppressed.
+
116 # The default value is: YES.
+
117 
+
118 REPEAT_BRIEF = YES
+
119 
+
120 # This tag implements a quasi-intelligent brief description abbreviator that is
+
121 # used to form the text in various listings. Each string in this list, if found
+
122 # as the leading text of the brief description, will be stripped from the text
+
123 # and the result, after processing the whole list, is used as the annotated
+
124 # text. Otherwise, the brief description is used as-is. If left blank, the
+
125 # following values are used ($name is automatically replaced with the name of
+
126 # the entity):The $name class, The $name widget, The $name file, is, provides,
+
127 # specifies, contains, represents, a, an and the.
+
128 
+
129 ABBREVIATE_BRIEF = "The $name class " \
+
130  "The $name widget " \
+
131  "The $name file " \
+
132  is \
+
133  provides \
+
134  specifies \
+
135  contains \
+
136  represents \
+
137  a \
+
138  an \
+
139  the
+
140 
+
141 # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+
142 # doxygen will generate a detailed section even if there is only a brief
+
143 # description.
+
144 # The default value is: NO.
+
145 
+
146 ALWAYS_DETAILED_SEC = NO
+
147 
+
148 # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+
149 # inherited members of a class in the documentation of that class as if those
+
150 # members were ordinary class members. Constructors, destructors and assignment
+
151 # operators of the base classes will not be shown.
+
152 # The default value is: NO.
+
153 
+
154 INLINE_INHERITED_MEMB = NO
+
155 
+
156 # If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
+
157 # before files name in the file list and in the header files. If set to NO the
+
158 # shortest path that makes the file name unique will be used
+
159 # The default value is: YES.
+
160 
+
161 FULL_PATH_NAMES = NO
+
162 
+
163 # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
+
164 # Stripping is only done if one of the specified strings matches the left-hand
+
165 # part of the path. The tag can be used to show relative paths in the file list.
+
166 # If left blank the directory from which doxygen is run is used as the path to
+
167 # strip.
+
168 #
+
169 # Note that you can specify absolute paths here, but also relative paths, which
+
170 # will be relative from the directory where doxygen is started.
+
171 # This tag requires that the tag FULL_PATH_NAMES is set to YES.
+
172 
+
173 STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ "
+
174 
+
175 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
+
176 # path mentioned in the documentation of a class, which tells the reader which
+
177 # header file to include in order to use a class. If left blank only the name of
+
178 # the header file containing the class definition is used. Otherwise one should
+
179 # specify the list of include paths that are normally passed to the compiler
+
180 # using the -I flag.
+
181 
+
182 STRIP_FROM_INC_PATH =
+
183 
+
184 # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
+
185 # less readable) file names. This can be useful is your file systems doesn't
+
186 # support long names like on DOS, Mac, or CD-ROM.
+
187 # The default value is: NO.
+
188 
+
189 SHORT_NAMES = YES
+
190 
+
191 # If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
+
192 # first line (until the first dot) of a Javadoc-style comment as the brief
+
193 # description. If set to NO, the Javadoc-style will behave just like regular Qt-
+
194 # style comments (thus requiring an explicit @brief command for a brief
+
195 # description.)
+
196 # The default value is: NO.
+
197 
+
198 JAVADOC_AUTOBRIEF = YES
+
199 
+
200 # If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
+
201 # such as
+
202 # /***************
+
203 # as being the beginning of a Javadoc-style comment "banner". If set to NO, the
+
204 # Javadoc-style will behave just like regular comments and it will not be
+
205 # interpreted by doxygen.
+
206 # The default value is: NO.
+
207 
+
208 JAVADOC_BANNER = NO
+
209 
+
210 # If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
+
211 # line (until the first dot) of a Qt-style comment as the brief description. If
+
212 # set to NO, the Qt-style will behave just like regular Qt-style comments (thus
+
213 # requiring an explicit \brief command for a brief description.)
+
214 # The default value is: NO.
+
215 
+
216 QT_AUTOBRIEF = NO
+
217 
+
218 # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
+
219 # multi-line C++ special comment block (i.e. a block of //! or /// comments) as
+
220 # a brief description. This used to be the default behavior. The new default is
+
221 # to treat a multi-line C++ comment block as a detailed description. Set this
+
222 # tag to YES if you prefer the old behavior instead.
+
223 #
+
224 # Note that setting this tag to YES also means that rational rose comments are
+
225 # not recognized any more.
+
226 # The default value is: NO.
+
227 
+
228 MULTILINE_CPP_IS_BRIEF = NO
+
229 
+
230 # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
+
231 # documentation from any documented member that it re-implements.
+
232 # The default value is: YES.
+
233 
+
234 INHERIT_DOCS = YES
+
235 
+
236 # If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
+
237 # page for each member. If set to NO, the documentation of a member will be part
+
238 # of the file/class/namespace that contains it.
+
239 # The default value is: NO.
+
240 
+
241 SEPARATE_MEMBER_PAGES = NO
+
242 
+
243 # The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
+
244 # uses this value to replace tabs by spaces in code fragments.
+
245 # Minimum value: 1, maximum value: 16, default value: 4.
+
246 
+
247 TAB_SIZE = 8
+
248 
+
249 # This tag can be used to specify a number of aliases that act as commands in
+
250 # the documentation. An alias has the form:
+
251 # name=value
+
252 # For example adding
+
253 # "sideeffect=@par Side Effects:\n"
+
254 # will allow you to put the command \sideeffect (or @sideeffect) in the
+
255 # documentation, which will result in a user-defined paragraph with heading
+
256 # "Side Effects:". You can put \n's in the value part of an alias to insert
+
257 # newlines (in the resulting output). You can put ^^ in the value part of an
+
258 # alias to insert a newline as if a physical newline was in the original file.
+
259 # When you need a literal { or } or , in the value part of an alias you have to
+
260 # escape them by means of a backslash (\‍), this can lead to conflicts with the
+
261 # commands \{ and \} for these it is advised to use the version @{ and @} or use
+
262 # a double escape (\\{ and \\})
+
263 
+
264 ALIASES =
+
265 
+
266 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
+
267 # only. Doxygen will then generate output that is more tailored for C. For
+
268 # instance, some of the names that are used will be different. The list of all
+
269 # members will be omitted, etc.
+
270 # The default value is: NO.
+
271 
+
272 OPTIMIZE_OUTPUT_FOR_C = NO
+
273 
+
274 # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
+
275 # Python sources only. Doxygen will then generate output that is more tailored
+
276 # for that language. For instance, namespaces will be presented as packages,
+
277 # qualified scopes will look different, etc.
+
278 # The default value is: NO.
+
279 
+
280 OPTIMIZE_OUTPUT_JAVA = NO
+
281 
+
282 # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+
283 # sources. Doxygen will then generate output that is tailored for Fortran.
+
284 # The default value is: NO.
+
285 
+
286 OPTIMIZE_FOR_FORTRAN = NO
+
287 
+
288 # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+
289 # sources. Doxygen will then generate output that is tailored for VHDL.
+
290 # The default value is: NO.
+
291 
+
292 OPTIMIZE_OUTPUT_VHDL = NO
+
293 
+
294 # Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
+
295 # sources only. Doxygen will then generate output that is more tailored for that
+
296 # language. For instance, namespaces will be presented as modules, types will be
+
297 # separated into more groups, etc.
+
298 # The default value is: NO.
+
299 
+
300 OPTIMIZE_OUTPUT_SLICE = NO
+
301 
+
302 # Doxygen selects the parser to use depending on the extension of the files it
+
303 # parses. With this tag you can assign which parser to use for a given
+
304 # extension. Doxygen has a built-in mapping, but you can override or extend it
+
305 # using this tag. The format is ext=language, where ext is a file extension, and
+
306 # language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
+
307 # Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,
+
308 # Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
+
309 # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
+
310 # tries to guess whether the code is fixed or free formatted code, this is the
+
311 # default for Fortran type files). For instance to make doxygen treat .inc files
+
312 # as Fortran files (default is PHP), and .f files as C (default is Fortran),
+
313 # use: inc=Fortran f=C.
+
314 #
+
315 # Note: For files without extension you can use no_extension as a placeholder.
+
316 #
+
317 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise
+
318 # the files are not read by doxygen.
+
319 
+
320 EXTENSION_MAPPING =
+
321 
+
322 # If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
+
323 # according to the Markdown format, which allows for more readable
+
324 # documentation. See https://daringfireball.net/projects/markdown/ for details.
+
325 # The output of markdown processing is further processed by doxygen, so you can
+
326 # mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
+
327 # case of backward compatibilities issues.
+
328 # The default value is: YES.
+
329 
+
330 MARKDOWN_SUPPORT = YES
+
331 
+
332 # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
+
333 # to that level are automatically included in the table of contents, even if
+
334 # they do not have an id attribute.
+
335 # Note: This feature currently applies only to Markdown headings.
+
336 # Minimum value: 0, maximum value: 99, default value: 5.
+
337 # This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
+
338 
+
339 TOC_INCLUDE_HEADINGS = 5
+
340 
+
341 # When enabled doxygen tries to link words that correspond to documented
+
342 # classes, or namespaces to their corresponding documentation. Such a link can
+
343 # be prevented in individual cases by putting a % sign in front of the word or
+
344 # globally by setting AUTOLINK_SUPPORT to NO.
+
345 # The default value is: YES.
+
346 
+
347 AUTOLINK_SUPPORT = YES
+
348 
+
349 # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+
350 # to include (a tag file for) the STL sources as input, then you should set this
+
351 # tag to YES in order to let doxygen match functions declarations and
+
352 # definitions whose arguments contain STL classes (e.g. func(std::string);
+
353 # versus func(std::string) {}). This also make the inheritance and collaboration
+
354 # diagrams that involve STL classes more complete and accurate.
+
355 # The default value is: NO.
+
356 
+
357 BUILTIN_STL_SUPPORT = NO
+
358 
+
359 # If you use Microsoft's C++/CLI language, you should set this option to YES to
+
360 # enable parsing support.
+
361 # The default value is: NO.
+
362 
+
363 CPP_CLI_SUPPORT = NO
+
364 
+
365 # Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
+
366 # https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
+
367 # will parse them like normal C++ but will assume all classes use public instead
+
368 # of private inheritance when no explicit protection keyword is present.
+
369 # The default value is: NO.
+
370 
+
371 SIP_SUPPORT = NO
+
372 
+
373 # For Microsoft's IDL there are propget and propput attributes to indicate
+
374 # getter and setter methods for a property. Setting this option to YES will make
+
375 # doxygen to replace the get and set methods by a property in the documentation.
+
376 # This will only work if the methods are indeed getting or setting a simple
+
377 # type. If this is not the case, or you want to show the methods anyway, you
+
378 # should set this option to NO.
+
379 # The default value is: YES.
+
380 
+
381 IDL_PROPERTY_SUPPORT = YES
+
382 
+
383 # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+
384 # tag is set to YES then doxygen will reuse the documentation of the first
+
385 # member in the group (if any) for the other members of the group. By default
+
386 # all members of a group must be documented explicitly.
+
387 # The default value is: NO.
+
388 
+
389 DISTRIBUTE_GROUP_DOC = NO
+
390 
+
391 # If one adds a struct or class to a group and this option is enabled, then also
+
392 # any nested class or struct is added to the same group. By default this option
+
393 # is disabled and one has to add nested compounds explicitly via \ingroup.
+
394 # The default value is: NO.
+
395 
+
396 GROUP_NESTED_COMPOUNDS = NO
+
397 
+
398 # Set the SUBGROUPING tag to YES to allow class member groups of the same type
+
399 # (for instance a group of public functions) to be put as a subgroup of that
+
400 # type (e.g. under the Public Functions section). Set it to NO to prevent
+
401 # subgrouping. Alternatively, this can be done per class using the
+
402 # \nosubgrouping command.
+
403 # The default value is: YES.
+
404 
+
405 SUBGROUPING = NO
+
406 
+
407 # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
+
408 # are shown inside the group in which they are included (e.g. using \ingroup)
+
409 # instead of on a separate page (for HTML and Man pages) or section (for LaTeX
+
410 # and RTF).
+
411 #
+
412 # Note that this feature does not work in combination with
+
413 # SEPARATE_MEMBER_PAGES.
+
414 # The default value is: NO.
+
415 
+
416 INLINE_GROUPED_CLASSES = NO
+
417 
+
418 # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
+
419 # with only public data fields or simple typedef fields will be shown inline in
+
420 # the documentation of the scope in which they are defined (i.e. file,
+
421 # namespace, or group documentation), provided this scope is documented. If set
+
422 # to NO, structs, classes, and unions are shown on a separate page (for HTML and
+
423 # Man pages) or section (for LaTeX and RTF).
+
424 # The default value is: NO.
+
425 
+
426 INLINE_SIMPLE_STRUCTS = NO
+
427 
+
428 # When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
+
429 # enum is documented as struct, union, or enum with the name of the typedef. So
+
430 # typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+
431 # with name TypeT. When disabled the typedef will appear as a member of a file,
+
432 # namespace, or class. And the struct will be named TypeS. This can typically be
+
433 # useful for C code in case the coding convention dictates that all compound
+
434 # types are typedef'ed and only the typedef is referenced, never the tag name.
+
435 # The default value is: NO.
+
436 
+
437 TYPEDEF_HIDES_STRUCT = NO
+
438 
+
439 # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
+
440 # cache is used to resolve symbols given their name and scope. Since this can be
+
441 # an expensive process and often the same symbol appears multiple times in the
+
442 # code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
+
443 # doxygen will become slower. If the cache is too large, memory is wasted. The
+
444 # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
+
445 # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
+
446 # symbols. At the end of a run doxygen will report the cache usage and suggest
+
447 # the optimal cache size from a speed point of view.
+
448 # Minimum value: 0, maximum value: 9, default value: 0.
+
449 
+
450 LOOKUP_CACHE_SIZE = 0
+
451 
+
452 #---------------------------------------------------------------------------
+
453 # Build related configuration options
+
454 #---------------------------------------------------------------------------
+
455 
+
456 # If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
+
457 # documentation are documented, even if no documentation was available. Private
+
458 # class members and static file members will be hidden unless the
+
459 # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
+
460 # Note: This will also disable the warnings about undocumented members that are
+
461 # normally produced when WARNINGS is set to YES.
+
462 # The default value is: NO.
+
463 
+
464 EXTRACT_ALL = NO
+
465 
+
466 # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
+
467 # be included in the documentation.
+
468 # The default value is: NO.
+
469 
+
470 EXTRACT_PRIVATE = NO
+
471 
+
472 # If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
+
473 # methods of a class will be included in the documentation.
+
474 # The default value is: NO.
+
475 
+
476 EXTRACT_PRIV_VIRTUAL = NO
+
477 
+
478 # If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
+
479 # scope will be included in the documentation.
+
480 # The default value is: NO.
+
481 
+
482 EXTRACT_PACKAGE = NO
+
483 
+
484 # If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
+
485 # included in the documentation.
+
486 # The default value is: NO.
+
487 
+
488 EXTRACT_STATIC = YES
+
489 
+
490 # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
+
491 # locally in source files will be included in the documentation. If set to NO,
+
492 # only classes defined in header files are included. Does not have any effect
+
493 # for Java sources.
+
494 # The default value is: YES.
+
495 
+
496 EXTRACT_LOCAL_CLASSES = NO
+
497 
+
498 # This flag is only useful for Objective-C code. If set to YES, local methods,
+
499 # which are defined in the implementation section but not in the interface are
+
500 # included in the documentation. If set to NO, only methods in the interface are
+
501 # included.
+
502 # The default value is: NO.
+
503 
+
504 EXTRACT_LOCAL_METHODS = NO
+
505 
+
506 # If this flag is set to YES, the members of anonymous namespaces will be
+
507 # extracted and appear in the documentation as a namespace called
+
508 # 'anonymous_namespace{file}', where file will be replaced with the base name of
+
509 # the file that contains the anonymous namespace. By default anonymous namespace
+
510 # are hidden.
+
511 # The default value is: NO.
+
512 
+
513 EXTRACT_ANON_NSPACES = NO
+
514 
+
515 # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
+
516 # undocumented members inside documented classes or files. If set to NO these
+
517 # members will be included in the various overviews, but no documentation
+
518 # section is generated. This option has no effect if EXTRACT_ALL is enabled.
+
519 # The default value is: NO.
+
520 
+
521 HIDE_UNDOC_MEMBERS = YES
+
522 
+
523 # If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
+
524 # undocumented classes that are normally visible in the class hierarchy. If set
+
525 # to NO, these classes will be included in the various overviews. This option
+
526 # has no effect if EXTRACT_ALL is enabled.
+
527 # The default value is: NO.
+
528 
+
529 HIDE_UNDOC_CLASSES = YES
+
530 
+
531 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
+
532 # declarations. If set to NO, these declarations will be included in the
+
533 # documentation.
+
534 # The default value is: NO.
+
535 
+
536 HIDE_FRIEND_COMPOUNDS = YES
+
537 
+
538 # If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
+
539 # documentation blocks found inside the body of a function. If set to NO, these
+
540 # blocks will be appended to the function's detailed documentation block.
+
541 # The default value is: NO.
+
542 
+
543 HIDE_IN_BODY_DOCS = YES
+
544 
+
545 # The INTERNAL_DOCS tag determines if documentation that is typed after a
+
546 # \internal command is included. If the tag is set to NO then the documentation
+
547 # will be excluded. Set it to YES to include the internal documentation.
+
548 # The default value is: NO.
+
549 
+
550 INTERNAL_DOCS = NO
+
551 
+
552 # If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
+
553 # names in lower-case letters. If set to YES, upper-case letters are also
+
554 # allowed. This is useful if you have classes or files whose names only differ
+
555 # in case and if your file system supports case sensitive file names. Windows
+
556 # (including Cygwin) ands Mac users are advised to set this option to NO.
+
557 # The default value is: system dependent.
+
558 
+
559 CASE_SENSE_NAMES = YES
+
560 
+
561 # If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
+
562 # their full class and namespace scopes in the documentation. If set to YES, the
+
563 # scope will be hidden.
+
564 # The default value is: NO.
+
565 
+
566 HIDE_SCOPE_NAMES = YES
+
567 
+
568 # If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
+
569 # append additional text to a page's title, such as Class Reference. If set to
+
570 # YES the compound reference will be hidden.
+
571 # The default value is: NO.
+
572 
+
573 HIDE_COMPOUND_REFERENCE= NO
+
574 
+
575 # If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
+
576 # the files that are included by a file in the documentation of that file.
+
577 # The default value is: YES.
+
578 
+
579 SHOW_INCLUDE_FILES = NO
+
580 
+
581 # If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
+
582 # grouped member an include statement to the documentation, telling the reader
+
583 # which file to include in order to use the member.
+
584 # The default value is: NO.
+
585 
+
586 SHOW_GROUPED_MEMB_INC = NO
+
587 
+
588 # If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
+
589 # files with double quotes in the documentation rather than with sharp brackets.
+
590 # The default value is: NO.
+
591 
+
592 FORCE_LOCAL_INCLUDES = NO
+
593 
+
594 # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
+
595 # documentation for inline members.
+
596 # The default value is: YES.
+
597 
+
598 INLINE_INFO = NO
+
599 
+
600 # If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
+
601 # (detailed) documentation of file and class members alphabetically by member
+
602 # name. If set to NO, the members will appear in declaration order.
+
603 # The default value is: YES.
+
604 
+
605 SORT_MEMBER_DOCS = YES
+
606 
+
607 # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
+
608 # descriptions of file, namespace and class members alphabetically by member
+
609 # name. If set to NO, the members will appear in declaration order. Note that
+
610 # this will also influence the order of the classes in the class list.
+
611 # The default value is: NO.
+
612 
+
613 SORT_BRIEF_DOCS = YES
+
614 
+
615 # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
+
616 # (brief and detailed) documentation of class members so that constructors and
+
617 # destructors are listed first. If set to NO the constructors will appear in the
+
618 # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
+
619 # Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
+
620 # member documentation.
+
621 # Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
+
622 # detailed member documentation.
+
623 # The default value is: NO.
+
624 
+
625 SORT_MEMBERS_CTORS_1ST = NO
+
626 
+
627 # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
+
628 # of group names into alphabetical order. If set to NO the group names will
+
629 # appear in their defined order.
+
630 # The default value is: NO.
+
631 
+
632 SORT_GROUP_NAMES = NO
+
633 
+
634 # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
+
635 # fully-qualified names, including namespaces. If set to NO, the class list will
+
636 # be sorted only by class name, not including the namespace part.
+
637 # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+
638 # Note: This option applies only to the class list, not to the alphabetical
+
639 # list.
+
640 # The default value is: NO.
+
641 
+
642 SORT_BY_SCOPE_NAME = YES
+
643 
+
644 # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
+
645 # type resolution of all parameters of a function it will reject a match between
+
646 # the prototype and the implementation of a member function even if there is
+
647 # only one candidate or it is obvious which candidate to choose by doing a
+
648 # simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
+
649 # accept a match between prototype and implementation in such cases.
+
650 # The default value is: NO.
+
651 
+
652 STRICT_PROTO_MATCHING = NO
+
653 
+
654 # The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
+
655 # list. This list is created by putting \todo commands in the documentation.
+
656 # The default value is: YES.
+
657 
+
658 GENERATE_TODOLIST = YES
+
659 
+
660 # The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
+
661 # list. This list is created by putting \test commands in the documentation.
+
662 # The default value is: YES.
+
663 
+
664 GENERATE_TESTLIST = YES
+
665 
+
666 # The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
+
667 # list. This list is created by putting \bug commands in the documentation.
+
668 # The default value is: YES.
+
669 
+
670 GENERATE_BUGLIST = YES
+
671 
+
672 # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
+
673 # the deprecated list. This list is created by putting \deprecated commands in
+
674 # the documentation.
+
675 # The default value is: YES.
+
676 
+
677 GENERATE_DEPRECATEDLIST= YES
+
678 
+
679 # The ENABLED_SECTIONS tag can be used to enable conditional documentation
+
680 # sections, marked by \if <section_label> ... \endif and \cond <section_label>
+
681 # ... \endcond blocks.
+
682 
+
683 ENABLED_SECTIONS =
+
684 
+
685 # The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
+
686 # initial value of a variable or macro / define can have for it to appear in the
+
687 # documentation. If the initializer consists of more lines than specified here
+
688 # it will be hidden. Use a value of 0 to hide initializers completely. The
+
689 # appearance of the value of individual variables and macros / defines can be
+
690 # controlled using \showinitializer or \hideinitializer command in the
+
691 # documentation regardless of this setting.
+
692 # Minimum value: 0, maximum value: 10000, default value: 30.
+
693 
+
694 MAX_INITIALIZER_LINES = 30
+
695 
+
696 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
+
697 # the bottom of the documentation of classes and structs. If set to YES, the
+
698 # list will mention the files that were used to generate the documentation.
+
699 # The default value is: YES.
+
700 
+
701 SHOW_USED_FILES = NO
+
702 
+
703 # Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
+
704 # will remove the Files entry from the Quick Index and from the Folder Tree View
+
705 # (if specified).
+
706 # The default value is: YES.
+
707 
+
708 SHOW_FILES = YES
+
709 
+
710 # Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
+
711 # page. This will remove the Namespaces entry from the Quick Index and from the
+
712 # Folder Tree View (if specified).
+
713 # The default value is: YES.
+
714 
+
715 SHOW_NAMESPACES = YES
+
716 
+
717 # The FILE_VERSION_FILTER tag can be used to specify a program or script that
+
718 # doxygen should invoke to get the current version for each file (typically from
+
719 # the version control system). Doxygen will invoke the program by executing (via
+
720 # popen()) the command command input-file, where command is the value of the
+
721 # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
+
722 # by doxygen. Whatever the program writes to standard output is used as the file
+
723 # version. For an example see the documentation.
+
724 
+
725 FILE_VERSION_FILTER =
+
726 
+
727 # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+
728 # by doxygen. The layout file controls the global structure of the generated
+
729 # output files in an output format independent way. To create the layout file
+
730 # that represents doxygen's defaults, run doxygen with the -l option. You can
+
731 # optionally specify a file name after the option, if omitted DoxygenLayout.xml
+
732 # will be used as the name of the layout file.
+
733 #
+
734 # Note that if you run doxygen from a directory containing a file called
+
735 # DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
+
736 # tag is left empty.
+
737 
+
738 LAYOUT_FILE =
+
739 
+
740 # The CITE_BIB_FILES tag can be used to specify one or more bib files containing
+
741 # the reference definitions. This must be a list of .bib files. The .bib
+
742 # extension is automatically appended if omitted. This requires the bibtex tool
+
743 # to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
+
744 # For LaTeX the style of the bibliography can be controlled using
+
745 # LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
+
746 # search path. See also \cite for info how to create references.
+
747 
+
748 CITE_BIB_FILES =
+
749 
+
750 #---------------------------------------------------------------------------
+
751 # Configuration options related to warning and progress messages
+
752 #---------------------------------------------------------------------------
+
753 
+
754 # The QUIET tag can be used to turn on/off the messages that are generated to
+
755 # standard output by doxygen. If QUIET is set to YES this implies that the
+
756 # messages are off.
+
757 # The default value is: NO.
+
758 
+
759 QUIET = NO
+
760 
+
761 # The WARNINGS tag can be used to turn on/off the warning messages that are
+
762 # generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
+
763 # this implies that the warnings are on.
+
764 #
+
765 # Tip: Turn warnings on while writing the documentation.
+
766 # The default value is: YES.
+
767 
+
768 WARNINGS = YES
+
769 
+
770 # If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
+
771 # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
+
772 # will automatically be disabled.
+
773 # The default value is: YES.
+
774 
+
775 WARN_IF_UNDOCUMENTED = YES
+
776 
+
777 # If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
+
778 # potential errors in the documentation, such as not documenting some parameters
+
779 # in a documented function, or documenting parameters that don't exist or using
+
780 # markup commands wrongly.
+
781 # The default value is: YES.
+
782 
+
783 WARN_IF_DOC_ERROR = YES
+
784 
+
785 # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
+
786 # are documented, but have no documentation for their parameters or return
+
787 # value. If set to NO, doxygen will only warn about wrong or incomplete
+
788 # parameter documentation, but not about the absence of documentation. If
+
789 # EXTRACT_ALL is set to YES then this flag will automatically be disabled.
+
790 # The default value is: NO.
+
791 
+
792 WARN_NO_PARAMDOC = NO
+
793 
+
794 # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
+
795 # a warning is encountered.
+
796 # The default value is: NO.
+
797 
+
798 WARN_AS_ERROR = NO
+
799 
+
800 # The WARN_FORMAT tag determines the format of the warning messages that doxygen
+
801 # can produce. The string should contain the $file, $line, and $text tags, which
+
802 # will be replaced by the file and line number from which the warning originated
+
803 # and the warning text. Optionally the format may contain $version, which will
+
804 # be replaced by the version of the file (if it could be obtained via
+
805 # FILE_VERSION_FILTER)
+
806 # The default value is: $file:$line: $text.
+
807 
+
808 WARN_FORMAT = "$file:$line: $text"
+
809 
+
810 # The WARN_LOGFILE tag can be used to specify a file to which warning and error
+
811 # messages should be written. If left blank the output is written to standard
+
812 # error (stderr).
+
813 
+
814 WARN_LOGFILE =
+
815 
+
816 #---------------------------------------------------------------------------
+
817 # Configuration options related to the input files
+
818 #---------------------------------------------------------------------------
+
819 
+
820 # The INPUT tag is used to specify the files and/or directories that contain
+
821 # documented source files. You may enter file names like myfile.cpp or
+
822 # directories like /usr/src/myproject. Separate the files or directories with
+
823 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
+
824 # Note: If this tag is empty the current directory is searched.
+
825 
+
826 INPUT = ../glm \
+
827  .
+
828 
+
829 # This tag can be used to specify the character encoding of the source files
+
830 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
+
831 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv
+
832 # documentation (see: https://www.gnu.org/software/libiconv/) for the list of
+
833 # possible encodings.
+
834 # The default value is: UTF-8.
+
835 
+
836 INPUT_ENCODING = UTF-8
+
837 
+
838 # If the value of the INPUT tag contains directories, you can use the
+
839 # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
+
840 # *.h) to filter out the source-files in the directories.
+
841 #
+
842 # Note that for custom extensions or not directly supported extensions you also
+
843 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
+
844 # read by doxygen.
+
845 #
+
846 # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
+
847 # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
+
848 # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
+
849 # *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),
+
850 # *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen
+
851 # C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd,
+
852 # *.vhdl, *.ucf, *.qsf and *.ice.
+
853 
+
854 FILE_PATTERNS = *.hpp \
+
855  *.doxy
+
856 
+
857 # The RECURSIVE tag can be used to specify whether or not subdirectories should
+
858 # be searched for input files as well.
+
859 # The default value is: NO.
+
860 
+
861 RECURSIVE = YES
+
862 
+
863 # The EXCLUDE tag can be used to specify files and/or directories that should be
+
864 # excluded from the INPUT source files. This way you can easily exclude a
+
865 # subdirectory from a directory tree whose root is specified with the INPUT tag.
+
866 #
+
867 # Note that relative paths are relative to the directory from which doxygen is
+
868 # run.
+
869 
+
870 EXCLUDE =
+
871 
+
872 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+
873 # directories that are symbolic links (a Unix file system feature) are excluded
+
874 # from the input.
+
875 # The default value is: NO.
+
876 
+
877 EXCLUDE_SYMLINKS = NO
+
878 
+
879 # If the value of the INPUT tag contains directories, you can use the
+
880 # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+
881 # certain files from those directories.
+
882 #
+
883 # Note that the wildcards are matched against the file with absolute path, so to
+
884 # exclude all test directories for example use the pattern */test/*
+
885 
+
886 EXCLUDE_PATTERNS =
+
887 
+
888 # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+
889 # (namespaces, classes, functions, etc.) that should be excluded from the
+
890 # output. The symbol name can be a fully qualified name, a word, or if the
+
891 # wildcard * is used, a substring. Examples: ANamespace, AClass,
+
892 # AClass::ANamespace, ANamespace::*Test
+
893 #
+
894 # Note that the wildcards are matched against the file with absolute path, so to
+
895 # exclude all test directories use the pattern */test/*
+
896 
+
897 EXCLUDE_SYMBOLS =
+
898 
+
899 # The EXAMPLE_PATH tag can be used to specify one or more files or directories
+
900 # that contain example code fragments that are included (see the \include
+
901 # command).
+
902 
+
903 EXAMPLE_PATH =
+
904 
+
905 # If the value of the EXAMPLE_PATH tag contains directories, you can use the
+
906 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
+
907 # *.h) to filter out the source-files in the directories. If left blank all
+
908 # files are included.
+
909 
+
910 EXAMPLE_PATTERNS = *
+
911 
+
912 # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+
913 # searched for input files to be used with the \include or \dontinclude commands
+
914 # irrespective of the value of the RECURSIVE tag.
+
915 # The default value is: NO.
+
916 
+
917 EXAMPLE_RECURSIVE = NO
+
918 
+
919 # The IMAGE_PATH tag can be used to specify one or more files or directories
+
920 # that contain images that are to be included in the documentation (see the
+
921 # \image command).
+
922 
+
923 IMAGE_PATH =
+
924 
+
925 # The INPUT_FILTER tag can be used to specify a program that doxygen should
+
926 # invoke to filter for each input file. Doxygen will invoke the filter program
+
927 # by executing (via popen()) the command:
+
928 #
+
929 # <filter> <input-file>
+
930 #
+
931 # where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
+
932 # name of an input file. Doxygen will then use the output that the filter
+
933 # program writes to standard output. If FILTER_PATTERNS is specified, this tag
+
934 # will be ignored.
+
935 #
+
936 # Note that the filter must not add or remove lines; it is applied before the
+
937 # code is scanned, but not when the output code is generated. If lines are added
+
938 # or removed, the anchors will not be placed correctly.
+
939 #
+
940 # Note that for custom extensions or not directly supported extensions you also
+
941 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
+
942 # properly processed by doxygen.
+
943 
+
944 INPUT_FILTER =
+
945 
+
946 # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+
947 # basis. Doxygen will compare the file name with each pattern and apply the
+
948 # filter if there is a match. The filters are a list of the form: pattern=filter
+
949 # (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
+
950 # filters are used. If the FILTER_PATTERNS tag is empty or if none of the
+
951 # patterns match the file name, INPUT_FILTER is applied.
+
952 #
+
953 # Note that for custom extensions or not directly supported extensions you also
+
954 # need to set EXTENSION_MAPPING for the extension otherwise the files are not
+
955 # properly processed by doxygen.
+
956 
+
957 FILTER_PATTERNS =
+
958 
+
959 # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+
960 # INPUT_FILTER) will also be used to filter the input files that are used for
+
961 # producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
962 # The default value is: NO.
+
963 
+
964 FILTER_SOURCE_FILES = NO
+
965 
+
966 # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+
967 # pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
+
968 # it is also possible to disable source filtering for a specific pattern using
+
969 # *.ext= (so without naming a filter).
+
970 # This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
+
971 
+
972 FILTER_SOURCE_PATTERNS =
+
973 
+
974 # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
+
975 # is part of the input, its contents will be placed on the main page
+
976 # (index.html). This can be useful if you have a project on for instance GitHub
+
977 # and want to reuse the introduction page also for the doxygen output.
+
978 
+
979 USE_MDFILE_AS_MAINPAGE =
+
980 
+
981 #---------------------------------------------------------------------------
+
982 # Configuration options related to source browsing
+
983 #---------------------------------------------------------------------------
+
984 
+
985 # If the SOURCE_BROWSER tag is set to YES then a list of source files will be
+
986 # generated. Documented entities will be cross-referenced with these sources.
+
987 #
+
988 # Note: To get rid of all source code in the generated output, make sure that
+
989 # also VERBATIM_HEADERS is set to NO.
+
990 # The default value is: NO.
+
991 
+
992 SOURCE_BROWSER = YES
+
993 
+
994 # Setting the INLINE_SOURCES tag to YES will include the body of functions,
+
995 # classes and enums directly into the documentation.
+
996 # The default value is: NO.
+
997 
+
998 INLINE_SOURCES = NO
+
999 
+
1000 # Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
+
1001 # special comment blocks from generated source code fragments. Normal C, C++ and
+
1002 # Fortran comments will always remain visible.
+
1003 # The default value is: YES.
+
1004 
+
1005 STRIP_CODE_COMMENTS = YES
+
1006 
+
1007 # If the REFERENCED_BY_RELATION tag is set to YES then for each documented
+
1008 # entity all documented functions referencing it will be listed.
+
1009 # The default value is: NO.
+
1010 
+
1011 REFERENCED_BY_RELATION = YES
+
1012 
+
1013 # If the REFERENCES_RELATION tag is set to YES then for each documented function
+
1014 # all documented entities called/used by that function will be listed.
+
1015 # The default value is: NO.
+
1016 
+
1017 REFERENCES_RELATION = YES
+
1018 
+
1019 # If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
+
1020 # to YES then the hyperlinks from functions in REFERENCES_RELATION and
+
1021 # REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
+
1022 # link to the documentation.
+
1023 # The default value is: YES.
+
1024 
+
1025 REFERENCES_LINK_SOURCE = YES
+
1026 
+
1027 # If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
+
1028 # source code will show a tooltip with additional information such as prototype,
+
1029 # brief description and links to the definition and documentation. Since this
+
1030 # will make the HTML file larger and loading of large files a bit slower, you
+
1031 # can opt to disable this feature.
+
1032 # The default value is: YES.
+
1033 # This tag requires that the tag SOURCE_BROWSER is set to YES.
+
1034 
+
1035 SOURCE_TOOLTIPS = YES
+
1036 
+
1037 # If the USE_HTAGS tag is set to YES then the references to source code will
+
1038 # point to the HTML generated by the htags(1) tool instead of doxygen built-in
+
1039 # source browser. The htags tool is part of GNU's global source tagging system
+
1040 # (see https://www.gnu.org/software/global/global.html). You will need version
+
1041 # 4.8.6 or higher.
+
1042 #
+
1043 # To use it do the following:
+
1044 # - Install the latest version of global
+
1045 # - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
+
1046 # - Make sure the INPUT points to the root of the source tree
+
1047 # - Run doxygen as normal
+
1048 #
+
1049 # Doxygen will invoke htags (and that will in turn invoke gtags), so these
+
1050 # tools must be available from the command line (i.e. in the search path).
+
1051 #
+
1052 # The result: instead of the source browser generated by doxygen, the links to
+
1053 # source code will now point to the output of htags.
+
1054 # The default value is: NO.
+
1055 # This tag requires that the tag SOURCE_BROWSER is set to YES.
+
1056 
+
1057 USE_HTAGS = NO
+
1058 
+
1059 # If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
+
1060 # verbatim copy of the header file for each class for which an include is
+
1061 # specified. Set to NO to disable this.
+
1062 # See also: Section \class.
+
1063 # The default value is: YES.
+
1064 
+
1065 VERBATIM_HEADERS = YES
+
1066 
+
1067 # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
+
1068 # clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
+
1069 # cost of reduced performance. This can be particularly helpful with template
+
1070 # rich C++ code for which doxygen's built-in parser lacks the necessary type
+
1071 # information.
+
1072 # Note: The availability of this option depends on whether or not doxygen was
+
1073 # generated with the -Duse_libclang=ON option for CMake.
+
1074 # The default value is: NO.
+
1075 
+
1076 CLANG_ASSISTED_PARSING = NO
+
1077 
+
1078 # If clang assisted parsing is enabled you can provide the compiler with command
+
1079 # line options that you would normally use when invoking the compiler. Note that
+
1080 # the include paths will already be set by doxygen for the files and directories
+
1081 # specified with INPUT and INCLUDE_PATH.
+
1082 # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
+
1083 
+
1084 CLANG_OPTIONS =
+
1085 
+
1086 # If clang assisted parsing is enabled you can provide the clang parser with the
+
1087 # path to the compilation database (see:
+
1088 # http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files
+
1089 # were built. This is equivalent to specifying the "-p" option to a clang tool,
+
1090 # such as clang-check. These options will then be passed to the parser.
+
1091 # Note: The availability of this option depends on whether or not doxygen was
+
1092 # generated with the -Duse_libclang=ON option for CMake.
+
1093 
+
1094 CLANG_DATABASE_PATH =
+
1095 
+
1096 #---------------------------------------------------------------------------
+
1097 # Configuration options related to the alphabetical class index
+
1098 #---------------------------------------------------------------------------
+
1099 
+
1100 # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
+
1101 # compounds will be generated. Enable this if the project contains a lot of
+
1102 # classes, structs, unions or interfaces.
+
1103 # The default value is: YES.
+
1104 
+
1105 ALPHABETICAL_INDEX = NO
+
1106 
+
1107 # The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
+
1108 # which the alphabetical index list will be split.
+
1109 # Minimum value: 1, maximum value: 20, default value: 5.
+
1110 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
1111 
+
1112 COLS_IN_ALPHA_INDEX = 5
+
1113 
+
1114 # In case all classes in a project start with a common prefix, all classes will
+
1115 # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
+
1116 # can be used to specify a prefix (or a list of prefixes) that should be ignored
+
1117 # while generating the index headers.
+
1118 # This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
+
1119 
+
1120 IGNORE_PREFIX =
+
1121 
+
1122 #---------------------------------------------------------------------------
+
1123 # Configuration options related to the HTML output
+
1124 #---------------------------------------------------------------------------
+
1125 
+
1126 # If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
+
1127 # The default value is: YES.
+
1128 
+
1129 GENERATE_HTML = YES
+
1130 
+
1131 # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
+
1132 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1133 # it.
+
1134 # The default directory is: html.
+
1135 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1136 
+
1137 HTML_OUTPUT = html
+
1138 
+
1139 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
+
1140 # generated HTML page (for example: .htm, .php, .asp).
+
1141 # The default value is: .html.
+
1142 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1143 
+
1144 HTML_FILE_EXTENSION = .html
+
1145 
+
1146 # The HTML_HEADER tag can be used to specify a user-defined HTML header file for
+
1147 # each generated HTML page. If the tag is left blank doxygen will generate a
+
1148 # standard header.
+
1149 #
+
1150 # To get valid HTML the header file that includes any scripts and style sheets
+
1151 # that doxygen needs, which is dependent on the configuration options used (e.g.
+
1152 # the setting GENERATE_TREEVIEW). It is highly recommended to start with a
+
1153 # default header using
+
1154 # doxygen -w html new_header.html new_footer.html new_stylesheet.css
+
1155 # YourConfigFile
+
1156 # and then modify the file new_header.html. See also section "Doxygen usage"
+
1157 # for information on how to generate the default header that doxygen normally
+
1158 # uses.
+
1159 # Note: The header is subject to change so you typically have to regenerate the
+
1160 # default header when upgrading to a newer version of doxygen. For a description
+
1161 # of the possible markers and block names see the documentation.
+
1162 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1163 
+
1164 HTML_HEADER =
+
1165 
+
1166 # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
+
1167 # generated HTML page. If the tag is left blank doxygen will generate a standard
+
1168 # footer. See HTML_HEADER for more information on how to generate a default
+
1169 # footer and what special commands can be used inside the footer. See also
+
1170 # section "Doxygen usage" for information on how to generate the default footer
+
1171 # that doxygen normally uses.
+
1172 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1173 
+
1174 HTML_FOOTER =
+
1175 
+
1176 # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
+
1177 # sheet that is used by each HTML page. It can be used to fine-tune the look of
+
1178 # the HTML output. If left blank doxygen will generate a default style sheet.
+
1179 # See also section "Doxygen usage" for information on how to generate the style
+
1180 # sheet that doxygen normally uses.
+
1181 # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
+
1182 # it is more robust and this tag (HTML_STYLESHEET) will in the future become
+
1183 # obsolete.
+
1184 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1185 
+
1186 HTML_STYLESHEET =
+
1187 
+
1188 # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+
1189 # cascading style sheets that are included after the standard style sheets
+
1190 # created by doxygen. Using this option one can overrule certain style aspects.
+
1191 # This is preferred over using HTML_STYLESHEET since it does not replace the
+
1192 # standard style sheet and is therefore more robust against future updates.
+
1193 # Doxygen will copy the style sheet files to the output directory.
+
1194 # Note: The order of the extra style sheet files is of importance (e.g. the last
+
1195 # style sheet in the list overrules the setting of the previous ones in the
+
1196 # list). For an example see the documentation.
+
1197 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1198 
+
1199 HTML_EXTRA_STYLESHEET =
+
1200 
+
1201 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+
1202 # other source files which should be copied to the HTML output directory. Note
+
1203 # that these files will be copied to the base HTML output directory. Use the
+
1204 # $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+
1205 # files. In the HTML_STYLESHEET file, use the file name only. Also note that the
+
1206 # files will be copied as-is; there are no commands or markers available.
+
1207 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1208 
+
1209 HTML_EXTRA_FILES =
+
1210 
+
1211 # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
+
1212 # will adjust the colors in the style sheet and background images according to
+
1213 # this color. Hue is specified as an angle on a colorwheel, see
+
1214 # https://en.wikipedia.org/wiki/Hue for more information. For instance the value
+
1215 # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
+
1216 # purple, and 360 is red again.
+
1217 # Minimum value: 0, maximum value: 359, default value: 220.
+
1218 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1219 
+
1220 HTML_COLORSTYLE_HUE = 220
+
1221 
+
1222 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
+
1223 # in the HTML output. For a value of 0 the output will use grayscales only. A
+
1224 # value of 255 will produce the most vivid colors.
+
1225 # Minimum value: 0, maximum value: 255, default value: 100.
+
1226 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1227 
+
1228 HTML_COLORSTYLE_SAT = 100
+
1229 
+
1230 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
+
1231 # luminance component of the colors in the HTML output. Values below 100
+
1232 # gradually make the output lighter, whereas values above 100 make the output
+
1233 # darker. The value divided by 100 is the actual gamma applied, so 80 represents
+
1234 # a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
+
1235 # change the gamma.
+
1236 # Minimum value: 40, maximum value: 240, default value: 80.
+
1237 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1238 
+
1239 HTML_COLORSTYLE_GAMMA = 80
+
1240 
+
1241 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+
1242 # page will contain the date and time when the page was generated. Setting this
+
1243 # to YES can help to show when doxygen was last run and thus if the
+
1244 # documentation is up to date.
+
1245 # The default value is: NO.
+
1246 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1247 
+
1248 HTML_TIMESTAMP = NO
+
1249 
+
1250 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
+
1251 # documentation will contain a main index with vertical navigation menus that
+
1252 # are dynamically created via JavaScript. If disabled, the navigation index will
+
1253 # consists of multiple levels of tabs that are statically embedded in every HTML
+
1254 # page. Disable this option to support browsers that do not have JavaScript,
+
1255 # like the Qt help browser.
+
1256 # The default value is: YES.
+
1257 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1258 
+
1259 HTML_DYNAMIC_MENUS = YES
+
1260 
+
1261 # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+
1262 # documentation will contain sections that can be hidden and shown after the
+
1263 # page has loaded.
+
1264 # The default value is: NO.
+
1265 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1266 
+
1267 HTML_DYNAMIC_SECTIONS = NO
+
1268 
+
1269 # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
+
1270 # shown in the various tree structured indices initially; the user can expand
+
1271 # and collapse entries dynamically later on. Doxygen will expand the tree to
+
1272 # such a level that at most the specified number of entries are visible (unless
+
1273 # a fully collapsed tree already exceeds this amount). So setting the number of
+
1274 # entries 1 will produce a full collapsed tree by default. 0 is a special value
+
1275 # representing an infinite number of entries and will result in a full expanded
+
1276 # tree by default.
+
1277 # Minimum value: 0, maximum value: 9999, default value: 100.
+
1278 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1279 
+
1280 HTML_INDEX_NUM_ENTRIES = 100
+
1281 
+
1282 # If the GENERATE_DOCSET tag is set to YES, additional index files will be
+
1283 # generated that can be used as input for Apple's Xcode 3 integrated development
+
1284 # environment (see: https://developer.apple.com/xcode/), introduced with OSX
+
1285 # 10.5 (Leopard). To create a documentation set, doxygen will generate a
+
1286 # Makefile in the HTML output directory. Running make will produce the docset in
+
1287 # that directory and running make install will install the docset in
+
1288 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
+
1289 # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
+
1290 # genXcode/_index.html for more information.
+
1291 # The default value is: NO.
+
1292 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1293 
+
1294 GENERATE_DOCSET = NO
+
1295 
+
1296 # This tag determines the name of the docset feed. A documentation feed provides
+
1297 # an umbrella under which multiple documentation sets from a single provider
+
1298 # (such as a company or product suite) can be grouped.
+
1299 # The default value is: Doxygen generated docs.
+
1300 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1301 
+
1302 DOCSET_FEEDNAME = "Doxygen generated docs"
+
1303 
+
1304 # This tag specifies a string that should uniquely identify the documentation
+
1305 # set bundle. This should be a reverse domain-name style string, e.g.
+
1306 # com.mycompany.MyDocSet. Doxygen will append .docset to the name.
+
1307 # The default value is: org.doxygen.Project.
+
1308 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1309 
+
1310 DOCSET_BUNDLE_ID = org.doxygen.Project
+
1311 
+
1312 # The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
+
1313 # the documentation publisher. This should be a reverse domain-name style
+
1314 # string, e.g. com.mycompany.MyDocSet.documentation.
+
1315 # The default value is: org.doxygen.Publisher.
+
1316 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1317 
+
1318 DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
1319 
+
1320 # The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
+
1321 # The default value is: Publisher.
+
1322 # This tag requires that the tag GENERATE_DOCSET is set to YES.
+
1323 
+
1324 DOCSET_PUBLISHER_NAME = Publisher
+
1325 
+
1326 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
+
1327 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The
+
1328 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
+
1329 # (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on
+
1330 # Windows.
+
1331 #
+
1332 # The HTML Help Workshop contains a compiler that can convert all HTML output
+
1333 # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
+
1334 # files are now used as the Windows 98 help format, and will replace the old
+
1335 # Windows help format (.hlp) on all Windows platforms in the future. Compressed
+
1336 # HTML files also contain an index, a table of contents, and you can search for
+
1337 # words in the documentation. The HTML workshop also contains a viewer for
+
1338 # compressed HTML files.
+
1339 # The default value is: NO.
+
1340 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1341 
+
1342 GENERATE_HTMLHELP = NO
+
1343 
+
1344 # The CHM_FILE tag can be used to specify the file name of the resulting .chm
+
1345 # file. You can add a path in front of the file if the result should not be
+
1346 # written to the html output directory.
+
1347 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1348 
+
1349 CHM_FILE =
+
1350 
+
1351 # The HHC_LOCATION tag can be used to specify the location (absolute path
+
1352 # including file name) of the HTML help compiler (hhc.exe). If non-empty,
+
1353 # doxygen will try to run the HTML help compiler on the generated index.hhp.
+
1354 # The file has to be specified with full path.
+
1355 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1356 
+
1357 HHC_LOCATION =
+
1358 
+
1359 # The GENERATE_CHI flag controls if a separate .chi index file is generated
+
1360 # (YES) or that it should be included in the master .chm file (NO).
+
1361 # The default value is: NO.
+
1362 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1363 
+
1364 GENERATE_CHI = NO
+
1365 
+
1366 # The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
+
1367 # and project file content.
+
1368 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1369 
+
1370 CHM_INDEX_ENCODING =
+
1371 
+
1372 # The BINARY_TOC flag controls whether a binary table of contents is generated
+
1373 # (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
+
1374 # enables the Previous and Next buttons.
+
1375 # The default value is: NO.
+
1376 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1377 
+
1378 BINARY_TOC = NO
+
1379 
+
1380 # The TOC_EXPAND flag can be set to YES to add extra items for group members to
+
1381 # the table of contents of the HTML help documentation and to the tree view.
+
1382 # The default value is: NO.
+
1383 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
+
1384 
+
1385 TOC_EXPAND = NO
+
1386 
+
1387 # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+
1388 # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
+
1389 # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
+
1390 # (.qch) of the generated HTML documentation.
+
1391 # The default value is: NO.
+
1392 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1393 
+
1394 GENERATE_QHP = NO
+
1395 
+
1396 # If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
+
1397 # the file name of the resulting .qch file. The path specified is relative to
+
1398 # the HTML output folder.
+
1399 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1400 
+
1401 QCH_FILE =
+
1402 
+
1403 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
+
1404 # Project output. For more information please see Qt Help Project / Namespace
+
1405 # (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
+
1406 # The default value is: org.doxygen.Project.
+
1407 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1408 
+
1409 QHP_NAMESPACE = org.doxygen.Project
+
1410 
+
1411 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
+
1412 # Help Project output. For more information please see Qt Help Project / Virtual
+
1413 # Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
+
1414 # folders).
+
1415 # The default value is: doc.
+
1416 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1417 
+
1418 QHP_VIRTUAL_FOLDER = doc
+
1419 
+
1420 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
+
1421 # filter to add. For more information please see Qt Help Project / Custom
+
1422 # Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
+
1423 # filters).
+
1424 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1425 
+
1426 QHP_CUST_FILTER_NAME =
+
1427 
+
1428 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
+
1429 # custom filter to add. For more information please see Qt Help Project / Custom
+
1430 # Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
+
1431 # filters).
+
1432 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1433 
+
1434 QHP_CUST_FILTER_ATTRS =
+
1435 
+
1436 # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+
1437 # project's filter section matches. Qt Help Project / Filter Attributes (see:
+
1438 # https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
+
1439 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1440 
+
1441 QHP_SECT_FILTER_ATTRS =
+
1442 
+
1443 # The QHG_LOCATION tag can be used to specify the location of Qt's
+
1444 # qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
+
1445 # generated .qhp file.
+
1446 # This tag requires that the tag GENERATE_QHP is set to YES.
+
1447 
+
1448 QHG_LOCATION =
+
1449 
+
1450 # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
+
1451 # generated, together with the HTML files, they form an Eclipse help plugin. To
+
1452 # install this plugin and make it available under the help contents menu in
+
1453 # Eclipse, the contents of the directory containing the HTML and XML files needs
+
1454 # to be copied into the plugins directory of eclipse. The name of the directory
+
1455 # within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
+
1456 # After copying Eclipse needs to be restarted before the help appears.
+
1457 # The default value is: NO.
+
1458 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1459 
+
1460 GENERATE_ECLIPSEHELP = NO
+
1461 
+
1462 # A unique identifier for the Eclipse help plugin. When installing the plugin
+
1463 # the directory name containing the HTML and XML files should also have this
+
1464 # name. Each documentation set should have its own identifier.
+
1465 # The default value is: org.doxygen.Project.
+
1466 # This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
+
1467 
+
1468 ECLIPSE_DOC_ID = org.doxygen.Project
+
1469 
+
1470 # If you want full control over the layout of the generated HTML pages it might
+
1471 # be necessary to disable the index and replace it with your own. The
+
1472 # DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
+
1473 # of each HTML page. A value of NO enables the index and the value YES disables
+
1474 # it. Since the tabs in the index contain the same information as the navigation
+
1475 # tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
+
1476 # The default value is: NO.
+
1477 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1478 
+
1479 DISABLE_INDEX = NO
+
1480 
+
1481 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+
1482 # structure should be generated to display hierarchical information. If the tag
+
1483 # value is set to YES, a side panel will be generated containing a tree-like
+
1484 # index structure (just like the one that is generated for HTML Help). For this
+
1485 # to work a browser that supports JavaScript, DHTML, CSS and frames is required
+
1486 # (i.e. any modern browser). Windows users are probably better off using the
+
1487 # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
+
1488 # further fine-tune the look of the index. As an example, the default style
+
1489 # sheet generated by doxygen has an example that shows how to put an image at
+
1490 # the root of the tree instead of the PROJECT_NAME. Since the tree basically has
+
1491 # the same information as the tab index, you could consider setting
+
1492 # DISABLE_INDEX to YES when enabling this option.
+
1493 # The default value is: NO.
+
1494 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1495 
+
1496 GENERATE_TREEVIEW = NO
+
1497 
+
1498 # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
+
1499 # doxygen will group on one line in the generated HTML documentation.
+
1500 #
+
1501 # Note that a value of 0 will completely suppress the enum values from appearing
+
1502 # in the overview section.
+
1503 # Minimum value: 0, maximum value: 20, default value: 4.
+
1504 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1505 
+
1506 ENUM_VALUES_PER_LINE = 4
+
1507 
+
1508 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
+
1509 # to set the initial width (in pixels) of the frame in which the tree is shown.
+
1510 # Minimum value: 0, maximum value: 1500, default value: 250.
+
1511 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1512 
+
1513 TREEVIEW_WIDTH = 250
+
1514 
+
1515 # If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
+
1516 # external symbols imported via tag files in a separate window.
+
1517 # The default value is: NO.
+
1518 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1519 
+
1520 EXT_LINKS_IN_WINDOW = NO
+
1521 
+
1522 # If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
+
1523 # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
+
1524 # https://inkscape.org) to generate formulas as SVG images instead of PNGs for
+
1525 # the HTML output. These images will generally look nicer at scaled resolutions.
+
1526 # Possible values are: png The default and svg Looks nicer but requires the
+
1527 # pdf2svg tool.
+
1528 # The default value is: png.
+
1529 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1530 
+
1531 HTML_FORMULA_FORMAT = png
+
1532 
+
1533 # Use this tag to change the font size of LaTeX formulas included as images in
+
1534 # the HTML documentation. When you change the font size after a successful
+
1535 # doxygen run you need to manually remove any form_*.png images from the HTML
+
1536 # output directory to force them to be regenerated.
+
1537 # Minimum value: 8, maximum value: 50, default value: 10.
+
1538 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1539 
+
1540 FORMULA_FONTSIZE = 10
+
1541 
+
1542 # Use the FORMULA_TRANSPARENT tag to determine whether or not the images
+
1543 # generated for formulas are transparent PNGs. Transparent PNGs are not
+
1544 # supported properly for IE 6.0, but are supported on all modern browsers.
+
1545 #
+
1546 # Note that when changing this option you need to delete any form_*.png files in
+
1547 # the HTML output directory before the changes have effect.
+
1548 # The default value is: YES.
+
1549 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1550 
+
1551 FORMULA_TRANSPARENT = YES
+
1552 
+
1553 # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
+
1554 # to create new LaTeX commands to be used in formulas as building blocks. See
+
1555 # the section "Including formulas" for details.
+
1556 
+
1557 FORMULA_MACROFILE =
+
1558 
+
1559 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
+
1560 # https://www.mathjax.org) which uses client side JavaScript for the rendering
+
1561 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
+
1562 # installed or if you want to formulas look prettier in the HTML output. When
+
1563 # enabled you may also need to install MathJax separately and configure the path
+
1564 # to it using the MATHJAX_RELPATH option.
+
1565 # The default value is: NO.
+
1566 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1567 
+
1568 USE_MATHJAX = NO
+
1569 
+
1570 # When MathJax is enabled you can set the default output format to be used for
+
1571 # the MathJax output. See the MathJax site (see:
+
1572 # http://docs.mathjax.org/en/latest/output.html) for more details.
+
1573 # Possible values are: HTML-CSS (which is slower, but has the best
+
1574 # compatibility), NativeMML (i.e. MathML) and SVG.
+
1575 # The default value is: HTML-CSS.
+
1576 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1577 
+
1578 MATHJAX_FORMAT = HTML-CSS
+
1579 
+
1580 # When MathJax is enabled you need to specify the location relative to the HTML
+
1581 # output directory using the MATHJAX_RELPATH option. The destination directory
+
1582 # should contain the MathJax.js script. For instance, if the mathjax directory
+
1583 # is located at the same level as the HTML output directory, then
+
1584 # MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
+
1585 # Content Delivery Network so you can quickly see the result without installing
+
1586 # MathJax. However, it is strongly recommended to install a local copy of
+
1587 # MathJax from https://www.mathjax.org before deployment.
+
1588 # The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.
+
1589 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1590 
+
1591 MATHJAX_RELPATH = http://www.mathjax.org/mathjax
+
1592 
+
1593 # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
+
1594 # extension names that should be enabled during MathJax rendering. For example
+
1595 # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
+
1596 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1597 
+
1598 MATHJAX_EXTENSIONS =
+
1599 
+
1600 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
+
1601 # of code that will be used on startup of the MathJax code. See the MathJax site
+
1602 # (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
+
1603 # example see the documentation.
+
1604 # This tag requires that the tag USE_MATHJAX is set to YES.
+
1605 
+
1606 MATHJAX_CODEFILE =
+
1607 
+
1608 # When the SEARCHENGINE tag is enabled doxygen will generate a search box for
+
1609 # the HTML output. The underlying search engine uses javascript and DHTML and
+
1610 # should work on any modern browser. Note that when using HTML help
+
1611 # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
+
1612 # there is already a search function so this one should typically be disabled.
+
1613 # For large projects the javascript based search engine can be slow, then
+
1614 # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
+
1615 # search using the keyboard; to jump to the search box use <access key> + S
+
1616 # (what the <access key> is depends on the OS and browser, but it is typically
+
1617 # <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
+
1618 # key> to jump into the search results window, the results can be navigated
+
1619 # using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
+
1620 # the search. The filter options can be selected when the cursor is inside the
+
1621 # search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
+
1622 # to select a filter and <Enter> or <escape> to activate or cancel the filter
+
1623 # option.
+
1624 # The default value is: YES.
+
1625 # This tag requires that the tag GENERATE_HTML is set to YES.
+
1626 
+
1627 SEARCHENGINE = YES
+
1628 
+
1629 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+
1630 # implemented using a web server instead of a web client using JavaScript. There
+
1631 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH
+
1632 # setting. When disabled, doxygen will generate a PHP script for searching and
+
1633 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
+
1634 # and searching needs to be provided by external tools. See the section
+
1635 # "External Indexing and Searching" for details.
+
1636 # The default value is: NO.
+
1637 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1638 
+
1639 SERVER_BASED_SEARCH = NO
+
1640 
+
1641 # When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
+
1642 # script for searching. Instead the search results are written to an XML file
+
1643 # which needs to be processed by an external indexer. Doxygen will invoke an
+
1644 # external search engine pointed to by the SEARCHENGINE_URL option to obtain the
+
1645 # search results.
+
1646 #
+
1647 # Doxygen ships with an example indexer (doxyindexer) and search engine
+
1648 # (doxysearch.cgi) which are based on the open source search engine library
+
1649 # Xapian (see: https://xapian.org/).
+
1650 #
+
1651 # See the section "External Indexing and Searching" for details.
+
1652 # The default value is: NO.
+
1653 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1654 
+
1655 EXTERNAL_SEARCH = NO
+
1656 
+
1657 # The SEARCHENGINE_URL should point to a search engine hosted by a web server
+
1658 # which will return the search results when EXTERNAL_SEARCH is enabled.
+
1659 #
+
1660 # Doxygen ships with an example indexer (doxyindexer) and search engine
+
1661 # (doxysearch.cgi) which are based on the open source search engine library
+
1662 # Xapian (see: https://xapian.org/). See the section "External Indexing and
+
1663 # Searching" for details.
+
1664 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1665 
+
1666 SEARCHENGINE_URL =
+
1667 
+
1668 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+
1669 # search data is written to a file for indexing by an external tool. With the
+
1670 # SEARCHDATA_FILE tag the name of this file can be specified.
+
1671 # The default file is: searchdata.xml.
+
1672 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1673 
+
1674 SEARCHDATA_FILE = searchdata.xml
+
1675 
+
1676 # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
+
1677 # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+
1678 # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+
1679 # projects and redirect the results back to the right project.
+
1680 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1681 
+
1682 EXTERNAL_SEARCH_ID =
+
1683 
+
1684 # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+
1685 # projects other than the one defined by this configuration file, but that are
+
1686 # all added to the same external search index. Each project needs to have a
+
1687 # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
+
1688 # to a relative location where the documentation can be found. The format is:
+
1689 # EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
+
1690 # This tag requires that the tag SEARCHENGINE is set to YES.
+
1691 
+
1692 EXTRA_SEARCH_MAPPINGS =
+
1693 
+
1694 #---------------------------------------------------------------------------
+
1695 # Configuration options related to the LaTeX output
+
1696 #---------------------------------------------------------------------------
+
1697 
+
1698 # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
+
1699 # The default value is: YES.
+
1700 
+
1701 GENERATE_LATEX = NO
+
1702 
+
1703 # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
+
1704 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1705 # it.
+
1706 # The default directory is: latex.
+
1707 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1708 
+
1709 LATEX_OUTPUT = latex
+
1710 
+
1711 # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+
1712 # invoked.
+
1713 #
+
1714 # Note that when not enabling USE_PDFLATEX the default is latex when enabling
+
1715 # USE_PDFLATEX the default is pdflatex and when in the later case latex is
+
1716 # chosen this is overwritten by pdflatex. For specific output languages the
+
1717 # default can have been set differently, this depends on the implementation of
+
1718 # the output language.
+
1719 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1720 
+
1721 LATEX_CMD_NAME = latex
+
1722 
+
1723 # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
+
1724 # index for LaTeX.
+
1725 # Note: This tag is used in the Makefile / make.bat.
+
1726 # See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
+
1727 # (.tex).
+
1728 # The default file is: makeindex.
+
1729 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1730 
+
1731 MAKEINDEX_CMD_NAME = makeindex
+
1732 
+
1733 # The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
+
1734 # generate index for LaTeX. In case there is no backslash (\‍) as first character
+
1735 # it will be automatically added in the LaTeX code.
+
1736 # Note: This tag is used in the generated output file (.tex).
+
1737 # See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
+
1738 # The default value is: makeindex.
+
1739 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1740 
+
1741 LATEX_MAKEINDEX_CMD = makeindex
+
1742 
+
1743 # If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
+
1744 # documents. This may be useful for small projects and may help to save some
+
1745 # trees in general.
+
1746 # The default value is: NO.
+
1747 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1748 
+
1749 COMPACT_LATEX = NO
+
1750 
+
1751 # The PAPER_TYPE tag can be used to set the paper type that is used by the
+
1752 # printer.
+
1753 # Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
+
1754 # 14 inches) and executive (7.25 x 10.5 inches).
+
1755 # The default value is: a4.
+
1756 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1757 
+
1758 PAPER_TYPE = a4
+
1759 
+
1760 # The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
+
1761 # that should be included in the LaTeX output. The package can be specified just
+
1762 # by its name or with the correct syntax as to be used with the LaTeX
+
1763 # \usepackage command. To get the times font for instance you can specify :
+
1764 # EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
+
1765 # To use the option intlimits with the amsmath package you can specify:
+
1766 # EXTRA_PACKAGES=[intlimits]{amsmath}
+
1767 # If left blank no extra packages will be included.
+
1768 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1769 
+
1770 EXTRA_PACKAGES =
+
1771 
+
1772 # The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
+
1773 # generated LaTeX document. The header should contain everything until the first
+
1774 # chapter. If it is left blank doxygen will generate a standard header. See
+
1775 # section "Doxygen usage" for information on how to let doxygen write the
+
1776 # default header to a separate file.
+
1777 #
+
1778 # Note: Only use a user-defined header if you know what you are doing! The
+
1779 # following commands have a special meaning inside the header: $title,
+
1780 # $datetime, $date, $doxygenversion, $projectname, $projectnumber,
+
1781 # $projectbrief, $projectlogo. Doxygen will replace $title with the empty
+
1782 # string, for the replacement values of the other commands the user is referred
+
1783 # to HTML_HEADER.
+
1784 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1785 
+
1786 LATEX_HEADER =
+
1787 
+
1788 # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
+
1789 # generated LaTeX document. The footer should contain everything after the last
+
1790 # chapter. If it is left blank doxygen will generate a standard footer. See
+
1791 # LATEX_HEADER for more information on how to generate a default footer and what
+
1792 # special commands can be used inside the footer.
+
1793 #
+
1794 # Note: Only use a user-defined footer if you know what you are doing!
+
1795 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1796 
+
1797 LATEX_FOOTER =
+
1798 
+
1799 # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
+
1800 # LaTeX style sheets that are included after the standard style sheets created
+
1801 # by doxygen. Using this option one can overrule certain style aspects. Doxygen
+
1802 # will copy the style sheet files to the output directory.
+
1803 # Note: The order of the extra style sheet files is of importance (e.g. the last
+
1804 # style sheet in the list overrules the setting of the previous ones in the
+
1805 # list).
+
1806 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1807 
+
1808 LATEX_EXTRA_STYLESHEET =
+
1809 
+
1810 # The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
+
1811 # other source files which should be copied to the LATEX_OUTPUT output
+
1812 # directory. Note that the files will be copied as-is; there are no commands or
+
1813 # markers available.
+
1814 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1815 
+
1816 LATEX_EXTRA_FILES =
+
1817 
+
1818 # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
+
1819 # prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
+
1820 # contain links (just like the HTML output) instead of page references. This
+
1821 # makes the output suitable for online browsing using a PDF viewer.
+
1822 # The default value is: YES.
+
1823 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1824 
+
1825 PDF_HYPERLINKS = NO
+
1826 
+
1827 # If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
+
1828 # the PDF file directly from the LaTeX files. Set this option to YES, to get a
+
1829 # higher quality PDF documentation.
+
1830 # The default value is: YES.
+
1831 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1832 
+
1833 USE_PDFLATEX = YES
+
1834 
+
1835 # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
+
1836 # command to the generated LaTeX files. This will instruct LaTeX to keep running
+
1837 # if errors occur, instead of asking the user for help. This option is also used
+
1838 # when generating formulas in HTML.
+
1839 # The default value is: NO.
+
1840 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1841 
+
1842 LATEX_BATCHMODE = NO
+
1843 
+
1844 # If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
+
1845 # index chapters (such as File Index, Compound Index, etc.) in the output.
+
1846 # The default value is: NO.
+
1847 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1848 
+
1849 LATEX_HIDE_INDICES = NO
+
1850 
+
1851 # If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
+
1852 # code with syntax highlighting in the LaTeX output.
+
1853 #
+
1854 # Note that which sources are shown also depends on other settings such as
+
1855 # SOURCE_BROWSER.
+
1856 # The default value is: NO.
+
1857 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1858 
+
1859 LATEX_SOURCE_CODE = NO
+
1860 
+
1861 # The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+
1862 # bibliography, e.g. plainnat, or ieeetr. See
+
1863 # https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
+
1864 # The default value is: plain.
+
1865 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1866 
+
1867 LATEX_BIB_STYLE = plain
+
1868 
+
1869 # If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
+
1870 # page will contain the date and time when the page was generated. Setting this
+
1871 # to NO can help when comparing the output of multiple runs.
+
1872 # The default value is: NO.
+
1873 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1874 
+
1875 LATEX_TIMESTAMP = NO
+
1876 
+
1877 # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
+
1878 # path from which the emoji images will be read. If a relative path is entered,
+
1879 # it will be relative to the LATEX_OUTPUT directory. If left blank the
+
1880 # LATEX_OUTPUT directory will be used.
+
1881 # This tag requires that the tag GENERATE_LATEX is set to YES.
+
1882 
+
1883 LATEX_EMOJI_DIRECTORY =
+
1884 
+
1885 #---------------------------------------------------------------------------
+
1886 # Configuration options related to the RTF output
+
1887 #---------------------------------------------------------------------------
+
1888 
+
1889 # If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
+
1890 # RTF output is optimized for Word 97 and may not look too pretty with other RTF
+
1891 # readers/editors.
+
1892 # The default value is: NO.
+
1893 
+
1894 GENERATE_RTF = NO
+
1895 
+
1896 # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
+
1897 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1898 # it.
+
1899 # The default directory is: rtf.
+
1900 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1901 
+
1902 RTF_OUTPUT = glm.rtf
+
1903 
+
1904 # If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
+
1905 # documents. This may be useful for small projects and may help to save some
+
1906 # trees in general.
+
1907 # The default value is: NO.
+
1908 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1909 
+
1910 COMPACT_RTF = NO
+
1911 
+
1912 # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
+
1913 # contain hyperlink fields. The RTF file will contain links (just like the HTML
+
1914 # output) instead of page references. This makes the output suitable for online
+
1915 # browsing using Word or some other Word compatible readers that support those
+
1916 # fields.
+
1917 #
+
1918 # Note: WordPad (write) and others do not support links.
+
1919 # The default value is: NO.
+
1920 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1921 
+
1922 RTF_HYPERLINKS = YES
+
1923 
+
1924 # Load stylesheet definitions from file. Syntax is similar to doxygen's
+
1925 # configuration file, i.e. a series of assignments. You only have to provide
+
1926 # replacements, missing definitions are set to their default value.
+
1927 #
+
1928 # See also section "Doxygen usage" for information on how to generate the
+
1929 # default style sheet that doxygen normally uses.
+
1930 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1931 
+
1932 RTF_STYLESHEET_FILE =
+
1933 
+
1934 # Set optional variables used in the generation of an RTF document. Syntax is
+
1935 # similar to doxygen's configuration file. A template extensions file can be
+
1936 # generated using doxygen -e rtf extensionFile.
+
1937 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1938 
+
1939 RTF_EXTENSIONS_FILE =
+
1940 
+
1941 # If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
+
1942 # with syntax highlighting in the RTF output.
+
1943 #
+
1944 # Note that which sources are shown also depends on other settings such as
+
1945 # SOURCE_BROWSER.
+
1946 # The default value is: NO.
+
1947 # This tag requires that the tag GENERATE_RTF is set to YES.
+
1948 
+
1949 RTF_SOURCE_CODE = NO
+
1950 
+
1951 #---------------------------------------------------------------------------
+
1952 # Configuration options related to the man page output
+
1953 #---------------------------------------------------------------------------
+
1954 
+
1955 # If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
+
1956 # classes and files.
+
1957 # The default value is: NO.
+
1958 
+
1959 GENERATE_MAN = NO
+
1960 
+
1961 # The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
+
1962 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
1963 # it. A directory man3 will be created inside the directory specified by
+
1964 # MAN_OUTPUT.
+
1965 # The default directory is: man.
+
1966 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1967 
+
1968 MAN_OUTPUT = man
+
1969 
+
1970 # The MAN_EXTENSION tag determines the extension that is added to the generated
+
1971 # man pages. In case the manual section does not start with a number, the number
+
1972 # 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
+
1973 # optional.
+
1974 # The default value is: .3.
+
1975 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1976 
+
1977 MAN_EXTENSION = .3
+
1978 
+
1979 # The MAN_SUBDIR tag determines the name of the directory created within
+
1980 # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
+
1981 # MAN_EXTENSION with the initial . removed.
+
1982 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1983 
+
1984 MAN_SUBDIR =
+
1985 
+
1986 # If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
+
1987 # will generate one additional man file for each entity documented in the real
+
1988 # man page(s). These additional files only source the real man page, but without
+
1989 # them the man command would be unable to find the correct page.
+
1990 # The default value is: NO.
+
1991 # This tag requires that the tag GENERATE_MAN is set to YES.
+
1992 
+
1993 MAN_LINKS = NO
+
1994 
+
1995 #---------------------------------------------------------------------------
+
1996 # Configuration options related to the XML output
+
1997 #---------------------------------------------------------------------------
+
1998 
+
1999 # If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
+
2000 # captures the structure of the code including all documentation.
+
2001 # The default value is: NO.
+
2002 
+
2003 GENERATE_XML = NO
+
2004 
+
2005 # The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
+
2006 # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
+
2007 # it.
+
2008 # The default directory is: xml.
+
2009 # This tag requires that the tag GENERATE_XML is set to YES.
+
2010 
+
2011 XML_OUTPUT = xml
+
2012 
+
2013 # If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
+
2014 # listings (including syntax highlighting and cross-referencing information) to
+
2015 # the XML output. Note that enabling this will significantly increase the size
+
2016 # of the XML output.
+
2017 # The default value is: YES.
+
2018 # This tag requires that the tag GENERATE_XML is set to YES.
+
2019 
+
2020 XML_PROGRAMLISTING = YES
+
2021 
+
2022 # If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
+
2023 # namespace members in file scope as well, matching the HTML output.
+
2024 # The default value is: NO.
+
2025 # This tag requires that the tag GENERATE_XML is set to YES.
+
2026 
+
2027 XML_NS_MEMB_FILE_SCOPE = NO
+
2028 
+
2029 #---------------------------------------------------------------------------
+
2030 # Configuration options related to the DOCBOOK output
+
2031 #---------------------------------------------------------------------------
+
2032 
+
2033 # If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
+
2034 # that can be used to generate PDF.
+
2035 # The default value is: NO.
+
2036 
+
2037 GENERATE_DOCBOOK = NO
+
2038 
+
2039 # The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
+
2040 # If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
+
2041 # front of it.
+
2042 # The default directory is: docbook.
+
2043 # This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
2044 
+
2045 DOCBOOK_OUTPUT = docbook
+
2046 
+
2047 # If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
+
2048 # program listings (including syntax highlighting and cross-referencing
+
2049 # information) to the DOCBOOK output. Note that enabling this will significantly
+
2050 # increase the size of the DOCBOOK output.
+
2051 # The default value is: NO.
+
2052 # This tag requires that the tag GENERATE_DOCBOOK is set to YES.
+
2053 
+
2054 DOCBOOK_PROGRAMLISTING = NO
+
2055 
+
2056 #---------------------------------------------------------------------------
+
2057 # Configuration options for the AutoGen Definitions output
+
2058 #---------------------------------------------------------------------------
+
2059 
+
2060 # If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
+
2061 # AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
+
2062 # the structure of the code including all documentation. Note that this feature
+
2063 # is still experimental and incomplete at the moment.
+
2064 # The default value is: NO.
+
2065 
+
2066 GENERATE_AUTOGEN_DEF = NO
+
2067 
+
2068 #---------------------------------------------------------------------------
+
2069 # Configuration options related to the Perl module output
+
2070 #---------------------------------------------------------------------------
+
2071 
+
2072 # If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
+
2073 # file that captures the structure of the code including all documentation.
+
2074 #
+
2075 # Note that this feature is still experimental and incomplete at the moment.
+
2076 # The default value is: NO.
+
2077 
+
2078 GENERATE_PERLMOD = NO
+
2079 
+
2080 # If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
+
2081 # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
+
2082 # output from the Perl module output.
+
2083 # The default value is: NO.
+
2084 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
2085 
+
2086 PERLMOD_LATEX = NO
+
2087 
+
2088 # If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
+
2089 # formatted so it can be parsed by a human reader. This is useful if you want to
+
2090 # understand what is going on. On the other hand, if this tag is set to NO, the
+
2091 # size of the Perl module output will be much smaller and Perl will parse it
+
2092 # just the same.
+
2093 # The default value is: YES.
+
2094 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
2095 
+
2096 PERLMOD_PRETTY = YES
+
2097 
+
2098 # The names of the make variables in the generated doxyrules.make file are
+
2099 # prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
+
2100 # so different doxyrules.make files included by the same Makefile don't
+
2101 # overwrite each other's variables.
+
2102 # This tag requires that the tag GENERATE_PERLMOD is set to YES.
+
2103 
+
2104 PERLMOD_MAKEVAR_PREFIX =
+
2105 
+
2106 #---------------------------------------------------------------------------
+
2107 # Configuration options related to the preprocessor
+
2108 #---------------------------------------------------------------------------
+
2109 
+
2110 # If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
+
2111 # C-preprocessor directives found in the sources and include files.
+
2112 # The default value is: YES.
+
2113 
+
2114 ENABLE_PREPROCESSING = YES
+
2115 
+
2116 # If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
+
2117 # in the source code. If set to NO, only conditional compilation will be
+
2118 # performed. Macro expansion can be done in a controlled way by setting
+
2119 # EXPAND_ONLY_PREDEF to YES.
+
2120 # The default value is: NO.
+
2121 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2122 
+
2123 MACRO_EXPANSION = NO
+
2124 
+
2125 # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
+
2126 # the macro expansion is limited to the macros specified with the PREDEFINED and
+
2127 # EXPAND_AS_DEFINED tags.
+
2128 # The default value is: NO.
+
2129 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2130 
+
2131 EXPAND_ONLY_PREDEF = NO
+
2132 
+
2133 # If the SEARCH_INCLUDES tag is set to YES, the include files in the
+
2134 # INCLUDE_PATH will be searched if a #include is found.
+
2135 # The default value is: YES.
+
2136 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2137 
+
2138 SEARCH_INCLUDES = YES
+
2139 
+
2140 # The INCLUDE_PATH tag can be used to specify one or more directories that
+
2141 # contain include files that are not input files but should be processed by the
+
2142 # preprocessor.
+
2143 # This tag requires that the tag SEARCH_INCLUDES is set to YES.
+
2144 
+
2145 INCLUDE_PATH =
+
2146 
+
2147 # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+
2148 # patterns (like *.h and *.hpp) to filter out the header-files in the
+
2149 # directories. If left blank, the patterns specified with FILE_PATTERNS will be
+
2150 # used.
+
2151 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2152 
+
2153 INCLUDE_FILE_PATTERNS =
+
2154 
+
2155 # The PREDEFINED tag can be used to specify one or more macro names that are
+
2156 # defined before the preprocessor is started (similar to the -D option of e.g.
+
2157 # gcc). The argument of the tag is a list of macros of the form: name or
+
2158 # name=definition (no spaces). If the definition and the "=" are omitted, "=1"
+
2159 # is assumed. To prevent a macro definition from being undefined via #undef or
+
2160 # recursively expanded use the := operator instead of the = operator.
+
2161 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2162 
+
2163 PREDEFINED =
+
2164 
+
2165 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
+
2166 # tag can be used to specify a list of macro names that should be expanded. The
+
2167 # macro definition that is found in the sources will be used. Use the PREDEFINED
+
2168 # tag if you want to use a different macro definition that overrules the
+
2169 # definition found in the source code.
+
2170 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2171 
+
2172 EXPAND_AS_DEFINED =
+
2173 
+
2174 # If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
+
2175 # remove all references to function-like macros that are alone on a line, have
+
2176 # an all uppercase name, and do not end with a semicolon. Such function macros
+
2177 # are typically used for boiler-plate code, and will confuse the parser if not
+
2178 # removed.
+
2179 # The default value is: YES.
+
2180 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
+
2181 
+
2182 SKIP_FUNCTION_MACROS = YES
+
2183 
+
2184 #---------------------------------------------------------------------------
+
2185 # Configuration options related to external references
+
2186 #---------------------------------------------------------------------------
+
2187 
+
2188 # The TAGFILES tag can be used to specify one or more tag files. For each tag
+
2189 # file the location of the external documentation should be added. The format of
+
2190 # a tag file without this location is as follows:
+
2191 # TAGFILES = file1 file2 ...
+
2192 # Adding location for the tag files is done as follows:
+
2193 # TAGFILES = file1=loc1 "file2 = loc2" ...
+
2194 # where loc1 and loc2 can be relative or absolute paths or URLs. See the
+
2195 # section "Linking to external documentation" for more information about the use
+
2196 # of tag files.
+
2197 # Note: Each tag file must have a unique name (where the name does NOT include
+
2198 # the path). If a tag file is not located in the directory in which doxygen is
+
2199 # run, you must also specify the path to the tagfile here.
+
2200 
+
2201 TAGFILES =
+
2202 
+
2203 # When a file name is specified after GENERATE_TAGFILE, doxygen will create a
+
2204 # tag file that is based on the input files it reads. See section "Linking to
+
2205 # external documentation" for more information about the usage of tag files.
+
2206 
+
2207 GENERATE_TAGFILE =
+
2208 
+
2209 # If the ALLEXTERNALS tag is set to YES, all external class will be listed in
+
2210 # the class index. If set to NO, only the inherited external classes will be
+
2211 # listed.
+
2212 # The default value is: NO.
+
2213 
+
2214 ALLEXTERNALS = NO
+
2215 
+
2216 # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
+
2217 # in the modules index. If set to NO, only the current project's groups will be
+
2218 # listed.
+
2219 # The default value is: YES.
+
2220 
+
2221 EXTERNAL_GROUPS = YES
+
2222 
+
2223 # If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
+
2224 # the related pages index. If set to NO, only the current project's pages will
+
2225 # be listed.
+
2226 # The default value is: YES.
+
2227 
+
2228 EXTERNAL_PAGES = YES
+
2229 
+
2230 #---------------------------------------------------------------------------
+
2231 # Configuration options related to the dot tool
+
2232 #---------------------------------------------------------------------------
+
2233 
+
2234 # If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
+
2235 # (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
+
2236 # NO turns the diagrams off. Note that this option also works with HAVE_DOT
+
2237 # disabled, but it is recommended to install and use dot, since it yields more
+
2238 # powerful graphs.
+
2239 # The default value is: YES.
+
2240 
+
2241 CLASS_DIAGRAMS = YES
+
2242 
+
2243 # You can include diagrams made with dia in doxygen documentation. Doxygen will
+
2244 # then run dia to produce the diagram and insert it in the documentation. The
+
2245 # DIA_PATH tag allows you to specify the directory where the dia binary resides.
+
2246 # If left empty dia is assumed to be found in the default search path.
+
2247 
+
2248 DIA_PATH =
+
2249 
+
2250 # If set to YES the inheritance and collaboration graphs will hide inheritance
+
2251 # and usage relations if the target is undocumented or is not a class.
+
2252 # The default value is: YES.
+
2253 
+
2254 HIDE_UNDOC_RELATIONS = YES
+
2255 
+
2256 # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+
2257 # available from the path. This tool is part of Graphviz (see:
+
2258 # http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
+
2259 # Bell Labs. The other options in this section have no effect if this option is
+
2260 # set to NO
+
2261 # The default value is: NO.
+
2262 
+
2263 HAVE_DOT = NO
+
2264 
+
2265 # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
+
2266 # to run in parallel. When set to 0 doxygen will base this on the number of
+
2267 # processors available in the system. You can set it explicitly to a value
+
2268 # larger than 0 to get control over the balance between CPU load and processing
+
2269 # speed.
+
2270 # Minimum value: 0, maximum value: 32, default value: 0.
+
2271 # This tag requires that the tag HAVE_DOT is set to YES.
+
2272 
+
2273 DOT_NUM_THREADS = 0
+
2274 
+
2275 # When you want a differently looking font in the dot files that doxygen
+
2276 # generates you can specify the font name using DOT_FONTNAME. You need to make
+
2277 # sure dot is able to find the font, which can be done by putting it in a
+
2278 # standard location or by setting the DOTFONTPATH environment variable or by
+
2279 # setting DOT_FONTPATH to the directory containing the font.
+
2280 # The default value is: Helvetica.
+
2281 # This tag requires that the tag HAVE_DOT is set to YES.
+
2282 
+
2283 DOT_FONTNAME = Helvetica
+
2284 
+
2285 # The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
+
2286 # dot graphs.
+
2287 # Minimum value: 4, maximum value: 24, default value: 10.
+
2288 # This tag requires that the tag HAVE_DOT is set to YES.
+
2289 
+
2290 DOT_FONTSIZE = 10
+
2291 
+
2292 # By default doxygen will tell dot to use the default font as specified with
+
2293 # DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
+
2294 # the path where dot can find it using this tag.
+
2295 # This tag requires that the tag HAVE_DOT is set to YES.
+
2296 
+
2297 DOT_FONTPATH =
+
2298 
+
2299 # If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
+
2300 # each documented class showing the direct and indirect inheritance relations.
+
2301 # Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
+
2302 # The default value is: YES.
+
2303 # This tag requires that the tag HAVE_DOT is set to YES.
+
2304 
+
2305 CLASS_GRAPH = YES
+
2306 
+
2307 # If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
+
2308 # graph for each documented class showing the direct and indirect implementation
+
2309 # dependencies (inheritance, containment, and class references variables) of the
+
2310 # class with other documented classes.
+
2311 # The default value is: YES.
+
2312 # This tag requires that the tag HAVE_DOT is set to YES.
+
2313 
+
2314 COLLABORATION_GRAPH = YES
+
2315 
+
2316 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
+
2317 # groups, showing the direct groups dependencies.
+
2318 # The default value is: YES.
+
2319 # This tag requires that the tag HAVE_DOT is set to YES.
+
2320 
+
2321 GROUP_GRAPHS = YES
+
2322 
+
2323 # If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
+
2324 # collaboration diagrams in a style similar to the OMG's Unified Modeling
+
2325 # Language.
+
2326 # The default value is: NO.
+
2327 # This tag requires that the tag HAVE_DOT is set to YES.
+
2328 
+
2329 UML_LOOK = NO
+
2330 
+
2331 # If the UML_LOOK tag is enabled, the fields and methods are shown inside the
+
2332 # class node. If there are many fields or methods and many nodes the graph may
+
2333 # become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
+
2334 # number of items for each type to make the size more manageable. Set this to 0
+
2335 # for no limit. Note that the threshold may be exceeded by 50% before the limit
+
2336 # is enforced. So when you set the threshold to 10, up to 15 fields may appear,
+
2337 # but if the number exceeds 15, the total amount of fields shown is limited to
+
2338 # 10.
+
2339 # Minimum value: 0, maximum value: 100, default value: 10.
+
2340 # This tag requires that the tag HAVE_DOT is set to YES.
+
2341 
+
2342 UML_LIMIT_NUM_FIELDS = 10
+
2343 
+
2344 # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
+
2345 # collaboration graphs will show the relations between templates and their
+
2346 # instances.
+
2347 # The default value is: NO.
+
2348 # This tag requires that the tag HAVE_DOT is set to YES.
+
2349 
+
2350 TEMPLATE_RELATIONS = NO
+
2351 
+
2352 # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
+
2353 # YES then doxygen will generate a graph for each documented file showing the
+
2354 # direct and indirect include dependencies of the file with other documented
+
2355 # files.
+
2356 # The default value is: YES.
+
2357 # This tag requires that the tag HAVE_DOT is set to YES.
+
2358 
+
2359 INCLUDE_GRAPH = YES
+
2360 
+
2361 # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
+
2362 # set to YES then doxygen will generate a graph for each documented file showing
+
2363 # the direct and indirect include dependencies of the file with other documented
+
2364 # files.
+
2365 # The default value is: YES.
+
2366 # This tag requires that the tag HAVE_DOT is set to YES.
+
2367 
+
2368 INCLUDED_BY_GRAPH = YES
+
2369 
+
2370 # If the CALL_GRAPH tag is set to YES then doxygen will generate a call
+
2371 # dependency graph for every global function or class method.
+
2372 #
+
2373 # Note that enabling this option will significantly increase the time of a run.
+
2374 # So in most cases it will be better to enable call graphs for selected
+
2375 # functions only using the \callgraph command. Disabling a call graph can be
+
2376 # accomplished by means of the command \hidecallgraph.
+
2377 # The default value is: NO.
+
2378 # This tag requires that the tag HAVE_DOT is set to YES.
+
2379 
+
2380 CALL_GRAPH = YES
+
2381 
+
2382 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
+
2383 # dependency graph for every global function or class method.
+
2384 #
+
2385 # Note that enabling this option will significantly increase the time of a run.
+
2386 # So in most cases it will be better to enable caller graphs for selected
+
2387 # functions only using the \callergraph command. Disabling a caller graph can be
+
2388 # accomplished by means of the command \hidecallergraph.
+
2389 # The default value is: NO.
+
2390 # This tag requires that the tag HAVE_DOT is set to YES.
+
2391 
+
2392 CALLER_GRAPH = YES
+
2393 
+
2394 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
+
2395 # hierarchy of all classes instead of a textual one.
+
2396 # The default value is: YES.
+
2397 # This tag requires that the tag HAVE_DOT is set to YES.
+
2398 
+
2399 GRAPHICAL_HIERARCHY = YES
+
2400 
+
2401 # If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
+
2402 # dependencies a directory has on other directories in a graphical way. The
+
2403 # dependency relations are determined by the #include relations between the
+
2404 # files in the directories.
+
2405 # The default value is: YES.
+
2406 # This tag requires that the tag HAVE_DOT is set to YES.
+
2407 
+
2408 DIRECTORY_GRAPH = YES
+
2409 
+
2410 # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+
2411 # generated by dot. For an explanation of the image formats see the section
+
2412 # output formats in the documentation of the dot tool (Graphviz (see:
+
2413 # http://www.graphviz.org/)).
+
2414 # Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
+
2415 # to make the SVG files visible in IE 9+ (other browsers do not have this
+
2416 # requirement).
+
2417 # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
+
2418 # png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
+
2419 # png:gdiplus:gdiplus.
+
2420 # The default value is: png.
+
2421 # This tag requires that the tag HAVE_DOT is set to YES.
+
2422 
+
2423 DOT_IMAGE_FORMAT = png
+
2424 
+
2425 # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+
2426 # enable generation of interactive SVG images that allow zooming and panning.
+
2427 #
+
2428 # Note that this requires a modern browser other than Internet Explorer. Tested
+
2429 # and working are Firefox, Chrome, Safari, and Opera.
+
2430 # Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
+
2431 # the SVG files visible. Older versions of IE do not have SVG support.
+
2432 # The default value is: NO.
+
2433 # This tag requires that the tag HAVE_DOT is set to YES.
+
2434 
+
2435 INTERACTIVE_SVG = NO
+
2436 
+
2437 # The DOT_PATH tag can be used to specify the path where the dot tool can be
+
2438 # found. If left blank, it is assumed the dot tool can be found in the path.
+
2439 # This tag requires that the tag HAVE_DOT is set to YES.
+
2440 
+
2441 DOT_PATH =
+
2442 
+
2443 # The DOTFILE_DIRS tag can be used to specify one or more directories that
+
2444 # contain dot files that are included in the documentation (see the \dotfile
+
2445 # command).
+
2446 # This tag requires that the tag HAVE_DOT is set to YES.
+
2447 
+
2448 DOTFILE_DIRS =
+
2449 
+
2450 # The MSCFILE_DIRS tag can be used to specify one or more directories that
+
2451 # contain msc files that are included in the documentation (see the \mscfile
+
2452 # command).
+
2453 
+
2454 MSCFILE_DIRS =
+
2455 
+
2456 # The DIAFILE_DIRS tag can be used to specify one or more directories that
+
2457 # contain dia files that are included in the documentation (see the \diafile
+
2458 # command).
+
2459 
+
2460 DIAFILE_DIRS =
+
2461 
+
2462 # When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
+
2463 # path where java can find the plantuml.jar file. If left blank, it is assumed
+
2464 # PlantUML is not used or called during a preprocessing step. Doxygen will
+
2465 # generate a warning when it encounters a \startuml command in this case and
+
2466 # will not generate output for the diagram.
+
2467 
+
2468 PLANTUML_JAR_PATH =
+
2469 
+
2470 # When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
+
2471 # configuration file for plantuml.
+
2472 
+
2473 PLANTUML_CFG_FILE =
+
2474 
+
2475 # When using plantuml, the specified paths are searched for files specified by
+
2476 # the !include statement in a plantuml block.
+
2477 
+
2478 PLANTUML_INCLUDE_PATH =
+
2479 
+
2480 # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
+
2481 # that will be shown in the graph. If the number of nodes in a graph becomes
+
2482 # larger than this value, doxygen will truncate the graph, which is visualized
+
2483 # by representing a node as a red box. Note that doxygen if the number of direct
+
2484 # children of the root node in a graph is already larger than
+
2485 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
+
2486 # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
2487 # Minimum value: 0, maximum value: 10000, default value: 50.
+
2488 # This tag requires that the tag HAVE_DOT is set to YES.
+
2489 
+
2490 DOT_GRAPH_MAX_NODES = 50
+
2491 
+
2492 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
+
2493 # generated by dot. A depth value of 3 means that only nodes reachable from the
+
2494 # root by following a path via at most 3 edges will be shown. Nodes that lay
+
2495 # further from the root node will be omitted. Note that setting this option to 1
+
2496 # or 2 may greatly reduce the computation time needed for large code bases. Also
+
2497 # note that the size of a graph can be further restricted by
+
2498 # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
2499 # Minimum value: 0, maximum value: 1000, default value: 0.
+
2500 # This tag requires that the tag HAVE_DOT is set to YES.
+
2501 
+
2502 MAX_DOT_GRAPH_DEPTH = 1000
+
2503 
+
2504 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+
2505 # background. This is disabled by default, because dot on Windows does not seem
+
2506 # to support this out of the box.
+
2507 #
+
2508 # Warning: Depending on the platform used, enabling this option may lead to
+
2509 # badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+
2510 # read).
+
2511 # The default value is: NO.
+
2512 # This tag requires that the tag HAVE_DOT is set to YES.
+
2513 
+
2514 DOT_TRANSPARENT = NO
+
2515 
+
2516 # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
+
2517 # files in one run (i.e. multiple -o and -T options on the command line). This
+
2518 # makes dot run faster, but since only newer versions of dot (>1.8.10) support
+
2519 # this, this feature is disabled by default.
+
2520 # The default value is: NO.
+
2521 # This tag requires that the tag HAVE_DOT is set to YES.
+
2522 
+
2523 DOT_MULTI_TARGETS = NO
+
2524 
+
2525 # If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
+
2526 # explaining the meaning of the various boxes and arrows in the dot generated
+
2527 # graphs.
+
2528 # The default value is: YES.
+
2529 # This tag requires that the tag HAVE_DOT is set to YES.
+
2530 
+
2531 GENERATE_LEGEND = YES
+
2532 
+
2533 # If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
+
2534 # files that are used to generate the various graphs.
+
2535 # The default value is: YES.
+
2536 # This tag requires that the tag HAVE_DOT is set to YES.
+
2537 
+
2538 DOT_CLEANUP = YES
+
+ + + + diff --git a/include/glm/doc/api/a00812.html b/include/glm/doc/api/a00812.html new file mode 100644 index 0000000..e620aa7 --- /dev/null +++ b/include/glm/doc/api/a00812.html @@ -0,0 +1,1661 @@ + + + + + + + +1.0.2 API documentation: Common functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Common functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType abs (genType x)
 Returns x if x >= 0; otherwise, it returns -x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > abs (vec< L, T, Q > const &x)
 Returns x if x >= 0; otherwise, it returns -x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceil (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer that is greater than or equal to x. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType clamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. More...
 
GLM_FUNC_DECL int floatBitsToInt (float v)
 Returns a signed integer value representing the encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt (vec< L, float, Q > const &v)
 Returns a signed integer value representing the encoding of a floating-point value. More...
 
GLM_FUNC_DECL uint floatBitsToUint (float v)
 Returns a unsigned integer value representing the encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint (vec< L, float, Q > const &v)
 Returns a unsigned integer value representing the encoding of a floating-point value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floor (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer that is less then or equal to x. More...
 
template<typename genType >
GLM_FUNC_DECL genType fma (genType const &a, genType const &b, genType const &c)
 Computes and returns a * b + c. More...
 
template<typename genType >
GLM_FUNC_DECL genType fract (genType x)
 Return x - floor(x). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fract (vec< L, T, Q > const &x)
 Return x - floor(x). More...
 
template<typename genType >
GLM_FUNC_DECL genType frexp (genType x, int &exp)
 Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) More...
 
GLM_FUNC_DECL float intBitsToFloat (int v)
 Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat (vec< L, int, Q > const &v)
 Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isinf (vec< L, T, Q > const &x)
 Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isnan (vec< L, T, Q > const &x)
 Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. More...
 
template<typename genType >
GLM_FUNC_DECL genType ldexp (genType const &x, int const &exp)
 Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType max (genType x, genType y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, T y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if x < y; otherwise, it returns x. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType min (genType x, genType y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix (genTypeT x, genTypeT y, genTypeU a)
 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. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mod (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Modulus. More...
 
template<typename genType >
GLM_FUNC_DECL genType modf (genType x, genType &i)
 Returns the fractional part of x and sets i to the integer part (as a whole number floating point value). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > round (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundEven (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > sign (vec< L, T, Q > const &x)
 Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. More...
 
template<typename genType >
GLM_FUNC_DECL genType smoothstep (genType edge0, genType edge1, genType x)
 Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1. More...
 
template<typename genType >
GLM_FUNC_DECL genType step (genType edge, genType x)
 Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > step (T edge, vec< L, T, Q > const &x)
 Returns 0.0 if x < edge, otherwise it returns 1.0. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > step (vec< L, T, Q > const &edge, vec< L, T, Q > const &x)
 Returns 0.0 if x < edge, otherwise it returns 1.0. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > trunc (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x. More...
 
GLM_FUNC_DECL float uintBitsToFloat (uint v)
 Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat (vec< L, uint, Q > const &v)
 Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. More...
 
+

Detailed Description

+

Provides GLSL common functions

+

These all operate component-wise. The description is per component.

+

Include <glm/common.hpp> to use these core features.

+

Function Documentation

+ +

◆ abs() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::abs (genType x)
+
+ +

Returns x if x >= 0; otherwise, it returns -x.

+
Template Parameters
+ + +
genTypefloating-point or signed integer; scalar or vector types.
+
+
+
See also
GLSL abs man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ abs() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::abs (vec< L, T, Q > const & x)
+
+ +

Returns x if x >= 0; otherwise, it returns -x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL abs man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ ceil()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::ceil (vec< L, T, Q > const & x)
+
+ +

Returns a value equal to the nearest integer that is greater than or equal to x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL ceil man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ clamp() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::clamp (genType x,
genType minVal,
genType maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL clamp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +

Referenced by glm::saturate().

+ +
+
+ +

◆ clamp() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::clamp (vec< L, T, Q > const & x,
minVal,
maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL clamp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ clamp() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::clamp (vec< L, T, Q > const & x,
vec< L, T, Q > const & minVal,
vec< L, T, Q > const & maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL clamp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ floatBitsToInt() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::floatBitsToInt (float v)
+
+ +

Returns a signed integer value representing the encoding of a floating-point value.

+

The floating-point value's bit-level representation is preserved.

+
See also
GLSL floatBitsToInt man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ floatBitsToInt() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::floatBitsToInt (vec< L, float, Q > const & v)
+
+ +

Returns a signed integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLSL floatBitsToInt man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ floatBitsToUint() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::floatBitsToUint (float v)
+
+ +

Returns a unsigned integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
See also
GLSL floatBitsToUint man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ floatBitsToUint() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, uint, Q> glm::floatBitsToUint (vec< L, float, Q > const & v)
+
+ +

Returns a unsigned integer value representing the encoding of a floating-point value.

+

The floatingpoint value's bit-level representation is preserved.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLSL floatBitsToUint man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ floor()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::floor (vec< L, T, Q > const & x)
+
+ +

Returns a value equal to the nearest integer that is less then or equal to x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL floor man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ fma()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fma (genType const & a,
genType const & b,
genType const & c 
)
+
+ +

Computes and returns a * b + c.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL fma man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ fract() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fract (genType x)
+
+ +

Return x - floor(x).

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL fract man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ fract() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fract (vec< L, T, Q > const & x)
+
+ +

Return x - floor(x).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL fract man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ frexp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::frexp (genType x,
int & exp 
)
+
+ +

Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent)

+

The significand is returned by the function and the exponent is returned in the parameter exp. For a floating-point value of zero, the significant and exponent are both zero. For a floating-point value that is an infinity or is not a number, the results are undefined.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL frexp man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ intBitsToFloat() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::intBitsToFloat (int v)
+
+ +

Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL intBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ intBitsToFloat() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, float, Q> glm::intBitsToFloat (vec< L, int, Q > const & v)
+
+ +

Returns a floating-point value corresponding to a signed integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLSL intBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ isinf()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isinf (vec< L, T, Q > const & x)
+
+ +

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no infinity representations.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL isinf man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ isnan()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isnan (vec< L, T, Q > const & x)
+
+ +

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no NaN representations.

+

/!\ When using compiler fast math, this function may fail.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL isnan man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ ldexp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::ldexp (genType const & x,
int const & exp 
)
+
+ +

Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent)

+

If this product is too large to be represented in the floating-point type, the result is undefined.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL ldexp man page;
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ max() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::max (genType x,
genType y 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL max man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ max() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
y 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL max man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ max() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL max man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ min() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::min (genType x,
genType y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+
Template Parameters
+ + +
genTypeFloating-point or integer; scalar or vector types.
+
+
+
See also
GLSL min man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ min() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & x,
y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL min man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ min() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL min man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ mix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT glm::mix (genTypeT x,
genTypeT y,
genTypeU a 
)
+
+ +

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 'a' 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 also
GLSL mix man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+
Parameters
+ + + + +
[in]xValue to interpolate.
[in]yValue to interpolate.
[in]aInterpolant.
+
+
+
Template Parameters
+ + + +
genTypeTFloating point scalar or vector.
genTypeUFloating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
+
+
+
#include <glm/glm.hpp>
+
...
+
float a;
+
bool b;
+ + + + +
...
+
glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
+
glm::vec4 s = glm::mix(g, h, b); // Returns 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.
+
+

Referenced by glm::lerp().

+ +
+
+ +

◆ mod()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::mod (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types, include glm/gtc/integer for integer scalar types support
QValue from qualifier enum
+
+
+
See also
GLSL mod man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ modf()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::modf (genType x,
genType & i 
)
+
+ +

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.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL modf man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ round()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::round (vec< L, T, Q > 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.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL round man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ roundEven()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::roundEven (vec< L, T, Q > 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.)

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL roundEven man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+
+New round to even technique
+ +
+
+ +

◆ sign()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::sign (vec< L, T, Q > const & x)
+
+ +

Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL sign man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ smoothstep()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::smoothstep (genType edge0,
genType edge1,
genType x 
)
+
+ +

Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1.

+

This is useful in cases where you would want a threshold function with a smooth transition. This is equivalent to: genType t; t = clamp ((x - edge0) / (edge1 - edge0), 0, 1); return t * t * (3 - 2 * t); Results are undefined if edge0 >= edge1.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL smoothstep man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ step() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::step (genType edge,
genType x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.

+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ step() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::step (edge,
vec< L, T, Q > const & x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ step() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::step (vec< L, T, Q > const & edge,
vec< L, T, Q > const & x 
)
+
+ +

Returns 0.0 if x < edge, otherwise it returns 1.0.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL step man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ trunc()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::trunc (vec< L, T, Q > const & x)
+
+ +

Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL trunc man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ uintBitsToFloat() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::uintBitsToFloat (uint v)
+
+ +

Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
See also
GLSL uintBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ uintBitsToFloat() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, float, Q> glm::uintBitsToFloat (vec< L, uint, Q > const & v)
+
+ +

Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value.

+

If an inf or NaN is passed in, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit-level representation is preserved.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLSL uintBitsToFloat man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+
+
GLM_FUNC_DECL GLM_CONSTEXPR genType e()
Return e constant.
+
GLM_FUNC_DECL GLM_CONSTEXPR genTypeT mix(genTypeT x, genTypeT y, genTypeU a)
If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a00813.html b/include/glm/doc/api/a00813.html new file mode 100644 index 0000000..8189820 --- /dev/null +++ b/include/glm/doc/api/a00813.html @@ -0,0 +1,375 @@ + + + + + + + +1.0.2 API documentation: Exponential functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Exponential functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > exp (vec< L, T, Q > const &v)
 Returns the natural exponentiation of v, i.e., e^v. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > exp2 (vec< L, T, Q > const &v)
 Returns 2 raised to the v power. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > inversesqrt (vec< L, T, Q > const &v)
 Returns the reciprocal of the positive square root of v. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > log (vec< L, T, Q > const &v)
 Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > log2 (vec< L, T, Q > const &v)
 Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > pow (vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)
 Returns 'base' raised to the power 'exponent'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sqrt (vec< L, T, Q > const &v)
 Returns the positive square root of v. More...
 
+

Detailed Description

+

Provides GLSL exponential functions

+

These all operate component-wise. The description is per component.

+

Include <glm/exponential.hpp> to use these core features.

+

Function Documentation

+ +

◆ exp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::exp (vec< L, T, Q > const & v)
+
+ +

Returns the natural exponentiation of v, i.e., e^v.

+
Parameters
+ + +
vexp function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL exp man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +

◆ exp2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::exp2 (vec< L, T, Q > const & v)
+
+ +

Returns 2 raised to the v power.

+
Parameters
+ + +
vexp2 function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL exp2 man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +

◆ inversesqrt()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::inversesqrt (vec< L, T, Q > const & v)
+
+ +

Returns the reciprocal of the positive square root of v.

+
Parameters
+ + +
vinversesqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL inversesqrt man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +

◆ log()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::log (vec< L, T, Q > const & v)
+
+ +

Returns the natural logarithm of v, i.e., returns the value y which satisfies the equation x = e^y.

+

Results are undefined if v <= 0.

+
Parameters
+ + +
vlog function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL log man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +

◆ log2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec< L, T, Q > log2 (vec< L, T, Q > const & v)
+
+ +

Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.

+

Returns the log2 of x for integer values.

+
Parameters
+ + +
vlog2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL log2 man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+

Useful to compute mipmap count from the texture size.

See also
GLM_GTC_integer
+ +
+
+ +

◆ pow()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::pow (vec< L, T, Q > const & base,
vec< L, T, Q > const & exponent 
)
+
+ +

Returns 'base' raised to the power 'exponent'.

+
Parameters
+ + + +
baseFloating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type qualifier.
exponentFloating point value representing the 'exponent'.
+
+
+
See also
GLSL pow man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+ +

◆ sqrt()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::sqrt (vec< L, T, Q > const & v)
+
+ +

Returns the positive square root of v.

+
Parameters
+ + +
vsqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.
+
+
+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL sqrt man page
+
+GLSL 4.20.8 specification, section 8.2 Exponential Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00814.html b/include/glm/doc/api/a00814.html new file mode 100644 index 0000000..72e54ce --- /dev/null +++ b/include/glm/doc/api/a00814.html @@ -0,0 +1,3008 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_clip_space + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_clip_space
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustum (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix with default handedness, using the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_NO (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumLH_ZO (T left, T right, T bottom, T top, T near, T far)
 Creates a left-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumNO (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_NO (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumRH_ZO (T left, T right, T bottom, T top, T near, T far)
 Creates a right-handed frustum matrix. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > frustumZO (T left, T right, T bottom, T top, T near, T far)
 Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspective (T fovy, T aspect, T near)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default handedness. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_NO (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveLH_ZO (T fovy, T aspect, T near)
 Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_NO (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > infinitePerspectiveRH_ZO (T fovy, T aspect, T near)
 Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho (T left, T right, T bottom, T top)
 Creates a matrix for projecting two-dimensional coordinates onto the screen. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > ortho (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_NO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoLH_ZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoNO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_NO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoRH_ZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > orthoZO (T left, T right, T bottom, T top, T zNear, T zFar)
 Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspective (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum based on the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFov (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view and the default handedness and default near and far clip planes definition. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH (T fov, T width, T height, T near, T far)
 Builds a left-handed perspective projection matrix based on a field of view. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_NO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovLH_ZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovNO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH (T fov, T width, T height, T near, T far)
 Builds a right-handed perspective projection matrix based on a field of view. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_NO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovRH_ZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using right-handed coordinates. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveFovZO (T fov, T width, T height, T near, T far)
 Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_NO (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveLH_ZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a left-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveNO (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_NO (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveRH_ZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a right-handed, symmetric perspective-view frustum. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > perspectiveZO (T fovy, T aspect, T near, T far)
 Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > tweakedInfinitePerspective (T fovy, T aspect, T near, T ep)
 Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping. More...
 
+

Detailed Description

+

Defines functions that generate clip space transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

Include <glm/ext/matrix_clip_space.hpp> to use the features of this extension.

+
See also
GLM_EXT_matrix_transform
+
+GLM_EXT_matrix_projection
+

Function Documentation

+ +

◆ frustum()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustum (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a frustum matrix with default handedness, using the default handedness and default near and far clip planes definition.

+

To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
glFrustum man page
+ +
+
+ +

◆ frustumLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a left-handed frustum matrix.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumLH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH_NO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a left-handed frustum matrix.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumLH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumLH_ZO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a left-handed frustum matrix.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumNO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a right-handed frustum matrix.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumRH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH_NO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a right-handed frustum matrix.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumRH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumRH_ZO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a right-handed frustum matrix.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ frustumZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::frustumZO (left,
right,
bottom,
top,
near,
far 
)
+
+ +

Creates a frustum matrix using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspective()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspective (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite with default handedness.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveLH (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveLH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveLH_NO (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveLH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveLH_ZO (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum with far plane at infinite.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveRH (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveRH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveRH_NO (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ infinitePerspectiveRH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::infinitePerspectiveRH_ZO (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum with far plane at infinite.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ ortho() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::ortho (left,
right,
bottom,
top 
)
+
+ +

Creates a matrix for projecting two-dimensional coordinates onto the screen.

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top, T const& zNear, T const& zFar)
+
+gluOrtho2D man page
+ +
+
+ +

◆ ortho() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::ortho (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using the default handedness and default near and far clip planes definition.

+

To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+
+glOrtho man page
+ +
+
+ +

◆ orthoLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoLH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH_NO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume using left-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoLH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoLH_ZO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoNO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoRH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH_NO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoRH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoRH_ZO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using right-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ orthoZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::orthoZO (left,
right,
bottom,
top,
zNear,
zFar 
)
+
+ +

Creates a matrix for an orthographic parallel viewing volume, using left-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
- glm::ortho(T const& left, T const& right, T const& bottom, T const& top)
+ +
+
+ +

◆ perspective()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspective (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum based on the default handedness and default near and far clip planes definition.

+

To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+
See also
gluPerspective man page
+ +
+
+ +

◆ perspectiveFov()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFov (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view and the default handedness and default near and far clip planes definition.

+

To change default handedness use GLM_FORCE_LEFT_HANDED. To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH (fov,
width,
height,
near,
far 
)
+
+ +

Builds a left-handed perspective projection matrix based on a field of view.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovLH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH_NO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using left-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovLH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovLH_ZO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using left-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovNO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH (fov,
width,
height,
near,
far 
)
+
+ +

Builds a right-handed perspective projection matrix based on a field of view.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovRH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH_NO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using right-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovRH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovRH_ZO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using right-handed coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveFovZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveFovZO (fov,
width,
height,
near,
far 
)
+
+ +

Builds a perspective projection matrix based on a field of view using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + + +
fovExpressed in radians.
widthWidth of the viewport
heightHeight of the viewport
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveLH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH_NO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveLH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveLH_ZO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a left-handed, symmetric perspective-view frustum.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveNO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum.

+

If GLM_FORCE_DEPTH_ZERO_TO_ONE is defined, the near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition) Otherwise, the near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveRH_NO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH_NO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveRH_ZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveRH_ZO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a right-handed, symmetric perspective-view frustum.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ perspectiveZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::perspectiveZO (fovy,
aspect,
near,
far 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum using left-handed coordinates if GLM_FORCE_LEFT_HANDED if defined or right-handed coordinates otherwise.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
farSpecifies the distance from the viewer to the far clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ tweakedInfinitePerspective() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::tweakedInfinitePerspective (fovy,
aspect,
near 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

+
Parameters
+ + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+ +

◆ tweakedInfinitePerspective() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::tweakedInfinitePerspective (fovy,
aspect,
near,
ep 
)
+
+ +

Creates a matrix for a symmetric perspective-view frustum with far plane at infinite for graphics hardware that doesn't support depth clamping.

+
Parameters
+ + + + + +
fovySpecifies the field of view angle, in degrees, in the y direction. Expressed in radians.
aspectSpecifies the aspect ratio that determines the field of view in the x direction. The aspect ratio is the ratio of x (width) to y (height).
nearSpecifies the distance from the viewer to the near clipping plane (always positive).
epEpsilon
+
+
+
Template Parameters
+ + +
TA floating-point scalar type
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00815.html b/include/glm/doc/api/a00815.html new file mode 100644 index 0000000..84ea25f --- /dev/null +++ b/include/glm/doc/api/a00815.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_common + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_EXT_matrix_common
+
+
+

Detailed Description

+

Defines functions for common matrix operations.

+

Include <glm/ext/matrix_common.hpp> to use the features of this extension.

+
See also
GLM_EXT_matrix_common
+
+ + + + diff --git a/include/glm/doc/api/a00816.html b/include/glm/doc/api/a00816.html new file mode 100644 index 0000000..29805dd --- /dev/null +++ b/include/glm/doc/api/a00816.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x2
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, int, defaultp > imat2
 Signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, defaultp > imat2x2
 Signed integer 2x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat2

+ +
+
+ + + + +
typedef mat< 2, 2, int, defaultp > imat2
+
+ +

Signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_int2x2.hpp.

+ +
+
+ +

◆ imat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int, defaultp > imat2x2
+
+ +

Signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int2x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00817.html b/include/glm/doc/api/a00817.html new file mode 100644 index 0000000..fb1e7af --- /dev/null +++ b/include/glm/doc/api/a00817.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x2_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, int16, defaultp > i16mat2
 16 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int16, defaultp > i16mat2x2
 16 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int32, defaultp > i32mat2
 32 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int32, defaultp > i32mat2x2
 32 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int64, defaultp > i64mat2
 64 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int64, defaultp > i64mat2x2
 64 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int8, defaultp > i8mat2
 8 bit signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int8, defaultp > i8mat2x2
 8 bit signed integer 2x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat2

+ +
+
+ + + + +
typedef mat<2, 2, int16, defaultp> i16mat2
+
+ +

16 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 57 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i16mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int16, defaultp > i16mat2x2
+
+ +

16 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 36 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i32mat2

+ +
+
+ + + + +
typedef mat<2, 2, int32, defaultp> i32mat2
+
+ +

32 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 62 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int32, defaultp > i32mat2x2
+
+ +

32 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 41 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i64mat2

+ +
+
+ + + + +
typedef mat<2, 2, int64, defaultp> i64mat2
+
+ +

64 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 67 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int64, defaultp > i64mat2x2
+
+ +

64 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 46 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i8mat2

+ +
+
+ + + + +
typedef mat<2, 2, int8, defaultp> i8mat2
+
+ +

8 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 52 of file matrix_int2x2_sized.hpp.

+ +
+
+ +

◆ i8mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int8, defaultp > i8mat2x2
+
+ +

8 bit signed integer 2x2 matrix.

+
See also
GLM_EXT_matrix_int2x2_sized
+ +

Definition at line 31 of file matrix_int2x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00818.html b/include/glm/doc/api/a00818.html new file mode 100644 index 0000000..f82b7e4 --- /dev/null +++ b/include/glm/doc/api/a00818.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x3
+
+
+ + + + + +

+Typedefs

typedef mat< 2, 3, int, defaultp > imat2x3
 Signed integer 2x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int, defaultp > imat2x3
+
+ +

Signed integer 2x3 matrix.

+
See also
GLM_EXT_matrix_int2x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int2x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00819.html b/include/glm/doc/api/a00819.html new file mode 100644 index 0000000..5818827 --- /dev/null +++ b/include/glm/doc/api/a00819.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, int16, defaultp > i16mat2x3
 16 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int32, defaultp > i32mat2x3
 32 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int64, defaultp > i64mat2x3
 64 bit signed integer 2x3 matrix. More...
 
typedef mat< 2, 3, int8, defaultp > i8mat2x3
 8 bit signed integer 2x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int16, defaultp > i16mat2x3
+
+ +

16 bit signed integer 2x3 matrix.

+
See also
GLM_EXT_matrix_int2x3_sized
+ +

Definition at line 36 of file matrix_int2x3_sized.hpp.

+ +
+
+ +

◆ i32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int32, defaultp > i32mat2x3
+
+ +

32 bit signed integer 2x3 matrix.

+
See also
GLM_EXT_matrix_int2x3_sized
+ +

Definition at line 41 of file matrix_int2x3_sized.hpp.

+ +
+
+ +

◆ i64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int64, defaultp > i64mat2x3
+
+ +

64 bit signed integer 2x3 matrix.

+
See also
GLM_EXT_matrix_int2x3_sized
+ +

Definition at line 46 of file matrix_int2x3_sized.hpp.

+ +
+
+ +

◆ i8mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int8, defaultp > i8mat2x3
+
+ +

8 bit signed integer 2x3 matrix.

+
See also
GLM_EXT_matrix_int2x3_sized
+ +

Definition at line 31 of file matrix_int2x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00820.html b/include/glm/doc/api/a00820.html new file mode 100644 index 0000000..764f656 --- /dev/null +++ b/include/glm/doc/api/a00820.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x4
+
+
+ + + + + +

+Typedefs

typedef mat< 2, 4, int, defaultp > imat2x4
 Signed integer 2x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int, defaultp > imat2x4
+
+ +

Signed integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int2x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00821.html b/include/glm/doc/api/a00821.html new file mode 100644 index 0000000..8818b95 --- /dev/null +++ b/include/glm/doc/api/a00821.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, int16, defaultp > i16mat2x4
 16 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int32, defaultp > i32mat2x4
 32 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int64, defaultp > i64mat2x4
 64 bit signed integer 2x4 matrix. More...
 
typedef mat< 2, 4, int8, defaultp > i8mat2x4
 8 bit signed integer 2x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int2x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int16, defaultp > i16mat2x4
+
+ +

16 bit signed integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4_sized
+ +

Definition at line 36 of file matrix_int2x4_sized.hpp.

+ +
+
+ +

◆ i32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int32, defaultp > i32mat2x4
+
+ +

32 bit signed integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4_sized
+ +

Definition at line 41 of file matrix_int2x4_sized.hpp.

+ +
+
+ +

◆ i64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int64, defaultp > i64mat2x4
+
+ +

64 bit signed integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4_sized
+ +

Definition at line 46 of file matrix_int2x4_sized.hpp.

+ +
+
+ +

◆ i8mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int8, defaultp > i8mat2x4
+
+ +

8 bit signed integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4_sized
+ +

Definition at line 31 of file matrix_int2x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00822.html b/include/glm/doc/api/a00822.html new file mode 100644 index 0000000..512c10c --- /dev/null +++ b/include/glm/doc/api/a00822.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x2
+
+
+ + + + + +

+Typedefs

typedef mat< 3, 2, int, defaultp > imat3x2
 Signed integer 3x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int, defaultp > imat3x2
+
+ +

Signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_int3x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int3x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00823.html b/include/glm/doc/api/a00823.html new file mode 100644 index 0000000..a6bba71 --- /dev/null +++ b/include/glm/doc/api/a00823.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, int16, defaultp > i16mat3x2
 16 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int32, defaultp > i32mat3x2
 32 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int64, defaultp > i64mat3x2
 64 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, int8, defaultp > i8mat3x2
 8 bit signed integer 3x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int16, defaultp > i16mat3x2
+
+ +

16 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_int3x2_sized
+ +

Definition at line 36 of file matrix_int3x2_sized.hpp.

+ +
+
+ +

◆ i32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int32, defaultp > i32mat3x2
+
+ +

32 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_int3x2_sized
+ +

Definition at line 41 of file matrix_int3x2_sized.hpp.

+ +
+
+ +

◆ i64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int64, defaultp > i64mat3x2
+
+ +

64 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_int3x2_sized
+ +

Definition at line 46 of file matrix_int3x2_sized.hpp.

+ +
+
+ +

◆ i8mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int8, defaultp > i8mat3x2
+
+ +

8 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_int3x2_sized
+ +

Definition at line 31 of file matrix_int3x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00824.html b/include/glm/doc/api/a00824.html new file mode 100644 index 0000000..9ed8104 --- /dev/null +++ b/include/glm/doc/api/a00824.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x3
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, int, defaultp > imat3
 Signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int, defaultp > imat3x3
 Signed integer 3x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat3

+ +
+
+ + + + +
typedef mat< 3, 3, int, defaultp > imat3
+
+ +

Signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_int3x3.hpp.

+ +
+
+ +

◆ imat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int, defaultp > imat3x3
+
+ +

Signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int3x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00825.html b/include/glm/doc/api/a00825.html new file mode 100644 index 0000000..3948422 --- /dev/null +++ b/include/glm/doc/api/a00825.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x3_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, int16, defaultp > i16mat3
 16 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int16, defaultp > i16mat3x3
 16 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int32, defaultp > i32mat3
 32 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int32, defaultp > i32mat3x3
 32 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int64, defaultp > i64mat3
 64 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int64, defaultp > i64mat3x3
 64 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int8, defaultp > i8mat3
 8 bit signed integer 3x3 matrix. More...
 
typedef mat< 3, 3, int8, defaultp > i8mat3x3
 8 bit signed integer 3x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat3

+ +
+
+ + + + +
typedef mat<3, 3, int16, defaultp> i16mat3
+
+ +

16 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 57 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i16mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int16, defaultp > i16mat3x3
+
+ +

16 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 36 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i32mat3

+ +
+
+ + + + +
typedef mat<3, 3, int32, defaultp> i32mat3
+
+ +

32 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 62 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int32, defaultp > i32mat3x3
+
+ +

32 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 41 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i64mat3

+ +
+
+ + + + +
typedef mat<3, 3, int64, defaultp> i64mat3
+
+ +

64 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 67 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int64, defaultp > i64mat3x3
+
+ +

64 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 46 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i8mat3

+ +
+
+ + + + +
typedef mat<3, 3, int8, defaultp> i8mat3
+
+ +

8 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 52 of file matrix_int3x3_sized.hpp.

+ +
+
+ +

◆ i8mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int8, defaultp > i8mat3x3
+
+ +

8 bit signed integer 3x3 matrix.

+
See also
GLM_EXT_matrix_int3x3_sized
+ +

Definition at line 31 of file matrix_int3x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00826.html b/include/glm/doc/api/a00826.html new file mode 100644 index 0000000..fd444e0 --- /dev/null +++ b/include/glm/doc/api/a00826.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x4
+
+
+ + + + + +

+Typedefs

typedef mat< 3, 4, int, defaultp > imat3x4
 Signed integer 3x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int, defaultp > imat3x4
+
+ +

Signed integer 3x4 matrix.

+
See also
GLM_EXT_matrix_int3x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int3x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00827.html b/include/glm/doc/api/a00827.html new file mode 100644 index 0000000..4f79245 --- /dev/null +++ b/include/glm/doc/api/a00827.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int3x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int3x4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 4, int16, defaultp > i16mat3x4
 16 bit signed integer 3x4 matrix. More...
 
typedef mat< 3, 4, int32, defaultp > i32mat3x4
 32 bit signed integer 3x4 matrix. More...
 
typedef mat< 3, 4, int64, defaultp > i64mat3x4
 64 bit signed integer 3x4 matrix. More...
 
typedef mat< 3, 4, int8, defaultp > i8mat3x4
 8 bit signed integer 3x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int3x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int16, defaultp > i16mat3x4
+
+ +

16 bit signed integer 3x4 matrix.

+
See also
GLM_EXT_matrix_int3x4_sized
+ +

Definition at line 36 of file matrix_int3x4_sized.hpp.

+ +
+
+ +

◆ i32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int32, defaultp > i32mat3x4
+
+ +

32 bit signed integer 3x4 matrix.

+
See also
GLM_EXT_matrix_int3x4_sized
+ +

Definition at line 41 of file matrix_int3x4_sized.hpp.

+ +
+
+ +

◆ i64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int64, defaultp > i64mat3x4
+
+ +

64 bit signed integer 3x4 matrix.

+
See also
GLM_EXT_matrix_int3x4_sized
+ +

Definition at line 46 of file matrix_int3x4_sized.hpp.

+ +
+
+ +

◆ i8mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int8, defaultp > i8mat3x4
+
+ +

8 bit signed integer 3x4 matrix.

+
See also
GLM_EXT_matrix_int3x4_sized
+ +

Definition at line 31 of file matrix_int3x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00828.html b/include/glm/doc/api/a00828.html new file mode 100644 index 0000000..94bed52 --- /dev/null +++ b/include/glm/doc/api/a00828.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x2
+
+
+ + + + + +

+Typedefs

typedef mat< 4, 2, int, defaultp > imat4x2
 Signed integer 4x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int, defaultp > imat4x2
+
+ +

Signed integer 4x2 matrix.

+
See also
GLM_EXT_matrix_int4x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int4x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00829.html b/include/glm/doc/api/a00829.html new file mode 100644 index 0000000..ae3f7b5 --- /dev/null +++ b/include/glm/doc/api/a00829.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 2, int16, defaultp > i16mat4x2
 16 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int32, defaultp > i32mat4x2
 32 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int64, defaultp > i64mat4x2
 64 bit signed integer 4x2 matrix. More...
 
typedef mat< 4, 2, int8, defaultp > i8mat4x2
 8 bit signed integer 4x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int16, defaultp > i16mat4x2
+
+ +

16 bit signed integer 4x2 matrix.

+
See also
GLM_EXT_matrix_int4x2_sized
+ +

Definition at line 36 of file matrix_int4x2_sized.hpp.

+ +
+
+ +

◆ i32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int32, defaultp > i32mat4x2
+
+ +

32 bit signed integer 4x2 matrix.

+
See also
GLM_EXT_matrix_int4x2_sized
+ +

Definition at line 41 of file matrix_int4x2_sized.hpp.

+ +
+
+ +

◆ i64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int64, defaultp > i64mat4x2
+
+ +

64 bit signed integer 4x2 matrix.

+
See also
GLM_EXT_matrix_int4x2_sized
+ +

Definition at line 46 of file matrix_int4x2_sized.hpp.

+ +
+
+ +

◆ i8mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int8, defaultp > i8mat4x2
+
+ +

8 bit signed integer 4x2 matrix.

+
See also
GLM_EXT_matrix_int4x2_sized
+ +

Definition at line 31 of file matrix_int4x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00830.html b/include/glm/doc/api/a00830.html new file mode 100644 index 0000000..b031f9d --- /dev/null +++ b/include/glm/doc/api/a00830.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x3
+
+
+ + + + + +

+Typedefs

typedef mat< 4, 3, int, defaultp > imat4x3
 Signed integer 4x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int, defaultp > imat4x3
+
+ +

Signed integer 4x3 matrix.

+
See also
GLM_EXT_matrix_int4x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int4x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00831.html b/include/glm/doc/api/a00831.html new file mode 100644 index 0000000..f4dd7cf --- /dev/null +++ b/include/glm/doc/api/a00831.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, int16, defaultp > i16mat4x3
 16 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int32, defaultp > i32mat4x3
 32 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int64, defaultp > i64mat4x3
 64 bit signed integer 4x3 matrix. More...
 
typedef mat< 4, 3, int8, defaultp > i8mat4x3
 8 bit signed integer 4x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int16, defaultp > i16mat4x3
+
+ +

16 bit signed integer 4x3 matrix.

+
See also
GLM_EXT_matrix_int4x3_sized
+ +

Definition at line 36 of file matrix_int4x3_sized.hpp.

+ +
+
+ +

◆ i32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int32, defaultp > i32mat4x3
+
+ +

32 bit signed integer 4x3 matrix.

+
See also
GLM_EXT_matrix_int4x3_sized
+ +

Definition at line 41 of file matrix_int4x3_sized.hpp.

+ +
+
+ +

◆ i64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int64, defaultp > i64mat4x3
+
+ +

64 bit signed integer 4x3 matrix.

+
See also
GLM_EXT_matrix_int4x3_sized
+ +

Definition at line 46 of file matrix_int4x3_sized.hpp.

+ +
+
+ +

◆ i8mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int8, defaultp > i8mat4x3
+
+ +

8 bit signed integer 4x3 matrix.

+
See also
GLM_EXT_matrix_int4x3_sized
+ +

Definition at line 31 of file matrix_int4x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00832.html b/include/glm/doc/api/a00832.html new file mode 100644 index 0000000..9996d1b --- /dev/null +++ b/include/glm/doc/api/a00832.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x4
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 4, 4, int, defaultp > imat4
 Signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int, defaultp > imat4x4
 Signed integer 4x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ imat4

+ +
+
+ + + + +
typedef mat< 4, 4, int, defaultp > imat4
+
+ +

Signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_int4x4.hpp.

+ +
+
+ +

◆ imat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int, defaultp > imat4x4
+
+ +

Signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_int4x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00833.html b/include/glm/doc/api/a00833.html new file mode 100644 index 0000000..2a93a4b --- /dev/null +++ b/include/glm/doc/api/a00833.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int4x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int4x4_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, int16, defaultp > i16mat4
 16 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int16, defaultp > i16mat4x4
 16 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int32, defaultp > i32mat4
 32 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int32, defaultp > i32mat4x4
 32 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int64, defaultp > i64mat4
 64 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int64, defaultp > i64mat4x4
 64 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int8, defaultp > i8mat4
 8 bit signed integer 4x4 matrix. More...
 
typedef mat< 4, 4, int8, defaultp > i8mat4x4
 8 bit signed integer 4x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_int4x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ i16mat4

+ +
+
+ + + + +
typedef mat<4, 4, int16, defaultp> i16mat4
+
+ +

16 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 57 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i16mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int16, defaultp > i16mat4x4
+
+ +

16 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 36 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i32mat4

+ +
+
+ + + + +
typedef mat<4, 4, int32, defaultp> i32mat4
+
+ +

32 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 62 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int32, defaultp > i32mat4x4
+
+ +

32 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 41 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i64mat4

+ +
+
+ + + + +
typedef mat<4, 4, int64, defaultp> i64mat4
+
+ +

64 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 67 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int64, defaultp > i64mat4x4
+
+ +

64 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 46 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i8mat4

+ +
+
+ + + + +
typedef mat<4, 4, int8, defaultp> i8mat4
+
+ +

8 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 52 of file matrix_int4x4_sized.hpp.

+ +
+
+ +

◆ i8mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int8, defaultp > i8mat4x4
+
+ +

8 bit signed integer 4x4 matrix.

+
See also
GLM_EXT_matrix_int4x4_sized
+ +

Definition at line 31 of file matrix_int4x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00834.html b/include/glm/doc/api/a00834.html new file mode 100644 index 0000000..9982b0a --- /dev/null +++ b/include/glm/doc/api/a00834.html @@ -0,0 +1,303 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_integer
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL T determinant (mat< C, R, T, Q > const &m)
 Return the determinant of a squared matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j]. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct (vec< C, T, Q > const &c, vec< R, T, Q > const &r)
 Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose (mat< C, R, T, Q > const &x)
 Returns the transposed matrix of x. More...
 
+

Detailed Description

+

Defines functions that generate common transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

Include <glm/ext/matrix_integer.hpp> to use the features of this extension.

+
See also
GLM_EXT_matrix_projection
+
+GLM_EXT_matrix_clip_space
+

Function Documentation

+ +

◆ determinant()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T determinant (mat< C, R, T, Q > const & m)
+
+ +

Return the determinant of a squared matrix.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL determinant man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL determinant man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +

◆ matrixCompMult()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
+
+ +

Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j].

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL matrixCompMult man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL matrixCompMult man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +

◆ outerProduct()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct (vec< C, T, Q > const & c,
vec< R, T, Q > const & r 
)
+
+ +

Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL outerProduct man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL outerProduct man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+ +

◆ transpose()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose (mat< C, R, T, Q > const & x)
+
+ +

Returns the transposed matrix of x.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+
See also
GLSL transpose man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL transpose man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00835.html b/include/glm/doc/api/a00835.html new file mode 100644 index 0000000..c5406ab --- /dev/null +++ b/include/glm/doc/api/a00835.html @@ -0,0 +1,537 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_projection + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_projection
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q, typename U >
GLM_FUNC_DECL mat< 4, 4, T, Q > pickMatrix (vec< 2, T, Q > const &center, vec< 2, T, Q > const &delta, vec< 4, U, Q > const &viewport)
 Define a picking region. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > project (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near and far clip planes definition. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > projectNO (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > projectZO (vec< 3, T, Q > const &obj, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProject (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near and far clip planes definition. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProjectNO (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates. More...
 
template<typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unProjectZO (vec< 3, T, Q > const &win, mat< 4, 4, T, Q > const &model, mat< 4, 4, T, Q > const &proj, vec< 4, U, Q > const &viewport)
 Map the specified window coordinates (win.x, win.y, win.z) into object coordinates. More...
 
+

Detailed Description

+

Functions that generate common projection transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

Include <glm/ext/matrix_projection.hpp> to use the features of this extension.

+
See also
GLM_EXT_matrix_transform
+
+GLM_EXT_matrix_clip_space
+

Function Documentation

+ +

◆ pickMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::pickMatrix (vec< 2, T, Q > const & center,
vec< 2, T, Q > const & delta,
vec< 4, U, Q > const & viewport 
)
+
+ +

Define a picking region.

+
Parameters
+ + + + +
centerSpecify the center of a picking region in window coordinates.
deltaSpecify the width and height, respectively, of the picking region in window coordinates.
viewportRendering viewport
+
+
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluPickMatrix man page
+ +
+
+ +

◆ project()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::project (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates using default near and far clip planes definition.

+

To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Parameters
+ + + + + +
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
+
+
+
Returns
Return the computed window coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluProject man page
+ +
+
+ +

◆ projectNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::projectNO (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
+
+
+
Returns
Return the computed window coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluProject man page
+ +
+
+ +

◆ projectZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::projectZO (vec< 3, T, Q > const & obj,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified object coordinates (obj.x, obj.y, obj.z) into window coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + +
objSpecify the object coordinates.
modelSpecifies the current modelview matrix
projSpecifies the current projection matrix
viewportSpecifies the current viewport
+
+
+
Returns
Return the computed window coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluProject man page
+ +
+
+ +

◆ unProject()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::unProject (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates using default near and far clip planes definition.

+

To change default near and far clip planes definition use GLM_FORCE_DEPTH_ZERO_TO_ONE.

+
Parameters
+ + + + + +
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
+
+
+
Returns
Returns the computed object coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluUnProject man page
+ +
+
+ +

◆ unProjectNO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::unProjectNO (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of -1 and +1 respectively. (OpenGL clip volume definition)

+
Parameters
+ + + + + +
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
+
+
+
Returns
Returns the computed object coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluUnProject man page
+ +
+
+ +

◆ unProjectZO()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::unProjectZO (vec< 3, T, Q > const & win,
mat< 4, 4, T, Q > const & model,
mat< 4, 4, T, Q > const & proj,
vec< 4, U, Q > const & viewport 
)
+
+ +

Map the specified window coordinates (win.x, win.y, win.z) into object coordinates.

+

The near and far clip planes correspond to z normalized device coordinates of 0 and +1 respectively. (Direct3D clip volume definition)

+
Parameters
+ + + + + +
winSpecify the window coordinates to be mapped.
modelSpecifies the modelview matrix
projSpecifies the projection matrix
viewportSpecifies the viewport
+
+
+
Returns
Returns the computed object coordinates.
+
Template Parameters
+ + + +
TNative type used for the computation. Currently supported: half (not recommended), float or double.
UCurrently supported: Floating-point types and integer types.
+
+
+
See also
gluUnProject man page
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00836.html b/include/glm/doc/api/a00836.html new file mode 100644 index 0000000..4dcb13a --- /dev/null +++ b/include/glm/doc/api/a00836.html @@ -0,0 +1,580 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_relational + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_relational
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Perform a component-wise equal-to comparison of two matrices. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > equal (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Perform a component-wise not-equal-to comparison of two matrices. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< C, bool, Q > notEqual (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+

Exposes comparison functions for matrix types that take a user defined epsilon values.

+

Include <glm/ext/matrix_relational.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_relational
+
+GLM_EXT_scalar_relational
+
+GLM_EXT_quaternion_relational
+

Function Documentation

+ +

◆ equal() [1/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
+
+ +

Perform a component-wise equal-to comparison of two matrices.

+

Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, int, Q > const & ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::equal (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, T, Q > const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [1/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y 
)
+
+ +

Perform a component-wise not-equal-to comparison of two matrices.

+

Return a boolean vector which components value is True if this expression is satisfied per column of the matrices.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, int, Q > const & ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<C, bool, Q> glm::notEqual (mat< C, R, T, Q > const & x,
mat< C, R, T, Q > const & y,
vec< C, T, Q > const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number of columns of the matrix
RInteger between 1 and 4 included that qualify the number of rows of the matrix
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00837.html b/include/glm/doc/api/a00837.html new file mode 100644 index 0000000..505c3ce --- /dev/null +++ b/include/glm/doc/api/a00837.html @@ -0,0 +1,525 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_transform + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_transform
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType identity ()
 Builds an identity matrix.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a look at view matrix based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a left handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a right handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from an axis vector and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a scale 4 * 4 matrix created from 3 scalars. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > shear (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &p, vec< 2, T, Q > const &l_x, vec< 2, T, Q > const &l_y, vec< 2, T, Q > const &l_z)
 Builds a scale 4 * 4 matrix created from point referent 3 shearers. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR mat< 4, 4, T, Q > translate (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a translation 4 * 4 matrix created from a vector of 3 components. More...
 
+

Detailed Description

+

Defines functions that generate common transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+

Include <glm/ext/matrix_transform.hpp> to use the features of this extension.

+
See also
GLM_EXT_matrix_projection
+
+GLM_EXT_matrix_clip_space
+

Function Documentation

+ +

◆ lookAt()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAt (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
+
+ +

Build a look at view matrix based on the default handedness.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
+
+gluLookAt man page
+ +
+
+ +

◆ lookAtLH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAtLH (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
+
+ +

Build a left handed look at view matrix.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
+ +
+
+ +

◆ lookAtRH()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::lookAtRH (vec< 3, T, Q > const & eye,
vec< 3, T, Q > const & center,
vec< 3, T, Q > const & up 
)
+
+ +

Build a right handed look at view matrix.

+
Parameters
+ + + + +
eyePosition of the camera
centerPosition where the camera is looking at
upNormalized up vector, how the camera is oriented. Typically (0, 0, 1)
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal) frustum(T const& left, T const& right, T const& bottom, T const& top, T const& nearVal, T const& farVal)
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotate (mat< 4, 4, T, Q > const & m,
angle,
vec< 3, T, Q > const & axis 
)
+
+ +

Builds a rotation 4 * 4 matrix created from an axis vector and an angle.

+
Parameters
+ + + + +
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians.
axisRotation axis, recommended to be normalized.
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)
+
+- rotate(T angle, vec<3, T, Q> const& v)
+
+glRotate man page
+ +
+
+ +

◆ scale()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scale (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & v 
)
+
+ +

Builds a scale 4 * 4 matrix created from 3 scalars.

+
Parameters
+ + + +
mInput matrix multiplied by this scale matrix.
vRatio of scaling for each axis.
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- scale(mat<4, 4, T, Q> const& m, T x, T y, T z)
+
+- scale(vec<3, T, Q> const& v)
+
+glScale man page
+ +
+
+ +

◆ shear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<4, 4, T, Q> glm::shear (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & p,
vec< 2, T, Q > const & l_x,
vec< 2, T, Q > const & l_y,
vec< 2, T, Q > const & l_z 
)
+
+ +

Builds a scale 4 * 4 matrix created from point referent 3 shearers.

+
Parameters
+ + + + + + +
mInput matrix multiplied by this shear matrix.
pPoint of shearing as reference.
l_xRatio of matrix.x projection in YZ plane relative to the y-axis/z-axis.
l_yRatio of matrix.y projection in XZ plane relative to the x-axis/z-axis.
l_zRatio of matrix.z projection in XY plane relative to the x-axis/y-axis.
+
+
+

as example: [1 , l_xy, l_xz, -(l_xy+l_xz) * p_x] [x] T [x, y, z, w] = [x, y, z, w] * [l_yx, 1 , l_yz, -(l_yx+l_yz) * p_y] [y] [l_zx, l_zy, 1 , -(l_zx+l_zy) * p_z] [z] [0 , 0 , 0 , 1 ] [w]

+
Template Parameters
+ + + +
TA floating-point shear type
QA value from qualifier enum
+
+
+
See also
- shear(mat<4, 4, T, Q> const& m, T x, T y, T z)
+
+- shear(vec<3, T, Q> const& p)
+
+- shear(vec<2, T, Q> const& l_x)
+
+- shear(vec<2, T, Q> const& l_y)
+
+- shear(vec<2, T, Q> const& l_z)
+
+no resource...
+ +
+
+ +

◆ translate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> glm::translate (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & v 
)
+
+ +

Builds a translation 4 * 4 matrix created from a vector of 3 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
#include <glm/glm.hpp>
+ +
...
+
glm::mat4 m = glm::translate(glm::mat4(1.0f), glm::vec3(1.0f));
+
// m[0][0] == 1.0f, m[0][1] == 0.0f, m[0][2] == 0.0f, m[0][3] == 0.0f
+
// m[1][0] == 0.0f, m[1][1] == 1.0f, m[1][2] == 0.0f, m[1][3] == 0.0f
+
// m[2][0] == 0.0f, m[2][1] == 0.0f, m[2][2] == 1.0f, m[2][3] == 0.0f
+
// m[3][0] == 1.0f, m[3][1] == 1.0f, m[3][2] == 1.0f, m[3][3] == 1.0f
+
See also
- translate(mat<4, 4, T, Q> const& m, T x, T y, T z)
+
+- translate(vec<3, T, Q> const& v)
+
+glTranslate man page
+ +
+
+
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
GLM_GTC_matrix_transform
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
GLM_FUNC_DECL GLM_CONSTEXPR mat< 4, 4, T, Q > translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a translation 4 * 4 matrix created from a vector of 3 components.
+ + + + diff --git a/include/glm/doc/api/a00838.html b/include/glm/doc/api/a00838.html new file mode 100644 index 0000000..41607d2 --- /dev/null +++ b/include/glm/doc/api/a00838.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint2x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint2x2
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 2, 2, uint, defaultp > umat2
 Unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, defaultp > umat2x2
 Unsigned integer 2x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat2

+ +
+
+ + + + +
typedef mat< 2, 2, uint, defaultp > umat2
+
+ +

Unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_uint2x2.hpp.

+ +
+
+ +

◆ umat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint, defaultp > umat2x2
+
+ +

Unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint2x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00839.html b/include/glm/doc/api/a00839.html new file mode 100644 index 0000000..e7b5efc --- /dev/null +++ b/include/glm/doc/api/a00839.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint2x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint2x2_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, uint16, defaultp > u16mat2
 16 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint16, defaultp > u16mat2x2
 16 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint32, defaultp > u32mat2
 32 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint32, defaultp > u32mat2x2
 32 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint64, defaultp > u64mat2
 64 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint64, defaultp > u64mat2x2
 64 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint8, defaultp > u8mat2
 8 bit unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint8, defaultp > u8mat2x2
 8 bit unsigned integer 2x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat2

+ +
+
+ + + + +
typedef mat<2, 2, uint16, defaultp> u16mat2
+
+ +

16 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 57 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u16mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint16, defaultp > u16mat2x2
+
+ +

16 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 36 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u32mat2

+ +
+
+ + + + +
typedef mat<2, 2, uint32, defaultp> u32mat2
+
+ +

32 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 62 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint32, defaultp > u32mat2x2
+
+ +

32 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 41 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u64mat2

+ +
+
+ + + + +
typedef mat<2, 2, uint64, defaultp> u64mat2
+
+ +

64 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 67 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint64, defaultp > u64mat2x2
+
+ +

64 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 46 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u8mat2

+ +
+
+ + + + +
typedef mat<2, 2, uint8, defaultp> u8mat2
+
+ +

8 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 52 of file matrix_uint2x2_sized.hpp.

+ +
+
+ +

◆ u8mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint8, defaultp > u8mat2x2
+
+ +

8 bit unsigned integer 2x2 matrix.

+
See also
GLM_EXT_matrix_uint2x2_sized
+ +

Definition at line 31 of file matrix_uint2x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00840.html b/include/glm/doc/api/a00840.html new file mode 100644 index 0000000..067d6f8 --- /dev/null +++ b/include/glm/doc/api/a00840.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint2x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint2x3
+
+
+ + + + + +

+Typedefs

typedef mat< 2, 3, uint, defaultp > umat2x3
 Unsigned integer 2x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint, defaultp > umat2x3
+
+ +

Unsigned integer 2x3 matrix.

+
See also
GLM_EXT_matrix_uint2x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint2x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00841.html b/include/glm/doc/api/a00841.html new file mode 100644 index 0000000..4b08c0a --- /dev/null +++ b/include/glm/doc/api/a00841.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint2x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint2x3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 3, uint16, defaultp > u16mat2x3
 16 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint32, defaultp > u32mat2x3
 32 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint64, defaultp > u64mat2x3
 64 bit unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 3, uint8, defaultp > u8mat2x3
 8 bit unsigned integer 2x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint16, defaultp > u16mat2x3
+
+ +

16 bit unsigned integer 2x3 matrix.

+
See also
GLM_EXT_matrix_uint2x3_sized
+ +

Definition at line 36 of file matrix_uint2x3_sized.hpp.

+ +
+
+ +

◆ u32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint32, defaultp > u32mat2x3
+
+ +

32 bit unsigned integer 2x3 matrix.

+
See also
GLM_EXT_matrix_uint2x3_sized
+ +

Definition at line 41 of file matrix_uint2x3_sized.hpp.

+ +
+
+ +

◆ u64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint64, defaultp > u64mat2x3
+
+ +

64 bit unsigned integer 2x3 matrix.

+
See also
GLM_EXT_matrix_uint2x3_sized
+ +

Definition at line 46 of file matrix_uint2x3_sized.hpp.

+ +
+
+ +

◆ u8mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint8, defaultp > u8mat2x3
+
+ +

8 bit unsigned integer 2x3 matrix.

+
See also
GLM_EXT_matrix_uint2x3_sized
+ +

Definition at line 31 of file matrix_uint2x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00842.html b/include/glm/doc/api/a00842.html new file mode 100644 index 0000000..8bee09a --- /dev/null +++ b/include/glm/doc/api/a00842.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_int2x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_int2x4
+
+
+ + + + + +

+Typedefs

typedef mat< 2, 4, uint, defaultp > umat2x4
 Unsigned integer 2x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint, defaultp > umat2x4
+
+ +

Unsigned integer 2x4 matrix.

+
See also
GLM_EXT_matrix_int2x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint2x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00843.html b/include/glm/doc/api/a00843.html new file mode 100644 index 0000000..24c92fa --- /dev/null +++ b/include/glm/doc/api/a00843.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint2x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint2x4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 4, uint16, defaultp > u16mat2x4
 16 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint32, defaultp > u32mat2x4
 32 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint64, defaultp > u64mat2x4
 64 bit unsigned integer 2x4 matrix. More...
 
typedef mat< 2, 4, uint8, defaultp > u8mat2x4
 8 bit unsigned integer 2x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint2x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint16, defaultp > u16mat2x4
+
+ +

16 bit unsigned integer 2x4 matrix.

+
See also
GLM_EXT_matrix_uint2x4_sized
+ +

Definition at line 36 of file matrix_uint2x4_sized.hpp.

+ +
+
+ +

◆ u32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint32, defaultp > u32mat2x4
+
+ +

32 bit unsigned integer 2x4 matrix.

+
See also
GLM_EXT_matrix_uint2x4_sized
+ +

Definition at line 41 of file matrix_uint2x4_sized.hpp.

+ +
+
+ +

◆ u64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint64, defaultp > u64mat2x4
+
+ +

64 bit unsigned integer 2x4 matrix.

+
See also
GLM_EXT_matrix_uint2x4_sized
+ +

Definition at line 46 of file matrix_uint2x4_sized.hpp.

+ +
+
+ +

◆ u8mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint8, defaultp > u8mat2x4
+
+ +

8 bit unsigned integer 2x4 matrix.

+
See also
GLM_EXT_matrix_uint2x4_sized
+ +

Definition at line 31 of file matrix_uint2x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00844.html b/include/glm/doc/api/a00844.html new file mode 100644 index 0000000..5aa43ca --- /dev/null +++ b/include/glm/doc/api/a00844.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x2
+
+
+ + + + + +

+Typedefs

typedef mat< 3, 2, uint, defaultp > umat3x2
 Unsigned integer 3x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint, defaultp > umat3x2
+
+ +

Unsigned integer 3x2 matrix.

+
See also
GLM_EXT_matrix_uint3x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint3x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00845.html b/include/glm/doc/api/a00845.html new file mode 100644 index 0000000..bcc9f67 --- /dev/null +++ b/include/glm/doc/api/a00845.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 2, uint16, defaultp > u16mat3x2
 16 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint32, defaultp > u32mat3x2
 32 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint64, defaultp > u64mat3x2
 64 bit signed integer 3x2 matrix. More...
 
typedef mat< 3, 2, uint8, defaultp > u8mat3x2
 8 bit signed integer 3x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint16, defaultp > u16mat3x2
+
+ +

16 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_uint3x2_sized
+ +

Definition at line 36 of file matrix_uint3x2_sized.hpp.

+ +
+
+ +

◆ u32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint32, defaultp > u32mat3x2
+
+ +

32 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_uint3x2_sized
+ +

Definition at line 41 of file matrix_uint3x2_sized.hpp.

+ +
+
+ +

◆ u64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint64, defaultp > u64mat3x2
+
+ +

64 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_uint3x2_sized
+ +

Definition at line 46 of file matrix_uint3x2_sized.hpp.

+ +
+
+ +

◆ u8mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint8, defaultp > u8mat3x2
+
+ +

8 bit signed integer 3x2 matrix.

+
See also
GLM_EXT_matrix_uint3x2_sized
+ +

Definition at line 31 of file matrix_uint3x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00846.html b/include/glm/doc/api/a00846.html new file mode 100644 index 0000000..790bb98 --- /dev/null +++ b/include/glm/doc/api/a00846.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x3
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 3, 3, uint, defaultp > umat3
 Unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint, defaultp > umat3x3
 Unsigned integer 3x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat3

+ +
+
+ + + + +
typedef mat< 3, 3, uint, defaultp > umat3
+
+ +

Unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_uint3x3.hpp.

+ +
+
+ +

◆ umat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint, defaultp > umat3x3
+
+ +

Unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint3x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00847.html b/include/glm/doc/api/a00847.html new file mode 100644 index 0000000..2cfbaad --- /dev/null +++ b/include/glm/doc/api/a00847.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x3_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 3, uint16, defaultp > u16mat3
 16 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint16, defaultp > u16mat3x3
 16 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint32, defaultp > u32mat3
 32 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint32, defaultp > u32mat3x3
 32 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint64, defaultp > u64mat3
 64 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint64, defaultp > u64mat3x3
 64 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint8, defaultp > u8mat3
 8 bit unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 3, uint8, defaultp > u8mat3x3
 8 bit unsigned integer 3x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat3

+ +
+
+ + + + +
typedef mat<3, 3, uint16, defaultp> u16mat3
+
+ +

16 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 57 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u16mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint16, defaultp > u16mat3x3
+
+ +

16 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 36 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u32mat3

+ +
+
+ + + + +
typedef mat<3, 3, uint32, defaultp> u32mat3
+
+ +

32 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 62 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint32, defaultp > u32mat3x3
+
+ +

32 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 41 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u64mat3

+ +
+
+ + + + +
typedef mat<3, 3, uint64, defaultp> u64mat3
+
+ +

64 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 67 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint64, defaultp > u64mat3x3
+
+ +

64 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 46 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u8mat3

+ +
+
+ + + + +
typedef mat<3, 3, uint8, defaultp> u8mat3
+
+ +

8 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 52 of file matrix_uint3x3_sized.hpp.

+ +
+
+ +

◆ u8mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint8, defaultp > u8mat3x3
+
+ +

8 bit unsigned integer 3x3 matrix.

+
See also
GLM_EXT_matrix_uint3x3_sized
+ +

Definition at line 31 of file matrix_uint3x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00848.html b/include/glm/doc/api/a00848.html new file mode 100644 index 0000000..98695dd --- /dev/null +++ b/include/glm/doc/api/a00848.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x4
+
+
+ + + + + +

+Typedefs

typedef mat< 3, 4, uint, defaultp > umat3x4
 Signed integer 3x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint, defaultp > umat3x4
+
+ +

Signed integer 3x4 matrix.

+

Unsigned integer 3x4 matrix.

+
See also
GLM_EXT_matrix_uint3x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint3x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00849.html b/include/glm/doc/api/a00849.html new file mode 100644 index 0000000..62fce1c --- /dev/null +++ b/include/glm/doc/api/a00849.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint3x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint3x4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 3, 4, uint16, defaultp > u16mat3x4
 16 bit unsigned integer 3x4 matrix. More...
 
typedef mat< 3, 4, uint32, defaultp > u32mat3x4
 32 bit unsigned integer 3x4 matrix. More...
 
typedef mat< 3, 4, uint64, defaultp > u64mat3x4
 64 bit unsigned integer 3x4 matrix. More...
 
typedef mat< 3, 4, uint8, defaultp > u8mat3x4
 8 bit unsigned integer 3x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint3x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint16, defaultp > u16mat3x4
+
+ +

16 bit unsigned integer 3x4 matrix.

+
See also
GLM_EXT_matrix_uint3x4_sized
+ +

Definition at line 36 of file matrix_uint3x4_sized.hpp.

+ +
+
+ +

◆ u32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint32, defaultp > u32mat3x4
+
+ +

32 bit unsigned integer 3x4 matrix.

+
See also
GLM_EXT_matrix_uint3x4_sized
+ +

Definition at line 41 of file matrix_uint3x4_sized.hpp.

+ +
+
+ +

◆ u64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint64, defaultp > u64mat3x4
+
+ +

64 bit unsigned integer 3x4 matrix.

+
See also
GLM_EXT_matrix_uint3x4_sized
+ +

Definition at line 46 of file matrix_uint3x4_sized.hpp.

+ +
+
+ +

◆ u8mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint8, defaultp > u8mat3x4
+
+ +

8 bit unsigned integer 3x4 matrix.

+
See also
GLM_EXT_matrix_uint3x4_sized
+ +

Definition at line 31 of file matrix_uint3x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00850.html b/include/glm/doc/api/a00850.html new file mode 100644 index 0000000..45ae65d --- /dev/null +++ b/include/glm/doc/api/a00850.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x2
+
+
+ + + + + +

+Typedefs

typedef mat< 4, 2, uint, defaultp > umat4x2
 Unsigned integer 4x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x2.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint, defaultp > umat4x2
+
+ +

Unsigned integer 4x2 matrix.

+
See also
GLM_EXT_matrix_uint4x2
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint4x2.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00851.html b/include/glm/doc/api/a00851.html new file mode 100644 index 0000000..f1103cf --- /dev/null +++ b/include/glm/doc/api/a00851.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 2, uint16, defaultp > u16mat4x2
 16 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint32, defaultp > u32mat4x2
 32 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint64, defaultp > u64mat4x2
 64 bit unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 2, uint8, defaultp > u8mat4x2
 8 bit unsigned integer 4x2 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x2_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint16, defaultp > u16mat4x2
+
+ +

16 bit unsigned integer 4x2 matrix.

+
See also
GLM_EXT_matrix_uint4x2_sized
+ +

Definition at line 36 of file matrix_uint4x2_sized.hpp.

+ +
+
+ +

◆ u32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint32, defaultp > u32mat4x2
+
+ +

32 bit unsigned integer 4x2 matrix.

+
See also
GLM_EXT_matrix_uint4x2_sized
+ +

Definition at line 41 of file matrix_uint4x2_sized.hpp.

+ +
+
+ +

◆ u64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint64, defaultp > u64mat4x2
+
+ +

64 bit unsigned integer 4x2 matrix.

+
See also
GLM_EXT_matrix_uint4x2_sized
+ +

Definition at line 46 of file matrix_uint4x2_sized.hpp.

+ +
+
+ +

◆ u8mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint8, defaultp > u8mat4x2
+
+ +

8 bit unsigned integer 4x2 matrix.

+
See also
GLM_EXT_matrix_uint4x2_sized
+ +

Definition at line 31 of file matrix_uint4x2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00852.html b/include/glm/doc/api/a00852.html new file mode 100644 index 0000000..42403f8 --- /dev/null +++ b/include/glm/doc/api/a00852.html @@ -0,0 +1,111 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x3 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x3
+
+
+ + + + + +

+Typedefs

typedef mat< 4, 3, uint, defaultp > umat4x3
 Unsigned integer 4x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x3.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint, defaultp > umat4x3
+
+ +

Unsigned integer 4x3 matrix.

+
See also
GLM_EXT_matrix_uint4x3
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint4x3.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00853.html b/include/glm/doc/api/a00853.html new file mode 100644 index 0000000..11ff6d0 --- /dev/null +++ b/include/glm/doc/api/a00853.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 3, uint16, defaultp > u16mat4x3
 16 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint32, defaultp > u32mat4x3
 32 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint64, defaultp > u64mat4x3
 64 bit unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 3, uint8, defaultp > u8mat4x3
 8 bit unsigned integer 4x3 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x3_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint16, defaultp > u16mat4x3
+
+ +

16 bit unsigned integer 4x3 matrix.

+
See also
GLM_EXT_matrix_uint4x3_sized
+ +

Definition at line 36 of file matrix_uint4x3_sized.hpp.

+ +
+
+ +

◆ u32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint32, defaultp > u32mat4x3
+
+ +

32 bit unsigned integer 4x3 matrix.

+
See also
GLM_EXT_matrix_uint4x3_sized
+ +

Definition at line 41 of file matrix_uint4x3_sized.hpp.

+ +
+
+ +

◆ u64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint64, defaultp > u64mat4x3
+
+ +

64 bit unsigned integer 4x3 matrix.

+
See also
GLM_EXT_matrix_uint4x3_sized
+ +

Definition at line 46 of file matrix_uint4x3_sized.hpp.

+ +
+
+ +

◆ u8mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint8, defaultp > u8mat4x3
+
+ +

8 bit unsigned integer 4x3 matrix.

+
See also
GLM_EXT_matrix_uint4x3_sized
+ +

Definition at line 31 of file matrix_uint4x3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00854.html b/include/glm/doc/api/a00854.html new file mode 100644 index 0000000..0aeef62 --- /dev/null +++ b/include/glm/doc/api/a00854.html @@ -0,0 +1,135 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x4 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x4
+
+
+ + + + + + + + +

+Typedefs

typedef mat< 4, 4, uint, defaultp > umat4
 Unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint, defaultp > umat4x4
 Unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x4.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ umat4

+ +
+
+ + + + +
typedef mat< 4, 4, uint, defaultp > umat4
+
+ +

Unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 35 of file matrix_uint4x4.hpp.

+ +
+
+ +

◆ umat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint, defaultp > umat4x4
+
+ +

Unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4
+
+GLM_GTC_matrix_integer
+ +

Definition at line 30 of file matrix_uint4x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00855.html b/include/glm/doc/api/a00855.html new file mode 100644 index 0000000..78b127c --- /dev/null +++ b/include/glm/doc/api/a00855.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_matrix_uint4x4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_matrix_uint4x4_sized
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 4, 4, uint16, defaultp > u16mat4
 16 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint16, defaultp > u16mat4x4
 16 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint32, defaultp > u32mat4
 32 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint32, defaultp > u32mat4x4
 32 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint64, defaultp > u64mat4
 64 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint64, defaultp > u64mat4x4
 64 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint8, defaultp > u8mat4
 8 bit unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 4, uint8, defaultp > u8mat4x4
 8 bit unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

Include <glm/ext/matrix_uint4x4_sized.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ u16mat4

+ +
+
+ + + + +
typedef mat<4, 4, uint16, defaultp> u16mat4
+
+ +

16 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 57 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u16mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint16, defaultp > u16mat4x4
+
+ +

16 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 36 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u32mat4

+ +
+
+ + + + +
typedef mat<4, 4, uint32, defaultp> u32mat4
+
+ +

32 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 62 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint32, defaultp > u32mat4x4
+
+ +

32 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 41 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u64mat4

+ +
+
+ + + + +
typedef mat<4, 4, uint64, defaultp> u64mat4
+
+ +

64 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 67 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint64, defaultp > u64mat4x4
+
+ +

64 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 46 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u8mat4

+ +
+
+ + + + +
typedef mat<4, 4, uint8, defaultp> u8mat4
+
+ +

8 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 52 of file matrix_uint4x4_sized.hpp.

+ +
+
+ +

◆ u8mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint8, defaultp > u8mat4x4
+
+ +

8 bit unsigned integer 4x4 matrix.

+
See also
GLM_EXT_matrix_uint4x4_sized
+ +

Definition at line 31 of file matrix_uint4x4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00856.html b/include/glm/doc/api/a00856.html new file mode 100644 index 0000000..5de2575 --- /dev/null +++ b/include/glm/doc/api/a00856.html @@ -0,0 +1,464 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_common + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_common
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > conjugate (qua< T, Q > const &q)
 Returns the q conjugate. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > inverse (qua< T, Q > const &q)
 Returns the q inverse. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isinf (qua< T, Q > const &x)
 Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isnan (qua< T, Q > const &x)
 Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > lerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Linear interpolation of two quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > mix (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Spherical linear interpolation of two quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a)
 Spherical linear interpolation of two quaternions. More...
 
template<typename T , typename S , qualifier Q>
GLM_FUNC_DECL qua< T, Q > slerp (qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)
 Spherical linear interpolation of two quaternions with multiple spins over rotation axis. More...
 
+

Detailed Description

+

Provides common functions for quaternion types

+

Include <glm/ext/quaternion_common.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_common
+
+GLM_EXT_vector_common
+
+GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+
+GLM_EXT_quaternion_exponential
+
+GLM_EXT_quaternion_geometric
+
+GLM_EXT_quaternion_relational
+
+GLM_EXT_quaternion_trigonometric
+
+GLM_EXT_quaternion_transform
+

Function Documentation

+ +

◆ conjugate()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::conjugate (qua< T, Q > const & q)
+
+ +

Returns the q conjugate.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ inverse()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::inverse (qua< T, Q > const & q)
+
+ +

Returns the q inverse.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ isinf()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::isinf (qua< T, Q > const & x)
+
+ +

Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no infinity representations.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ isnan()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::isnan (qua< T, Q > const & x)
+
+ +

Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations.

+

Returns false otherwise, including for implementations with no NaN representations.

+

/!\ When using compiler fast math, this function may fail.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ lerp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::lerp (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
+
+ +

Linear interpolation of two quaternions.

+

The interpolation is oriented.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined in the range [0, 1].
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ mix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::mix (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
+
+ +

Spherical linear interpolation of two quaternions.

+

The interpolation is oriented and the rotation is performed at constant speed. For short path spherical linear interpolation, use the slerp function.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+
See also
- slerp(qua<T, Q> const& x, qua<T, Q> const& y, T const& a)
+ +
+
+ +

◆ slerp() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::slerp (qua< T, Q > const & x,
qua< T, Q > const & y,
a 
)
+
+ +

Spherical linear interpolation of two quaternions.

+

The interpolation always take the short path and the rotation is performed at constant speed.

+
Parameters
+ + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ slerp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::slerp (qua< T, Q > const & x,
qua< T, Q > const & y,
a,
k 
)
+
+ +

Spherical linear interpolation of two quaternions with multiple spins over rotation axis.

+

The interpolation always take the short path when the spin count is positive and long path when count is negative. Rotation is performed at constant speed.

+
Parameters
+ + + + + +
xA quaternion
yA quaternion
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
kAdditional spin count. If Value is negative interpolation will be on "long" path.
+
+
+
Template Parameters
+ + + + +
TA floating-point scalar type
SAn integer scalar type
QA value from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00857.html b/include/glm/doc/api/a00857.html new file mode 100644 index 0000000..ad0e1c6 --- /dev/null +++ b/include/glm/doc/api/a00857.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_double + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_double
+
+
+ + + + + +

+Typedefs

+typedef qua< double, defaultp > dquat
 Quaternion of double-precision floating-point numbers.
 
+

Detailed Description

+

Exposes double-precision floating point quaternion type.

+

Include <glm/ext/quaternion_double.hpp> to use the features of this extension.

+
See also
GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double_precision
+
+GLM_EXT_quaternion_common
+
+GLM_EXT_quaternion_exponential
+
+GLM_EXT_quaternion_geometric
+
+GLM_EXT_quaternion_relational
+
+GLM_EXT_quaternion_transform
+
+GLM_EXT_quaternion_trigonometric
+
+ + + + diff --git a/include/glm/doc/api/a00858.html b/include/glm/doc/api/a00858.html new file mode 100644 index 0000000..f4e10b2 --- /dev/null +++ b/include/glm/doc/api/a00858.html @@ -0,0 +1,153 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_double_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_double_precision
+
+
+ + + + + + + + + + + +

+Typedefs

typedef qua< double, highp > highp_dquat
 Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef qua< double, lowp > lowp_dquat
 Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef qua< double, mediump > mediump_dquat
 Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+

Exposes double-precision floating point quaternion type with various precision in term of ULPs.

+

Include <glm/ext/quaternion_double_precision.hpp> to use the features of this extension.

+

Typedef Documentation

+ +

◆ highp_dquat

+ +
+
+ + + + +
typedef qua< double, highp > highp_dquat
+
+ +

Quaternion of high double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLM_EXT_quaternion_double_precision
+ +

Definition at line 38 of file quaternion_double_precision.hpp.

+ +
+
+ +

◆ lowp_dquat

+ +
+
+ + + + +
typedef qua< double, lowp > lowp_dquat
+
+ +

Quaternion of double-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLM_EXT_quaternion_double_precision
+ +

Definition at line 28 of file quaternion_double_precision.hpp.

+ +
+
+ +

◆ mediump_dquat

+ +
+
+ + + + +
typedef qua< double, mediump > mediump_dquat
+
+ +

Quaternion of medium double-qualifier floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLM_EXT_quaternion_double_precision
+ +

Definition at line 33 of file quaternion_double_precision.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00859.html b/include/glm/doc/api/a00859.html new file mode 100644 index 0000000..3b0b555 --- /dev/null +++ b/include/glm/doc/api/a00859.html @@ -0,0 +1,84 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_exponential + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_EXT_quaternion_exponential
+
+
+

Provides exponential functions for quaternion types

+

Include <glm/ext/quaternion_exponential.hpp> to use the features of this extension.

+
See also
core_exponential
+
+GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+
+ + + + diff --git a/include/glm/doc/api/a00860.html b/include/glm/doc/api/a00860.html new file mode 100644 index 0000000..a4f1e85 --- /dev/null +++ b/include/glm/doc/api/a00860.html @@ -0,0 +1,105 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_float + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_float
+
+
+ + + + + +

+Typedefs

+typedef qua< float, defaultp > quat
 Quaternion of single-precision floating-point numbers.
 
+

Detailed Description

+

Exposes single-precision floating point quaternion type.

+

Include <glm/ext/quaternion_float.hpp> to use the features of this extension.

+
See also
GLM_EXT_quaternion_double
+
+GLM_EXT_quaternion_float_precision
+
+GLM_EXT_quaternion_common
+
+GLM_EXT_quaternion_exponential
+
+GLM_EXT_quaternion_geometric
+
+GLM_EXT_quaternion_relational
+
+GLM_EXT_quaternion_transform
+
+GLM_EXT_quaternion_trigonometric
+
+ + + + diff --git a/include/glm/doc/api/a00861.html b/include/glm/doc/api/a00861.html new file mode 100644 index 0000000..06ec512 --- /dev/null +++ b/include/glm/doc/api/a00861.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_float_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_float_precision
+
+
+ + + + + + + + + + + +

+Typedefs

+typedef qua< float, highp > highp_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, lowp > lowp_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, mediump > mediump_quat
 Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+

Detailed Description

+

Exposes single-precision floating point quaternion type with various precision in term of ULPs.

+

Include <glm/ext/quaternion_float_precision.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00862.html b/include/glm/doc/api/a00862.html new file mode 100644 index 0000000..93318e8 --- /dev/null +++ b/include/glm/doc/api/a00862.html @@ -0,0 +1,240 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_geometric + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_geometric
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua< T, Q > cross (qua< T, Q > const &q1, qua< T, Q > const &q2)
 Compute a cross product. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T dot (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ... More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T length (qua< T, Q > const &q)
 Returns the norm of a quaternions. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > normalize (qua< T, Q > const &q)
 Returns the normalized quaternion. More...
 
+

Detailed Description

+

Provides geometric functions for quaternion types

+

Include <glm/ext/quaternion_geometric.hpp> to use the features of this extension.

+
See also
Geometric functions
+
+GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+

Function Documentation

+ +

◆ cross()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER GLM_CONSTEXPR qua<T, Q> glm::cross (qua< T, Q > const & q1,
qua< T, Q > const & q2 
)
+
+ +

Compute a cross product.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_geometric
+ +
+
+ +

◆ dot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR T glm::dot (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns dot product of q1 and q2, i.e., q1[0] * q2[0] + q1[1] * q2[1] + ...

+
Template Parameters
+ + + +
TFloating-point scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_geometric
+ +
+
+ +

◆ length()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length (qua< T, Q > const & q)
+
+ +

Returns the norm of a quaternions.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_geometric
+ +
+
+ +

◆ normalize()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::normalize (qua< T, Q > const & q)
+
+ +

Returns the normalized quaternion.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_geometric
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00863.html b/include/glm/doc/api/a00863.html new file mode 100644 index 0000000..17a9f56 --- /dev/null +++ b/include/glm/doc/api/a00863.html @@ -0,0 +1,272 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_relational + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_relational
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > equal (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x == y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > equal (qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > notEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x != y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > notEqual (qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+

Exposes comparison functions for quaternion types that take a user defined epsilon values.

+

Include <glm/ext/quaternion_relational.hpp> to use the features of this extension.

+
See also
core_vector_relational
+
+GLM_EXT_vector_relational
+
+GLM_EXT_matrix_relational
+
+GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+

Function Documentation

+ +

◆ equal() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::equal (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x == y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::equal (qua< T, Q > const & x,
qua< T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::notEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x != y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, bool, Q> glm::notEqual (qua< T, Q > const & x,
qua< T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00864.html b/include/glm/doc/api/a00864.html new file mode 100644 index 0000000..d531c7d --- /dev/null +++ b/include/glm/doc/api/a00864.html @@ -0,0 +1,287 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_transform + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_transform
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > exp (qua< T, Q > const &q)
 Returns a exponential of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > log (qua< T, Q > const &q)
 Returns a logarithm of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > pow (qua< T, Q > const &q, T y)
 Returns a quaternion raised to a power. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotate (qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
 Rotates a quaternion from a vector of 3 components axis and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > sqrt (qua< T, Q > const &q)
 Returns the square root of a quaternion. More...
 
+

Detailed Description

+

Provides transformation functions for quaternion types

+

Include <glm/ext/quaternion_transform.hpp> to use the features of this extension.

+
See also
GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+
+GLM_EXT_quaternion_exponential
+
+GLM_EXT_quaternion_geometric
+
+GLM_EXT_quaternion_relational
+
+GLM_EXT_quaternion_trigonometric
+

Function Documentation

+ +

◆ exp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::exp (qua< T, Q > const & q)
+
+ +

Returns a exponential of a quaternion.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ log()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::log (qua< T, Q > const & q)
+
+ +

Returns a logarithm of a quaternion.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ pow()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::pow (qua< T, Q > const & q,
y 
)
+
+ +

Returns a quaternion raised to a power.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::rotate (qua< T, Q > const & q,
T const & angle,
vec< 3, T, Q > const & axis 
)
+
+ +

Rotates a quaternion from a vector of 3 components axis and an angle.

+
Parameters
+ + + + +
qSource orientation
angleAngle expressed in radians.
axisAxis of the rotation
+
+
+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ sqrt()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::sqrt (qua< T, Q > const & q)
+
+ +

Returns the square root of a quaternion.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00865.html b/include/glm/doc/api/a00865.html new file mode 100644 index 0000000..95c2624 --- /dev/null +++ b/include/glm/doc/api/a00865.html @@ -0,0 +1,214 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_quaternion_trigonometric + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_quaternion_trigonometric
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL T angle (qua< T, Q > const &x)
 Returns the quaternion rotation angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > angleAxis (T const &angle, vec< 3, T, Q > const &axis)
 Build a quaternion from an angle and a normalized axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > axis (qua< T, Q > const &x)
 Returns the q rotation axis. More...
 
+

Detailed Description

+

Provides trigonometric functions for quaternion types

+

Include <glm/ext/quaternion_trigonometric.hpp> to use the features of this extension.

+
See also
GLM_EXT_quaternion_float
+
+GLM_EXT_quaternion_double
+
+GLM_EXT_quaternion_exponential
+
+GLM_EXT_quaternion_geometric
+
+GLM_EXT_quaternion_relational
+
+GLM_EXT_quaternion_transform
+

Function Documentation

+ +

◆ angle()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::angle (qua< T, Q > const & x)
+
+ +

Returns the quaternion rotation angle.

+
Parameters
+ + +
xA normalized quaternion.
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ angleAxis()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::angleAxis (T const & angle,
vec< 3, T, Q > const & axis 
)
+
+ +

Build a quaternion from an angle and a normalized axis.

+
Parameters
+ + + +
angleAngle expressed in radians.
axisAxis of the quaternion, must be normalized.
+
+
+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+ +

◆ axis()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::axis (qua< T, Q > const & x)
+
+ +

Returns the q rotation axis.

+
Template Parameters
+ + + +
TA floating-point scalar type
QA value from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00866.html b/include/glm/doc/api/a00866.html new file mode 100644 index 0000000..0a98167 --- /dev/null +++ b/include/glm/doc/api/a00866.html @@ -0,0 +1,842 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_common + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_common
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType clamp (genType const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType fclamp (genType x, genType minVal, genType maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b)
 Returns the maximum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b, T C)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmax (T a, T b, T C, T D)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b)
 Returns the minimum component-wise values of 2 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() fmin (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename genType >
GLM_FUNC_DECL int iround (genType const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<typename T >
GLM_FUNC_DECL T() max (T a, T b, T c)
 Returns the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() max (T a, T b, T c, T d)
 Returns the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() min (T a, T b, T c)
 Returns the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T() min (T a, T b, T c, T d)
 Returns the minimum component-wise values of 4 inputs. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorClamp (genType const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType mirrorRepeat (genType const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL genType repeat (genType const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
template<typename genType >
GLM_FUNC_DECL uint uround (genType const &x)
 Returns a value equal to the nearest integer to x. More...
 
+

Detailed Description

+

Exposes min and max functions for 3 to 4 scalar parameters.

+

Include <glm/ext/scalar_common.hpp> to use the features of this extension.

+
See also
Common functions
+
+GLM_EXT_vector_common
+

Function Documentation

+ +

◆ clamp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::clamp (genType const & Texcoord)
+
+ +

Simulate GL_CLAMP OpenGL wrap mode.

+
Template Parameters
+ + +
genTypeFloating-point scalar types.
+
+
+
See also
GLM_EXT_scalar_common extension.
+ +
+
+ +

◆ fclamp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fclamp (genType x,
genType minVal,
genType maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
genTypeFloating-point scalar types.
+
+
+
See also
GLM_EXT_scalar_common
+ +
+
+ +

◆ fmax() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmax (a,
b 
)
+
+ +

Returns the maximum component-wise values of 2 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmax documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ fmax() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmax (a,
b,
C 
)
+
+ +

Returns the maximum component-wise values of 3 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmax documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ fmax() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmax (a,
b,
C,
D 
)
+
+ +

Returns the maximum component-wise values of 4 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmax documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ fmin() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmin (a,
b 
)
+
+ +

Returns the minimum component-wise values of 2 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmin documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ fmin() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmin (a,
b,
c 
)
+
+ +

Returns the minimum component-wise values of 3 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmin documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ fmin() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::fmin (a,
b,
c,
d 
)
+
+ +

Returns the minimum component-wise values of 4 inputs.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
std::fmin documentation
+
+GLM_EXT_scalar_common
+ +
+
+ +

◆ iround()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::iround (genType 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.

+
Parameters
+ + +
xThe values of the argument must be greater or equal to zero.
+
+
+
Template Parameters
+ + +
genTypefloating point scalar types.
+
+
+
See also
GLSL round man page
+
+GLM_EXT_scalar_common extension.
+ +
+
+ +

◆ max() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::max (a,
b,
c 
)
+
+ +

Returns the maximum component-wise values of 3 inputs.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_common
+ +
+
+ +

◆ max() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::max (a,
b,
c,
d 
)
+
+ +

Returns the maximum component-wise values of 4 inputs.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_common
+ +
+
+ +

◆ min() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::min (a,
b,
c 
)
+
+ +

Returns the minimum component-wise values of 3 inputs.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_common
+ +
+
+ +

◆ min() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T() glm::min (a,
b,
c,
d 
)
+
+ +

Returns the minimum component-wise values of 4 inputs.

+
Template Parameters
+ + +
TA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_common
+ +
+
+ +

◆ mirrorClamp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::mirrorClamp (genType const & Texcoord)
+
+ +

Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + +
genTypeFloating-point scalar types.
+
+
+
See also
GLM_EXT_scalar_common extension.
+ +
+
+ +

◆ mirrorRepeat()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::mirrorRepeat (genType const & Texcoord)
+
+ +

Simulate GL_MIRROR_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + +
genTypeFloating-point scalar types.
+
+
+
See also
GLM_EXT_scalar_common extension.
+ +
+
+ +

◆ repeat()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::repeat (genType const & Texcoord)
+
+ +

Simulate GL_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + +
genTypeFloating-point scalar types.
+
+
+
See also
GLM_EXT_scalar_common extension.
+ +
+
+ +

◆ uround()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::uround (genType 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.

+
Parameters
+ + +
xThe values of the argument must be greater or equal to zero.
+
+
+
Template Parameters
+ + +
genTypefloating point scalar types.
+
+
+
See also
GLSL round man page
+
+GLM_EXT_scalar_common extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00867.html b/include/glm/doc/api/a00867.html new file mode 100644 index 0000000..57df805 --- /dev/null +++ b/include/glm/doc/api/a00867.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_constants + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_constants
+
+
+ + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two ()
 Return the value of cos(1 / 2) for floating point types.
 
+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon ()
 Return the epsilon constant for floating point types.
 
+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType pi ()
 Return the pi constant for floating point types.
 
+

Detailed Description

+

Provides a list of constants and precomputed useful values.

+

Include <glm/ext/scalar_constants.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00868.html b/include/glm/doc/api/a00868.html new file mode 100644 index 0000000..5967480 --- /dev/null +++ b/include/glm/doc/api/a00868.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_int_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_int_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

+typedef detail::int16 int16
 16 bit signed integer type.
 
+typedef detail::int32 int32
 32 bit signed integer type.
 
+typedef detail::int64 int64
 64 bit signed integer type.
 
+typedef detail::int8 int8
 8 bit signed integer type.
 
+

Detailed Description

+

Exposes sized signed integer scalar types.

+

Include <glm/ext/scalar_int_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_uint_sized
+
+ + + + diff --git a/include/glm/doc/api/a00869.html b/include/glm/doc/api/a00869.html new file mode 100644 index 0000000..6ad9b9c --- /dev/null +++ b/include/glm/doc/api/a00869.html @@ -0,0 +1,334 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_integer
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL int findNSB (genIUType x, int significantBitCount)
 Returns the bit number of the Nth significant bit set to 1 in the binary representation of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL bool isMultiple (genIUType v, genIUType Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<typename genIUType >
GLM_FUNC_DECL bool isPowerOfTwo (genIUType v)
 Return true if the value is a power of two number. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType nextMultiple (genIUType v, genIUType Multiple)
 Higher multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType nextPowerOfTwo (genIUType v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType prevMultiple (genIUType v, genIUType Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType prevPowerOfTwo (genIUType v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
+

Detailed Description

+

Include <glm/ext/scalar_integer.hpp> to use the features of this extension.

+

Function Documentation

+ +

◆ findNSB()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::findNSB (genIUType x,
int significantBitCount 
)
+
+ +

Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.

+

If value bitcount is less than the Nth significant bit, -1 will be returned.

+
Template Parameters
+ + +
genIUTypeSigned or unsigned integer scalar types.
+
+
+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ isMultiple()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isMultiple (genIUType v,
genIUType Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ isPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL bool glm::isPowerOfTwo (genIUType v)
+
+ +

Return true if the value is a power of two number.

+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ nextMultiple()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::nextMultiple (genIUType v,
genIUType Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + +
genIUTypeInteger scalar or vector types.
+
+
+
Parameters
+ + + +
vSource value to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ nextPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::nextPowerOfTwo (genIUType v)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ prevMultiple()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::prevMultiple (genIUType v,
genIUType Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genIUTypeInteger scalar or vector types.
+
+
+
Parameters
+ + + +
vSource value to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_scalar_integer
+ +
+
+ +

◆ prevPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::prevPowerOfTwo (genIUType v)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
See also
GLM_EXT_scalar_integer
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00870.html b/include/glm/doc/api/a00870.html new file mode 100644 index 0000000..12fe45b --- /dev/null +++ b/include/glm/doc/api/a00870.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_packing + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_EXT_scalar_packing
+
+
+

Include <glm/ext/scalar_packing.hpp> to use the features of this extension.

+

This extension provides a set of function to convert scalar values to packed formats.

+
+ + + + diff --git a/include/glm/doc/api/a00871.html b/include/glm/doc/api/a00871.html new file mode 100644 index 0000000..8e60d0b --- /dev/null +++ b/include/glm/doc/api/a00871.html @@ -0,0 +1,561 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_reciprocal + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_reciprocal
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType acot (genType x)
 Inverse cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acoth (genType x)
 Inverse cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsc (genType x)
 Inverse cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType acsch (genType x)
 Inverse cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asec (genType x)
 Inverse secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType asech (genType x)
 Inverse secant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType cot (genType angle)
 Cotangent function. More...
 
template<typename genType >
GLM_FUNC_DECL genType coth (genType angle)
 Cotangent hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csc (genType angle)
 Cosecant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType csch (genType angle)
 Cosecant hyperbolic function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sec (genType angle)
 Secant function. More...
 
template<typename genType >
GLM_FUNC_DECL genType sech (genType angle)
 Secant hyperbolic function. More...
 
+

Detailed Description

+

Include <glm/ext/scalar_reciprocal.hpp> to use the features of this extension.

+

Define secant, cosecant and cotangent functions.

+

Function Documentation

+ +

◆ acot()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType acot (genType x)
+
+ +

Inverse cotangent function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ acoth()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType acoth (genType x)
+
+ +

Inverse cotangent hyperbolic function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ acsc()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType acsc (genType x)
+
+ +

Inverse cosecant function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ acsch()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType acsch (genType x)
+
+ +

Inverse cosecant hyperbolic function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ asec()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType asec (genType x)
+
+ +

Inverse secant function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ asech()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType asech (genType x)
+
+ +

Inverse secant hyperbolic function.

+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Returns
Return an angle expressed in radians.
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ cot()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType cot (genType angle)
+
+ +

Cotangent function.

+

adjacent / opposite or 1 / tan(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+

adjacent / opposite or 1 / tan(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ coth()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType coth (genType angle)
+
+ +

Cotangent hyperbolic function.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ csc()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType csc (genType angle)
+
+ +

Cosecant function.

+

hypotenuse / opposite or 1 / sin(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+

hypotenuse / opposite or 1 / sin(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ csch()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType csch (genType angle)
+
+ +

Cosecant hyperbolic function.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ sec()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType sec (genType angle)
+
+ +

Secant function.

+

hypotenuse / adjacent or 1 / cos(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+

hypotenuse / adjacent or 1 / cos(x)

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+ +

◆ sech()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType sech (genType angle)
+
+ +

Secant hyperbolic function.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_scalar_reciprocal
+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLM_EXT_vector_reciprocal
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00872.html b/include/glm/doc/api/a00872.html new file mode 100644 index 0000000..c1a7e04 --- /dev/null +++ b/include/glm/doc/api/a00872.html @@ -0,0 +1,296 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_relational + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_relational
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
+

Detailed Description

+

Exposes comparison functions for scalar types that take a user defined epsilon values.

+

Include <glm/ext/scalar_relational.hpp> to use the features of this extension.

+
See also
core_vector_relational
+
+GLM_EXT_vector_relational
+
+GLM_EXT_matrix_relational
+

Function Documentation

+ +

◆ equal() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::equal (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar types
+
+
+ +
+
+ +

◆ equal() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::equal (genType const & x,
genType const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two scalars in term of ULPs.

+

True if this expression is satisfied.

+
Parameters
+ + + + +
xFirst operand.
ySecond operand.
ULPsMaximum difference in ULPs between the two operators to consider them equal.
+
+
+
Template Parameters
+ + +
genTypeFloating-point or integer scalar types
+
+
+ +
+
+ +

◆ notEqual() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::notEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar types
+
+
+ +
+
+ +

◆ notEqual() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::notEqual (genType const & x,
genType const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two scalars in term of ULPs.

+

True if this expression is not satisfied.

+
Parameters
+ + + + +
xFirst operand.
ySecond operand.
ULPsMaximum difference in ULPs between the two operators to consider them not equal.
+
+
+
Template Parameters
+ + +
genTypeFloating-point or integer scalar types
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00873.html b/include/glm/doc/api/a00873.html new file mode 100644 index 0000000..8272bb6 --- /dev/null +++ b/include/glm/doc/api/a00873.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_uint_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_uint_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

+typedef detail::uint16 uint16
 16 bit unsigned integer type.
 
+typedef detail::uint32 uint32
 32 bit unsigned integer type.
 
+typedef detail::uint64 uint64
 64 bit unsigned integer type.
 
+typedef detail::uint8 uint8
 8 bit unsigned integer type.
 
+

Detailed Description

+

Exposes sized unsigned integer scalar types.

+

Include <glm/ext/scalar_uint_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_int_sized
+
+ + + + diff --git a/include/glm/doc/api/a00874.html b/include/glm/doc/api/a00874.html new file mode 100644 index 0000000..444fc38 --- /dev/null +++ b/include/glm/doc/api/a00874.html @@ -0,0 +1,302 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_scalar_ulp + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_scalar_ulp
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL int64 floatDistance (double x, double y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
GLM_FUNC_DECL int floatDistance (float x, float y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<typename genType >
GLM_FUNC_DECL genType nextFloat (genType x)
 Return the next ULP value(s) after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType nextFloat (genType x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prevFloat (genType x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prevFloat (genType x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

Allow the measurement of the accuracy of a function against a reference implementation. This extension works on floating-point data and provide results in ULP.

+

Include <glm/ext/scalar_ulp.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_ulp
+
+GLM_EXT_scalar_relational
+

Function Documentation

+ +

◆ floatDistance() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::floatDistance (double x,
double y 
)
+
+ +

Return the distance in the number of ULP between 2 double-precision floating-point scalars.

+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ floatDistance() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::floatDistance (float x,
float y 
)
+
+ +

Return the distance in the number of ULP between 2 single-precision floating-point scalars.

+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ nextFloat() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::nextFloat (genType x)
+
+ +

Return the next ULP value(s) after the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ nextFloat() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::nextFloat (genType x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ prevFloat() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::prevFloat (genType x)
+
+ +

Return the previous ULP value(s) before the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ prevFloat() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::prevFloat (genType x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00875.html b/include/glm/doc/api/a00875.html new file mode 100644 index 0000000..1eeea83 --- /dev/null +++ b/include/glm/doc/api/a00875.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_bool1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_bool1
+
+
+ + + + + +

+Typedefs

+typedef vec< 1, bool, defaultp > bvec1
 1 components vector of boolean.
 
+

Detailed Description

+

Exposes bvec1 vector type.

+

Include <glm/ext/vector_bool1.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_bool1_precision extension.
+
+ + + + diff --git a/include/glm/doc/api/a00876.html b/include/glm/doc/api/a00876.html new file mode 100644 index 0000000..f3b7c96 --- /dev/null +++ b/include/glm/doc/api/a00876.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_bool1_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_bool1_precision
+
+
+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, bool, highp > highp_bvec1
 1 component vector of bool values.
 
+typedef vec< 1, bool, lowp > lowp_bvec1
 1 component vector of bool values.
 
+typedef vec< 1, bool, mediump > mediump_bvec1
 1 component vector of bool values.
 
+

Detailed Description

+

Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types.

+

Include <glm/ext/vector_bool1_precision.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00877.html b/include/glm/doc/api/a00877.html new file mode 100644 index 0000000..eeb9547 --- /dev/null +++ b/include/glm/doc/api/a00877.html @@ -0,0 +1,994 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_common + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_common
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > clamp (vec< L, T, Q > const &Texcoord)
 Simulate GL_CLAMP OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, T minVal, T maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fclamp (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)
 Returns min(max(x, minVal), maxVal) for each component in x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, T b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmax (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if x < y; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, T y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmin (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns y if y < x; otherwise, it returns x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > iround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)
 Return the minimum component-wise values of 3 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min (vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)
 Return the minimum component-wise values of 4 inputs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mirrorClamp (vec< L, T, Q > const &Texcoord)
 Simulate GL_MIRRORED_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mirrorRepeat (vec< L, T, Q > const &Texcoord)
 Simulate GL_MIRROR_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > repeat (vec< L, T, Q > const &Texcoord)
 Simulate GL_REPEAT OpenGL wrap mode. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uround (vec< L, T, Q > const &x)
 Returns a value equal to the nearest integer to x. More...
 
+

Detailed Description

+

Exposes min and max functions for 3 to 4 vector parameters.

+

Include <glm/ext/vector_common.hpp> to use the features of this extension.

+
See also
core_common
+
+GLM_EXT_scalar_common
+

Function Documentation

+ +

◆ clamp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::clamp (vec< L, T, Q > const & Texcoord)
+
+ +

Simulate GL_CLAMP OpenGL wrap mode.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common extension.
+ +
+
+ +

◆ fclamp() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fclamp (vec< L, T, Q > const & x,
minVal,
maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common
+ +
+
+ +

◆ fclamp() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fclamp (vec< L, T, Q > const & x,
vec< L, T, Q > const & minVal,
vec< L, T, Q > const & maxVal 
)
+
+ +

Returns min(max(x, minVal), maxVal) for each component in x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common
+ +
+
+ +

◆ fmax() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
b 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmax documentation
+ +
+
+ +

◆ fmax() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmax documentation
+ +
+
+ +

◆ fmax() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmax documentation
+ +
+
+ +

◆ fmax() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmax (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
+
+ +

Returns y if x < y; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmax documentation
+ +
+
+ +

◆ fmin() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmin documentation
+ +
+
+ +

◆ fmin() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmin documentation
+ +
+
+ +

◆ fmin() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & x,
y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmin documentation
+ +
+
+ +

◆ fmin() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmin (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns y if y < x; otherwise, it returns x.

+

If one of the two arguments is NaN, the value of the other argument is returned.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
std::fmin documentation
+ +
+
+ +

◆ iround()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::iround (vec< L, T, Q > 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.

+
Parameters
+ + +
xThe values of the argument must be greater or equal to zero.
+
+
+
Template Parameters
+ + +
Tfloating point scalar types.
+
+
+
See also
GLSL round man page
+
+GLM_EXT_vector_common extension.
+ +
+
+ +

◆ max() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ max() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::max (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & z,
vec< L, T, Q > const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ min() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ min() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::min (vec< L, T, Q > const & a,
vec< L, T, Q > const & b,
vec< L, T, Q > const & c,
vec< L, T, Q > const & d 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ mirrorClamp()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::mirrorClamp (vec< L, T, Q > const & Texcoord)
+
+ +

Simulate GL_MIRRORED_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common extension.
+ +
+
+ +

◆ mirrorRepeat()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::mirrorRepeat (vec< L, T, Q > const & Texcoord)
+
+ +

Simulate GL_MIRROR_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common extension.
+ +
+
+ +

◆ repeat()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::repeat (vec< L, T, Q > const & Texcoord)
+
+ +

Simulate GL_REPEAT OpenGL wrap mode.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_common extension.
+ +
+
+ +

◆ uround()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, uint, Q> glm::uround (vec< L, T, Q > 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.

+
Parameters
+ + +
xThe values of the argument must be greater or equal to zero.
+
+
+
Template Parameters
+ + +
Tfloating point scalar types.
+
+
+
See also
GLSL round man page
+
+GLM_EXT_vector_common extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00878.html b/include/glm/doc/api/a00878.html new file mode 100644 index 0000000..25ff4ef --- /dev/null +++ b/include/glm/doc/api/a00878.html @@ -0,0 +1,93 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_double1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_double1
+
+
+ + + + + +

+Typedefs

+typedef vec< 1, double, defaultp > dvec1
 1 components vector of double-precision floating-point numbers.
 
+

Detailed Description

+

Exposes double-precision floating point vector type with one component.

+

Include <glm/ext/vector_double1.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_double1_precision extension.
+
+GLM_EXT_vector_float1 extension.
+
+ + + + diff --git a/include/glm/doc/api/a00879.html b/include/glm/doc/api/a00879.html new file mode 100644 index 0000000..6b7eb35 --- /dev/null +++ b/include/glm/doc/api/a00879.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_double1_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_double1_precision
+
+
+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, double, highp > highp_dvec1
 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, lowp > lowp_dvec1
 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, mediump > mediump_dvec1
 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+

Detailed Description

+

Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types.

+

Include <glm/ext/vector_double1_precision.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_double1
+
+ + + + diff --git a/include/glm/doc/api/a00880.html b/include/glm/doc/api/a00880.html new file mode 100644 index 0000000..9dc20d9 --- /dev/null +++ b/include/glm/doc/api/a00880.html @@ -0,0 +1,93 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_float1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_float1
+
+
+ + + + + +

+Typedefs

+typedef vec< 1, float, defaultp > vec1
 1 components vector of single-precision floating-point numbers.
 
+

Detailed Description

+

Exposes single-precision floating point vector type with one component.

+

Include <glm/ext/vector_float1.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_float1_precision extension.
+
+GLM_EXT_vector_double1 extension.
+
+ + + + diff --git a/include/glm/doc/api/a00881.html b/include/glm/doc/api/a00881.html new file mode 100644 index 0000000..b065aff --- /dev/null +++ b/include/glm/doc/api/a00881.html @@ -0,0 +1,99 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_float1_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_float1_precision
+
+
+ + + + + + + + + + + +

+Typedefs

+typedef vec< 1, float, highp > highp_vec1
 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, float, lowp > lowp_vec1
 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, float, mediump > mediump_vec1
 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+

Detailed Description

+

Exposes highp_vec1, mediump_vec1 and lowp_vec1 types.

+

Include <glm/ext/vector_float1_precision.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_float1 extension.
+
+ + + + diff --git a/include/glm/doc/api/a00882.html b/include/glm/doc/api/a00882.html new file mode 100644 index 0000000..a7c1714 --- /dev/null +++ b/include/glm/doc/api/a00882.html @@ -0,0 +1,93 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_int1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_int1
+
+
+ + + + + +

+Typedefs

+typedef vec< 1, int, defaultp > ivec1
 1 component vector of signed integer numbers.
 
+

Detailed Description

+

Exposes ivec1 vector type.

+

Include <glm/ext/vector_int1.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_uint1 extension.
+
+ext_vector_int1_precision extension.
+
+ + + + diff --git a/include/glm/doc/api/a00883.html b/include/glm/doc/api/a00883.html new file mode 100644 index 0000000..85f209b --- /dev/null +++ b/include/glm/doc/api/a00883.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_int1_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_int1_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, int16, defaultp > i16vec1
 16 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int32, defaultp > i32vec1
 32 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int64, defaultp > i64vec1
 64 bit signed integer vector of 1 component type. More...
 
typedef vec< 1, int8, defaultp > i8vec1
 8 bit signed integer vector of 1 component type. More...
 
+

Detailed Description

+

Exposes sized signed integer vector types.

+

Include <glm/ext/vector_int1_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_int_sized
+
+GLM_EXT_vector_uint1_sized
+

Typedef Documentation

+ +

◆ i16vec1

+ +
+
+ + + + +
typedef vec< 1, i16, defaultp > i16vec1
+
+ +

16 bit signed integer vector of 1 component type.

+
See also
GLM_EXT_vector_int1_sized
+ +

Definition at line 36 of file vector_int1_sized.hpp.

+ +
+
+ +

◆ i32vec1

+ +
+
+ + + + +
typedef vec< 1, i32, defaultp > i32vec1
+
+ +

32 bit signed integer vector of 1 component type.

+
See also
GLM_EXT_vector_int1_sized
+ +

Definition at line 41 of file vector_int1_sized.hpp.

+ +
+
+ +

◆ i64vec1

+ +
+
+ + + + +
typedef vec< 1, i64, defaultp > i64vec1
+
+ +

64 bit signed integer vector of 1 component type.

+
See also
GLM_EXT_vector_int1_sized
+ +

Definition at line 46 of file vector_int1_sized.hpp.

+ +
+
+ +

◆ i8vec1

+ +
+
+ + + + +
typedef vec< 1, i8, defaultp > i8vec1
+
+ +

8 bit signed integer vector of 1 component type.

+
See also
GLM_EXT_vector_int1_sized
+ +

Definition at line 31 of file vector_int1_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00884.html b/include/glm/doc/api/a00884.html new file mode 100644 index 0000000..4967604 --- /dev/null +++ b/include/glm/doc/api/a00884.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_int2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_int2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, int16, defaultp > i16vec2
 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int32, defaultp > i32vec2
 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int64, defaultp > i64vec2
 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 2, int8, defaultp > i8vec2
 8 bit signed integer vector of 2 components type. More...
 
+

Detailed Description

+

Exposes sized signed integer vector of 2 components type.

+

Include <glm/ext/vector_int2_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_int_sized
+
+GLM_EXT_vector_uint2_sized
+

Typedef Documentation

+ +

◆ i16vec2

+ +
+
+ + + + +
typedef vec< 2, i16, defaultp > i16vec2
+
+ +

16 bit signed integer vector of 2 components type.

+
See also
GLM_EXT_vector_int2_sized
+ +

Definition at line 36 of file vector_int2_sized.hpp.

+ +
+
+ +

◆ i32vec2

+ +
+
+ + + + +
typedef vec< 2, i32, defaultp > i32vec2
+
+ +

32 bit signed integer vector of 2 components type.

+
See also
GLM_EXT_vector_int2_sized
+ +

Definition at line 41 of file vector_int2_sized.hpp.

+ +
+
+ +

◆ i64vec2

+ +
+
+ + + + +
typedef vec< 2, i64, defaultp > i64vec2
+
+ +

64 bit signed integer vector of 2 components type.

+
See also
GLM_EXT_vector_int2_sized
+ +

Definition at line 46 of file vector_int2_sized.hpp.

+ +
+
+ +

◆ i8vec2

+ +
+
+ + + + +
typedef vec< 2, i8, defaultp > i8vec2
+
+ +

8 bit signed integer vector of 2 components type.

+
See also
GLM_EXT_vector_int2_sized
+ +

Definition at line 31 of file vector_int2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00885.html b/include/glm/doc/api/a00885.html new file mode 100644 index 0000000..b447bf4 --- /dev/null +++ b/include/glm/doc/api/a00885.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_int3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_int3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 3, int16, defaultp > i16vec3
 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int32, defaultp > i32vec3
 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int64, defaultp > i64vec3
 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 3, int8, defaultp > i8vec3
 8 bit signed integer vector of 3 components type. More...
 
+

Detailed Description

+

Exposes sized signed integer vector of 3 components type.

+

Include <glm/ext/vector_int3_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_int_sized
+
+GLM_EXT_vector_uint3_sized
+

Typedef Documentation

+ +

◆ i16vec3

+ +
+
+ + + + +
typedef vec< 3, i16, defaultp > i16vec3
+
+ +

16 bit signed integer vector of 3 components type.

+
See also
GLM_EXT_vector_int3_sized
+ +

Definition at line 36 of file vector_int3_sized.hpp.

+ +
+
+ +

◆ i32vec3

+ +
+
+ + + + +
typedef vec< 3, i32, defaultp > i32vec3
+
+ +

32 bit signed integer vector of 3 components type.

+
See also
GLM_EXT_vector_int3_sized
+ +

Definition at line 41 of file vector_int3_sized.hpp.

+ +
+
+ +

◆ i64vec3

+ +
+
+ + + + +
typedef vec< 3, i64, defaultp > i64vec3
+
+ +

64 bit signed integer vector of 3 components type.

+
See also
GLM_EXT_vector_int3_sized
+ +

Definition at line 46 of file vector_int3_sized.hpp.

+ +
+
+ +

◆ i8vec3

+ +
+
+ + + + +
typedef vec< 3, i8, defaultp > i8vec3
+
+ +

8 bit signed integer vector of 3 components type.

+
See also
GLM_EXT_vector_int3_sized
+ +

Definition at line 31 of file vector_int3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00886.html b/include/glm/doc/api/a00886.html new file mode 100644 index 0000000..3bc4fd5 --- /dev/null +++ b/include/glm/doc/api/a00886.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_int4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_int4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 4, int16, defaultp > i16vec4
 16 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int32, defaultp > i32vec4
 32 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int64, defaultp > i64vec4
 64 bit signed integer vector of 4 components type. More...
 
typedef vec< 4, int8, defaultp > i8vec4
 8 bit signed integer vector of 4 components type. More...
 
+

Detailed Description

+

Exposes sized signed integer vector of 4 components type.

+

Include <glm/ext/vector_int4_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_int_sized
+
+GLM_EXT_vector_uint4_sized
+

Typedef Documentation

+ +

◆ i16vec4

+ +
+
+ + + + +
typedef vec< 4, i16, defaultp > i16vec4
+
+ +

16 bit signed integer vector of 4 components type.

+
See also
GLM_EXT_vector_int4_sized
+ +

Definition at line 36 of file vector_int4_sized.hpp.

+ +
+
+ +

◆ i32vec4

+ +
+
+ + + + +
typedef vec< 4, i32, defaultp > i32vec4
+
+ +

32 bit signed integer vector of 4 components type.

+
See also
GLM_EXT_vector_int4_sized
+ +

Definition at line 41 of file vector_int4_sized.hpp.

+ +
+
+ +

◆ i64vec4

+ +
+
+ + + + +
typedef vec< 4, i64, defaultp > i64vec4
+
+ +

64 bit signed integer vector of 4 components type.

+
See also
GLM_EXT_vector_int4_sized
+ +

Definition at line 46 of file vector_int4_sized.hpp.

+ +
+
+ +

◆ i8vec4

+ +
+
+ + + + +
typedef vec< 4, i8, defaultp > i8vec4
+
+ +

8 bit signed integer vector of 4 components type.

+
See also
GLM_EXT_vector_int4_sized
+ +

Definition at line 31 of file vector_int4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00887.html b/include/glm/doc/api/a00887.html new file mode 100644 index 0000000..e51f78d --- /dev/null +++ b/include/glm/doc/api/a00887.html @@ -0,0 +1,514 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_integer
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findNSB (vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)
 Returns the bit number of the Nth significant bit set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isMultiple (vec< L, T, Q > const &v, T Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Return true if the 'Value' is a multiple of 'Multiple'. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isPowerOfTwo (vec< L, T, Q > const &v)
 Return true if the value is a power of two number. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextMultiple (vec< L, T, Q > const &v, T Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevMultiple (vec< L, T, Q > const &v, T Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
+

Detailed Description

+

Include <glm/ext/vector_integer.hpp> to use the features of this extension.

+

Function Documentation

+ +

◆ findNSB()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::findNSB (vec< L, T, Q > const & Source,
vec< L, int, Q > SignificantBitCount 
)
+
+ +

Returns the bit number of the Nth significant bit set to 1 in the binary representation of value.

+

If value bitcount is less than the Nth significant bit, -1 will be returned.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ isMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isMultiple (vec< L, T, Q > const & v,
Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ isMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Return true if the 'Value' is a multiple of 'Multiple'.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ isPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return true if the value is a power of two number.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ nextMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextMultiple (vec< L, T, Q > const & v,
Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ nextMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ nextPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ prevMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevMultiple (vec< L, T, Q > const & v,
Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ prevMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+ +

◆ prevPowerOfTwo()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned or unsigned integer scalar types.
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_integer
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00888.html b/include/glm/doc/api/a00888.html new file mode 100644 index 0000000..058400a --- /dev/null +++ b/include/glm/doc/api/a00888.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_packing + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_EXT_vector_packing
+
+
+

Include <glm/ext/vector_packing.hpp> to use the features of this extension.

+

This extension provides a set of function to convert vectors to packed formats.

+
+ + + + diff --git a/include/glm/doc/api/a00889.html b/include/glm/doc/api/a00889.html new file mode 100644 index 0000000..cc2d186 --- /dev/null +++ b/include/glm/doc/api/a00889.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_reciprocal + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_EXT_vector_reciprocal
+
+
+

Include <glm/ext/vector_reciprocal.hpp> to use the features of this extension.

+

Define secant, cosecant and cotangent functions.

+
+ + + + diff --git a/include/glm/doc/api/a00890.html b/include/glm/doc/api/a00890.html new file mode 100644 index 0000000..9779c84 --- /dev/null +++ b/include/glm/doc/api/a00890.html @@ -0,0 +1,484 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_relational + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_relational
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+

Exposes comparison functions for vector types that take a user defined epsilon values.

+

Include <glm/ext/vector_relational.hpp> to use the features of this extension.

+
See also
core_vector_relational
+
+GLM_EXT_scalar_relational
+
+GLM_EXT_matrix_relational
+

Function Documentation

+ +

◆ equal() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, int, Q > const & ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ equal() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
int ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, int, Q > const & ULPs 
)
+
+ +

Returns the component-wise comparison between two vectors in term of ULPs.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+ +
+
+ +

◆ notEqual() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
vec< L, T, Q > const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00891.html b/include/glm/doc/api/a00891.html new file mode 100644 index 0000000..2ebbc29 --- /dev/null +++ b/include/glm/doc/api/a00891.html @@ -0,0 +1,93 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_uint1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_uint1
+
+
+ + + + + +

+Typedefs

+typedef vec< 1, unsigned int, defaultp > uvec1
 1 component vector of unsigned integer numbers.
 
+

Detailed Description

+

Exposes uvec1 vector type.

+

Include <glm/ext/vector_uvec1.hpp> to use the features of this extension.

+
See also
GLM_EXT_vector_int1 extension.
+
+ext_vector_uint1_precision extension.
+
+ + + + diff --git a/include/glm/doc/api/a00892.html b/include/glm/doc/api/a00892.html new file mode 100644 index 0000000..b63c480 --- /dev/null +++ b/include/glm/doc/api/a00892.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_uint1_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_uint1_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, uint16, defaultp > u16vec1
 16 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint32, defaultp > u32vec1
 32 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint64, defaultp > u64vec1
 64 bit unsigned integer vector of 1 component type. More...
 
typedef vec< 1, uint8, defaultp > u8vec1
 8 bit unsigned integer vector of 1 component type. More...
 
+

Detailed Description

+

Exposes sized unsigned integer vector types.

+

Include <glm/ext/vector_uint1_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_uint_sized
+
+GLM_EXT_vector_int1_sized
+

Typedef Documentation

+ +

◆ u16vec1

+ +
+
+ + + + +
typedef vec< 1, u16, defaultp > u16vec1
+
+ +

16 bit unsigned integer vector of 1 component type.

+
See also
GLM_EXT_vector_uint1_sized
+ +

Definition at line 36 of file vector_uint1_sized.hpp.

+ +
+
+ +

◆ u32vec1

+ +
+
+ + + + +
typedef vec< 1, u32, defaultp > u32vec1
+
+ +

32 bit unsigned integer vector of 1 component type.

+
See also
GLM_EXT_vector_uint1_sized
+ +

Definition at line 41 of file vector_uint1_sized.hpp.

+ +
+
+ +

◆ u64vec1

+ +
+
+ + + + +
typedef vec< 1, u64, defaultp > u64vec1
+
+ +

64 bit unsigned integer vector of 1 component type.

+
See also
GLM_EXT_vector_uint1_sized
+ +

Definition at line 46 of file vector_uint1_sized.hpp.

+ +
+
+ +

◆ u8vec1

+ +
+
+ + + + +
typedef vec< 1, u8, defaultp > u8vec1
+
+ +

8 bit unsigned integer vector of 1 component type.

+
See also
GLM_EXT_vector_uint1_sized
+ +

Definition at line 31 of file vector_uint1_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00893.html b/include/glm/doc/api/a00893.html new file mode 100644 index 0000000..6b7d027 --- /dev/null +++ b/include/glm/doc/api/a00893.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_uint2_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_uint2_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, uint16, defaultp > u16vec2
 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint32, defaultp > u32vec2
 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint64, defaultp > u64vec2
 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 2, uint8, defaultp > u8vec2
 8 bit unsigned integer vector of 2 components type. More...
 
+

Detailed Description

+

Exposes sized unsigned integer vector of 2 components type.

+

Include <glm/ext/vector_uint2_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_uint_sized
+
+GLM_EXT_vector_int2_sized
+

Typedef Documentation

+ +

◆ u16vec2

+ +
+
+ + + + +
typedef vec< 2, u16, defaultp > u16vec2
+
+ +

16 bit unsigned integer vector of 2 components type.

+
See also
GLM_EXT_vector_uint2_sized
+ +

Definition at line 36 of file vector_uint2_sized.hpp.

+ +
+
+ +

◆ u32vec2

+ +
+
+ + + + +
typedef vec< 2, u32, defaultp > u32vec2
+
+ +

32 bit unsigned integer vector of 2 components type.

+
See also
GLM_EXT_vector_uint2_sized
+ +

Definition at line 41 of file vector_uint2_sized.hpp.

+ +
+
+ +

◆ u64vec2

+ +
+
+ + + + +
typedef vec< 2, u64, defaultp > u64vec2
+
+ +

64 bit unsigned integer vector of 2 components type.

+
See also
GLM_EXT_vector_uint2_sized
+ +

Definition at line 46 of file vector_uint2_sized.hpp.

+ +
+
+ +

◆ u8vec2

+ +
+
+ + + + +
typedef vec< 2, u8, defaultp > u8vec2
+
+ +

8 bit unsigned integer vector of 2 components type.

+
See also
GLM_EXT_vector_uint2_sized
+ +

Definition at line 31 of file vector_uint2_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00894.html b/include/glm/doc/api/a00894.html new file mode 100644 index 0000000..519d5cc --- /dev/null +++ b/include/glm/doc/api/a00894.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_uint3_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_uint3_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 3, uint16, defaultp > u16vec3
 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint32, defaultp > u32vec3
 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint64, defaultp > u64vec3
 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 3, uint8, defaultp > u8vec3
 8 bit unsigned integer vector of 3 components type. More...
 
+

Detailed Description

+

Exposes sized unsigned integer vector of 3 components type.

+

Include <glm/ext/vector_uint3_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_uint_sized
+
+GLM_EXT_vector_int3_sized
+

Typedef Documentation

+ +

◆ u16vec3

+ +
+
+ + + + +
typedef vec< 3, u16, defaultp > u16vec3
+
+ +

16 bit unsigned integer vector of 3 components type.

+
See also
GLM_EXT_vector_uint3_sized
+ +

Definition at line 36 of file vector_uint3_sized.hpp.

+ +
+
+ +

◆ u32vec3

+ +
+
+ + + + +
typedef vec< 3, u32, defaultp > u32vec3
+
+ +

32 bit unsigned integer vector of 3 components type.

+
See also
GLM_EXT_vector_uint3_sized
+ +

Definition at line 41 of file vector_uint3_sized.hpp.

+ +
+
+ +

◆ u64vec3

+ +
+
+ + + + +
typedef vec< 3, u64, defaultp > u64vec3
+
+ +

64 bit unsigned integer vector of 3 components type.

+
See also
GLM_EXT_vector_uint3_sized
+ +

Definition at line 46 of file vector_uint3_sized.hpp.

+ +
+
+ +

◆ u8vec3

+ +
+
+ + + + +
typedef vec< 3, u8, defaultp > u8vec3
+
+ +

8 bit unsigned integer vector of 3 components type.

+
See also
GLM_EXT_vector_uint3_sized
+ +

Definition at line 31 of file vector_uint3_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00895.html b/include/glm/doc/api/a00895.html new file mode 100644 index 0000000..a1cd8c0 --- /dev/null +++ b/include/glm/doc/api/a00895.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_uint4_sized + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_uint4_sized
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef vec< 4, uint16, defaultp > u16vec4
 16 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint32, defaultp > u32vec4
 32 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint64, defaultp > u64vec4
 64 bit unsigned integer vector of 4 components type. More...
 
typedef vec< 4, uint8, defaultp > u8vec4
 8 bit unsigned integer vector of 4 components type. More...
 
+

Detailed Description

+

Exposes sized unsigned integer vector of 4 components type.

+

Include <glm/ext/vector_uint4_sized.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_uint_sized
+
+GLM_EXT_vector_int4_sized
+

Typedef Documentation

+ +

◆ u16vec4

+ +
+
+ + + + +
typedef vec< 4, u16, defaultp > u16vec4
+
+ +

16 bit unsigned integer vector of 4 components type.

+
See also
GLM_EXT_vector_uint4_sized
+ +

Definition at line 36 of file vector_uint4_sized.hpp.

+ +
+
+ +

◆ u32vec4

+ +
+
+ + + + +
typedef vec< 4, u32, defaultp > u32vec4
+
+ +

32 bit unsigned integer vector of 4 components type.

+
See also
GLM_EXT_vector_uint4_sized
+ +

Definition at line 41 of file vector_uint4_sized.hpp.

+ +
+
+ +

◆ u64vec4

+ +
+
+ + + + +
typedef vec< 4, u64, defaultp > u64vec4
+
+ +

64 bit unsigned integer vector of 4 components type.

+
See also
GLM_EXT_vector_uint4_sized
+ +

Definition at line 46 of file vector_uint4_sized.hpp.

+ +
+
+ +

◆ u8vec4

+ +
+
+ + + + +
typedef vec< 4, u8, defaultp > u8vec4
+
+ +

8 bit unsigned integer vector of 4 components type.

+
See also
GLM_EXT_vector_uint4_sized
+ +

Definition at line 31 of file vector_uint4_sized.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00896.html b/include/glm/doc/api/a00896.html new file mode 100644 index 0000000..68535f8 --- /dev/null +++ b/include/glm/doc/api/a00896.html @@ -0,0 +1,414 @@ + + + + + + + +1.0.2 API documentation: GLM_EXT_vector_ulp + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_EXT_vector_ulp
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int64, Q > floatDistance (vec< L, double, Q > const &x, vec< L, double, Q > const &y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > floatDistance (vec< L, float, Q > const &x, vec< L, float, Q > const &y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x)
 Return the next ULP value(s) after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > nextFloat (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prevFloat (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

Allow the measurement of the accuracy of a function against a reference implementation. This extension works on floating-point data and provide results in ULP.

+

Include <glm/ext/vector_ulp.hpp> to use the features of this extension.

+
See also
GLM_EXT_scalar_ulp
+
+GLM_EXT_scalar_relational
+
+GLM_EXT_vector_relational
+

Function Documentation

+ +

◆ floatDistance() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, int64, Q> glm::floatDistance (vec< L, double, Q > const & x,
vec< L, double, Q > const & y 
)
+
+ +

Return the distance in the number of ULP between 2 double-precision floating-point scalars.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ floatDistance() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::floatDistance (vec< L, float, Q > const & x,
vec< L, float, Q > const & y 
)
+
+ +

Return the distance in the number of ULP between 2 single-precision floating-point scalars.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ nextFloat() [1/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextFloat (vec< L, T, Q > const & x)
+
+ +

Return the next ULP value(s) after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ nextFloat() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextFloat (vec< L, T, Q > const & x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ nextFloat() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::nextFloat (vec< L, T, Q > const & x,
vec< L, int, Q > const & ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ prevFloat() [1/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevFloat (vec< L, T, Q > const & x)
+
+ +

Return the previous ULP value(s) before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ prevFloat() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevFloat (vec< L, T, Q > const & x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+ +

◆ prevFloat() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prevFloat (vec< L, T, Q > const & x,
vec< L, int, Q > const & ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_EXT_scalar_ulp
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00897.html b/include/glm/doc/api/a00897.html new file mode 100644 index 0000000..607b027 --- /dev/null +++ b/include/glm/doc/api/a00897.html @@ -0,0 +1,431 @@ + + + + + + + +1.0.2 API documentation: Geometric functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Geometric functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the cross product of x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T distance (vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
 Returns the distance between p0 and p1, i.e., length(p0 - p1). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T dot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the dot product of x and y, i.e., result = x * y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > faceforward (vec< L, T, Q > const &N, vec< L, T, Q > const &I, vec< L, T, Q > const &Nref)
 If dot(Nref, I) < 0.0, return N, otherwise, return -N. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T length (vec< L, T, Q > const &x)
 Returns the length of x, i.e., sqrt(x * x). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > normalize (vec< L, T, Q > const &x)
 Returns a vector in the same direction as x but with length of 1. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > reflect (vec< L, T, Q > const &I, vec< L, T, Q > const &N)
 For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > refract (vec< L, T, Q > const &I, vec< L, T, Q > const &N, T eta)
 For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector. More...
 
+

Detailed Description

+

These operate on vectors as vectors, not component-wise.

+

Include <glm/geometric.hpp> to use these core features.

+

Function Documentation

+ +

◆ cross()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> glm::cross (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
+
+ +

Returns the cross product of x and y.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLSL cross man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ distance()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::distance (vec< L, T, Q > const & p0,
vec< L, T, Q > const & p1 
)
+
+ +

Returns the distance between p0 and p1, i.e., length(p0 - p1).

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL distance man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ dot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR T glm::dot (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the dot product of x and y, i.e., result = x * y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL dot man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ faceforward()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::faceforward (vec< L, T, Q > const & N,
vec< L, T, Q > const & I,
vec< L, T, Q > const & Nref 
)
+
+ +

If dot(Nref, I) < 0.0, return N, otherwise, return -N.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL faceforward man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ length()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length (vec< L, T, Q > const & x)
+
+ +

Returns the length of x, i.e., sqrt(x * x).

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL length man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ normalize()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::normalize (vec< L, T, Q > const & x)
+
+ +

Returns a vector in the same direction as x but with length of 1.

+

According to issue 10 GLSL 1.10 specification, if length(x) == 0 then result is undefined and generate an error.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL normalize man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ reflect()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::reflect (vec< L, T, Q > const & I,
vec< L, T, Q > const & N 
)
+
+ +

For the incident vector I and surface orientation N, returns the reflection direction : result = I - 2.0 * dot(N, I) * N.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL reflect man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+ +

◆ refract()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::refract (vec< L, T, Q > const & I,
vec< L, T, Q > const & N,
eta 
)
+
+ +

For the incident vector I and surface normal N, and the ratio of indices of refraction eta, return the refraction vector.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TFloating-point scalar types.
+
+
+
See also
GLSL refract man page
+
+GLSL 4.20.8 specification, section 8.5 Geometric Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00898.html b/include/glm/doc/api/a00898.html new file mode 100644 index 0000000..86da0fc --- /dev/null +++ b/include/glm/doc/api/a00898.html @@ -0,0 +1,119 @@ + + + + + + + +1.0.2 API documentation: Core features + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Core features
+
+
+ +

Features that implement in C++ the GLSL specification as closely as possible. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 Common functions
 
 Exponential functions
 
 Geometric functions
 
 Vector types
 Vector types of two to four components with an exhaustive set of operators.
 
 Vector types with precision qualifiers
 Vector types with precision qualifiers which may result in various precision in term of ULPs.
 
 Matrix types
 Matrix types of with C columns and R rows where C and R are values between 2 to 4 included. These types have exhaustive sets of operators.
 
 Matrix types with precision qualifiers
 Matrix types with precision qualifiers which may result in various precision in term of ULPs.
 
 Integer functions
 
 Matrix functions
 
 Floating-Point Pack and Unpack Functions
 
 Angle and Trigonometry Functions
 
 Vector Relational Functions
 
+

Detailed Description

+

Features that implement in C++ the GLSL specification as closely as possible.

+

The GLM core consists of C++ types that mirror GLSL types and C++ functions that mirror the GLSL functions.

+

The best documentation for GLM Core is the current GLSL specification, version 4.2 (pdf file).

+

GLM core functionalities require <glm/glm.hpp> to be included to be used.

+
+ + + + diff --git a/include/glm/doc/api/a00899.html b/include/glm/doc/api/a00899.html new file mode 100644 index 0000000..5e3cc23 --- /dev/null +++ b/include/glm/doc/api/a00899.html @@ -0,0 +1,419 @@ + + + + + + + +1.0.2 API documentation: Vector types + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Vector types
+
+
+ +

Vector types of two to four components with an exhaustive set of operators. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, bool, defaultp > bvec2
 2 components vector of boolean. More...
 
typedef vec< 3, bool, defaultp > bvec3
 3 components vector of boolean. More...
 
typedef vec< 4, bool, defaultp > bvec4
 4 components vector of boolean. More...
 
typedef vec< 2, double, defaultp > dvec2
 2 components vector of double-precision floating-point numbers. More...
 
typedef vec< 3, double, defaultp > dvec3
 3 components vector of double-precision floating-point numbers. More...
 
typedef vec< 4, double, defaultp > dvec4
 4 components vector of double-precision floating-point numbers. More...
 
typedef vec< 2, int, defaultp > ivec2
 2 components vector of signed integer numbers. More...
 
typedef vec< 3, int, defaultp > ivec3
 3 components vector of signed integer numbers. More...
 
typedef vec< 4, int, defaultp > ivec4
 4 components vector of signed integer numbers. More...
 
typedef vec< 2, unsigned int, defaultp > uvec2
 2 components vector of unsigned integer numbers. More...
 
typedef vec< 3, unsigned int, defaultp > uvec3
 3 components vector of unsigned integer numbers. More...
 
typedef vec< 4, unsigned int, defaultp > uvec4
 4 components vector of unsigned integer numbers. More...
 
typedef vec< 2, float, defaultp > vec2
 2 components vector of single-precision floating-point numbers. More...
 
typedef vec< 3, float, defaultp > vec3
 3 components vector of single-precision floating-point numbers. More...
 
typedef vec< 4, float, defaultp > vec4
 4 components vector of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Vector types of two to four components with an exhaustive set of operators.

+

Typedef Documentation

+ +

◆ bvec2

+ +
+
+ + + + +
typedef vec< 2, bool, defaultp > bvec2
+
+ +

2 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_bool2.hpp.

+ +
+
+ +

◆ bvec3

+ +
+
+ + + + +
typedef vec< 3, bool, defaultp > bvec3
+
+ +

3 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_bool3.hpp.

+ +
+
+ +

◆ bvec4

+ +
+
+ + + + +
typedef vec< 4, bool, defaultp > bvec4
+
+ +

4 components vector of boolean.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_bool4.hpp.

+ +
+
+ +

◆ dvec2

+ +
+
+ + + + +
typedef vec< 2, f64, defaultp > dvec2
+
+ +

2 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_double2.hpp.

+ +
+
+ +

◆ dvec3

+ +
+
+ + + + +
typedef vec< 3, f64, defaultp > dvec3
+
+ +

3 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_double3.hpp.

+ +
+
+ +

◆ dvec4

+ +
+
+ + + + +
typedef vec< 4, f64, defaultp > dvec4
+
+ +

4 components vector of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_double4.hpp.

+ +
+
+ +

◆ ivec2

+ +
+
+ + + + +
typedef vec< 2, int, defaultp > ivec2
+
+ +

2 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_int2.hpp.

+ +
+
+ +

◆ ivec3

+ +
+
+ + + + +
typedef vec< 3, int, defaultp > ivec3
+
+ +

3 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_int3.hpp.

+ +
+
+ +

◆ ivec4

+ +
+
+ + + + +
typedef vec< 4, int, defaultp > ivec4
+
+ +

4 components vector of signed integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_int4.hpp.

+ +
+
+ +

◆ uvec2

+ +
+
+ + + + +
typedef vec< 2, uint, defaultp > uvec2
+
+ +

2 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_uint2.hpp.

+ +
+
+ +

◆ uvec3

+ +
+
+ + + + +
typedef vec< 3, uint, defaultp > uvec3
+
+ +

3 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_uint3.hpp.

+ +
+
+ +

◆ uvec4

+ +
+
+ + + + +
typedef vec< 4, uint, defaultp > uvec4
+
+ +

4 components vector of unsigned integer numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_uint4.hpp.

+ +
+
+ +

◆ vec2

+ +
+
+ + + + +
typedef vec< 2, float, defaultp > vec2
+
+ +

2 components vector of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_float2.hpp.

+ +
+
+ +

◆ vec3

+ +
+
+ + + + +
typedef vec< 3, float, defaultp > vec3
+
+ +

3 components vector of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_float3.hpp.

+ +
+
+ +

◆ vec4

+ +
+
+ + + + +
typedef vec< 4, float, defaultp > vec4
+
+ +

4 components vector of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+ +

Definition at line 15 of file vector_float4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00900.html b/include/glm/doc/api/a00900.html new file mode 100644 index 0000000..8230c2b --- /dev/null +++ b/include/glm/doc/api/a00900.html @@ -0,0 +1,746 @@ + + + + + + + +1.0.2 API documentation: Vector types with precision qualifiers + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Vector types with precision qualifiers
+
+
+ +

Vector types with precision qualifiers which may result in various precision in term of ULPs. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef vec< 2, bool, highp > highp_bvec2
 2 components vector of high qualifier bool numbers. More...
 
typedef vec< 3, bool, highp > highp_bvec3
 3 components vector of high qualifier bool numbers. More...
 
typedef vec< 4, bool, highp > highp_bvec4
 4 components vector of high qualifier bool numbers. More...
 
typedef vec< 2, double, highp > highp_dvec2
 2 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, highp > highp_dvec3
 3 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, highp > highp_dvec4
 4 components vector of high double-qualifier floating-point numbers. More...
 
typedef vec< 2, float, highp > highp_vec2
 2 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, highp > highp_vec3
 3 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, highp > highp_vec4
 4 components vector of high single-qualifier floating-point numbers. More...
 
typedef vec< 2, bool, lowp > lowp_bvec2
 2 components vector of low qualifier bool numbers. More...
 
typedef vec< 3, bool, lowp > lowp_bvec3
 3 components vector of low qualifier bool numbers. More...
 
typedef vec< 4, bool, lowp > lowp_bvec4
 4 components vector of low qualifier bool numbers. More...
 
typedef vec< 2, double, lowp > lowp_dvec2
 2 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, lowp > lowp_dvec3
 3 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, lowp > lowp_dvec4
 4 components vector of low double-qualifier floating-point numbers. More...
 
typedef vec< 2, float, lowp > lowp_vec2
 2 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, lowp > lowp_vec3
 3 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, lowp > lowp_vec4
 4 components vector of low single-qualifier floating-point numbers. More...
 
typedef vec< 2, bool, mediump > mediump_bvec2
 2 components vector of medium qualifier bool numbers. More...
 
typedef vec< 3, bool, mediump > mediump_bvec3
 3 components vector of medium qualifier bool numbers. More...
 
typedef vec< 4, bool, mediump > mediump_bvec4
 4 components vector of medium qualifier bool numbers. More...
 
typedef vec< 2, double, mediump > mediump_dvec2
 2 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 3, double, mediump > mediump_dvec3
 3 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 4, double, mediump > mediump_dvec4
 4 components vector of medium double-qualifier floating-point numbers. More...
 
typedef vec< 2, float, mediump > mediump_vec2
 2 components vector of medium single-qualifier floating-point numbers. More...
 
typedef vec< 3, float, mediump > mediump_vec3
 3 components vector of medium single-qualifier floating-point numbers. More...
 
typedef vec< 4, float, mediump > mediump_vec4
 4 components vector of medium single-qualifier floating-point numbers. More...
 
+

Detailed Description

+

Vector types with precision qualifiers which may result in various precision in term of ULPs.

+

GLSL allows defining qualifiers for particular variables. With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility, with OpenGL ES's GLSL, these qualifiers do have an effect.

+

C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing: a number of typedefs that use a particular qualifier.

+

None of these types make any guarantees about the actual qualifier used.

+

Typedef Documentation

+ +

◆ highp_bvec2

+ +
+
+ + + + +
typedef vec< 2, bool, highp > highp_bvec2
+
+ +

2 components vector of high qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_bool2_precision.hpp.

+ +
+
+ +

◆ highp_bvec3

+ +
+
+ + + + +
typedef vec< 3, bool, highp > highp_bvec3
+
+ +

3 components vector of high qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_bool3_precision.hpp.

+ +
+
+ +

◆ highp_bvec4

+ +
+
+ + + + +
typedef vec< 4, bool, highp > highp_bvec4
+
+ +

4 components vector of high qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_bool4_precision.hpp.

+ +
+
+ +

◆ highp_dvec2

+ +
+
+ + + + +
typedef vec< 2, f64, highp > highp_dvec2
+
+ +

2 components vector of high double-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_double2_precision.hpp.

+ +
+
+ +

◆ highp_dvec3

+ +
+
+ + + + +
typedef vec< 3, f64, highp > highp_dvec3
+
+ +

3 components vector of high double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 17 of file vector_double3_precision.hpp.

+ +
+
+ +

◆ highp_dvec4

+ +
+
+ + + + +
typedef vec< 4, f64, highp > highp_dvec4
+
+ +

4 components vector of high double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 18 of file vector_double4_precision.hpp.

+ +
+
+ +

◆ highp_vec2

+ +
+
+ + + + +
typedef vec< 2, float, highp > highp_vec2
+
+ +

2 components vector of high single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_float2_precision.hpp.

+ +
+
+ +

◆ highp_vec3

+ +
+
+ + + + +
typedef vec< 3, float, highp > highp_vec3
+
+ +

3 components vector of high single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_float3_precision.hpp.

+ +
+
+ +

◆ highp_vec4

+ +
+
+ + + + +
typedef vec< 4, float, highp > highp_vec4
+
+ +

4 components vector of high single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file vector_float4_precision.hpp.

+ +
+
+ +

◆ lowp_bvec2

+ +
+
+ + + + +
typedef vec< 2, bool, lowp > lowp_bvec2
+
+ +

2 components vector of low qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_bool2_precision.hpp.

+ +
+
+ +

◆ lowp_bvec3

+ +
+
+ + + + +
typedef vec< 3, bool, lowp > lowp_bvec3
+
+ +

3 components vector of low qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_bool3_precision.hpp.

+ +
+
+ +

◆ lowp_bvec4

+ +
+
+ + + + +
typedef vec< 4, bool, lowp > lowp_bvec4
+
+ +

4 components vector of low qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_bool4_precision.hpp.

+ +
+
+ +

◆ lowp_dvec2

+ +
+
+ + + + +
typedef vec< 2, f64, lowp > lowp_dvec2
+
+ +

2 components vector of low double-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_double2_precision.hpp.

+ +
+
+ +

◆ lowp_dvec3

+ +
+
+ + + + +
typedef vec< 3, f64, lowp > lowp_dvec3
+
+ +

3 components vector of low double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 31 of file vector_double3_precision.hpp.

+ +
+
+ +

◆ lowp_dvec4

+ +
+
+ + + + +
typedef vec< 4, f64, lowp > lowp_dvec4
+
+ +

4 components vector of low double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 32 of file vector_double4_precision.hpp.

+ +
+
+ +

◆ lowp_vec2

+ +
+
+ + + + +
typedef vec< 2, float, lowp > lowp_vec2
+
+ +

2 components vector of low single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_float2_precision.hpp.

+ +
+
+ +

◆ lowp_vec3

+ +
+
+ + + + +
typedef vec< 3, float, lowp > lowp_vec3
+
+ +

3 components vector of low single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_float3_precision.hpp.

+ +
+
+ +

◆ lowp_vec4

+ +
+
+ + + + +
typedef vec< 4, float, lowp > lowp_vec4
+
+ +

4 components vector of low single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file vector_float4_precision.hpp.

+ +
+
+ +

◆ mediump_bvec2

+ +
+
+ + + + +
typedef vec< 2, bool, mediump > mediump_bvec2
+
+ +

2 components vector of medium qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_bool2_precision.hpp.

+ +
+
+ +

◆ mediump_bvec3

+ +
+
+ + + + +
typedef vec< 3, bool, mediump > mediump_bvec3
+
+ +

3 components vector of medium qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_bool3_precision.hpp.

+ +
+
+ +

◆ mediump_bvec4

+ +
+
+ + + + +
typedef vec< 4, bool, mediump > mediump_bvec4
+
+ +

4 components vector of medium qualifier bool numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_bool4_precision.hpp.

+ +
+
+ +

◆ mediump_dvec2

+ +
+
+ + + + +
typedef vec< 2, f64, mediump > mediump_dvec2
+
+ +

2 components vector of medium double-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_double2_precision.hpp.

+ +
+
+ +

◆ mediump_dvec3

+ +
+
+ + + + +
typedef vec< 3, f64, mediump > mediump_dvec3
+
+ +

3 components vector of medium double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 24 of file vector_double3_precision.hpp.

+ +
+
+ +

◆ mediump_dvec4

+ +
+
+ + + + +
typedef vec< 4, f64, mediump > mediump_dvec4
+
+ +

4 components vector of medium double-qualifier floating-point numbers.

+

There is no guarantee on the actual qualifier.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 25 of file vector_double4_precision.hpp.

+ +
+
+ +

◆ mediump_vec2

+ +
+
+ + + + +
typedef vec< 2, float, mediump > mediump_vec2
+
+ +

2 components vector of medium single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_float2_precision.hpp.

+ +
+
+ +

◆ mediump_vec3

+ +
+
+ + + + +
typedef vec< 3, float, mediump > mediump_vec3
+
+ +

3 components vector of medium single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_float3_precision.hpp.

+ +
+
+ +

◆ mediump_vec4

+ +
+
+ + + + +
typedef vec< 4, float, mediump > mediump_vec4
+
+ +

4 components vector of medium single-qualifier floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.5 Vectors
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file vector_float4_precision.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00901.html b/include/glm/doc/api/a00901.html new file mode 100644 index 0000000..74657a2 --- /dev/null +++ b/include/glm/doc/api/a00901.html @@ -0,0 +1,617 @@ + + + + + + + +1.0.2 API documentation: Matrix types + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Matrix types
+
+
+ +

Matrix types of with C columns and R rows where C and R are values between 2 to 4 included. These types have exhaustive sets of operators. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, double, defaultp > dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 2, double, defaultp > dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 3, double, defaultp > dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 4, double, defaultp > dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 3, double, defaultp > dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 2, double, defaultp > dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 3, double, defaultp > dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 3, 4, double, defaultp > dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 4, double, defaultp > dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 2, double, defaultp > dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 3, double, defaultp > dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 4, 4, double, defaultp > dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers. More...
 
typedef mat< 2, 2, float, defaultp > mat2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 2, float, defaultp > mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 3, float, defaultp > mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 2, 4, float, defaultp > mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 3, float, defaultp > mat3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 2, float, defaultp > mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 3, float, defaultp > mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 3, 4, float, defaultp > mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 2, float, defaultp > mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 3, float, defaultp > mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 4, float, defaultp > mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
typedef mat< 4, 4, float, defaultp > mat4
 4 columns of 4 components matrix of single-precision floating-point numbers. More...
 
+

Detailed Description

+

Matrix types of with C columns and R rows where C and R are values between 2 to 4 included. These types have exhaustive sets of operators.

+

Typedef Documentation

+ +

◆ dmat2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, defaultp > dmat2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_double2x2.hpp.

+ +
+
+ +

◆ dmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, double, defaultp > dmat2x2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double2x2.hpp.

+ +
+
+ +

◆ dmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, double, defaultp > dmat2x3
+
+ +

2 columns of 3 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double2x3.hpp.

+ +
+
+ +

◆ dmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, double, defaultp > dmat2x4
+
+ +

2 columns of 4 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double2x4.hpp.

+ +
+
+ +

◆ dmat3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, defaultp > dmat3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_double3x3.hpp.

+ +
+
+ +

◆ dmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, double, defaultp > dmat3x2
+
+ +

3 columns of 2 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double3x2.hpp.

+ +
+
+ +

◆ dmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, double, defaultp > dmat3x3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double3x3.hpp.

+ +
+
+ +

◆ dmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, double, defaultp > dmat3x4
+
+ +

3 columns of 4 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double3x4.hpp.

+ +
+
+ +

◆ dmat4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, defaultp > dmat4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_double4x4.hpp.

+ +
+
+ +

◆ dmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, double, defaultp > dmat4x2
+
+ +

4 columns of 2 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double4x2.hpp.

+ +
+
+ +

◆ dmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, double, defaultp > dmat4x3
+
+ +

4 columns of 3 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double4x3.hpp.

+ +
+
+ +

◆ dmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, double, defaultp > dmat4x4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_double4x4.hpp.

+ +
+
+ +

◆ mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > mat2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_float2x2.hpp.

+ +
+
+ +

◆ mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > mat2x2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float2x2.hpp.

+ +
+
+ +

◆ mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, defaultp > mat2x3
+
+ +

2 columns of 3 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float2x3.hpp.

+ +
+
+ +

◆ mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, defaultp > mat2x4
+
+ +

2 columns of 4 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float2x4.hpp.

+ +
+
+ +

◆ mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > mat3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_float3x3.hpp.

+ +
+
+ +

◆ mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, defaultp > mat3x2
+
+ +

3 columns of 2 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float3x2.hpp.

+ +
+
+ +

◆ mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > mat3x3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float3x3.hpp.

+ +
+
+ +

◆ mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, defaultp > mat3x4
+
+ +

3 columns of 4 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float3x4.hpp.

+ +
+
+ +

◆ mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > mat4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 20 of file matrix_float4x4.hpp.

+ +
+
+ +

◆ mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, defaultp > mat4x2
+
+ +

4 columns of 2 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float4x2.hpp.

+ +
+
+ +

◆ mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, defaultp > mat4x3
+
+ +

4 columns of 3 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float4x3.hpp.

+ +
+
+ +

◆ mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > mat4x4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+ +

Definition at line 15 of file matrix_float4x4.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00902.html b/include/glm/doc/api/a00902.html new file mode 100644 index 0000000..8bf24bd --- /dev/null +++ b/include/glm/doc/api/a00902.html @@ -0,0 +1,1820 @@ + + + + + + + +1.0.2 API documentation: Matrix types with precision qualifiers + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Matrix types with precision qualifiers
+
+
+ +

Matrix types with precision qualifiers which may result in various precision in term of ULPs. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, double, highp > highp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, highp > highp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, highp > highp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, highp > highp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, highp > highp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, highp > highp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, highp > highp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, highp > highp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, highp > highp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, highp > highp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, highp > highp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, highp > highp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, highp > highp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, highp > highp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, highp > highp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, highp > highp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, highp > highp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, highp > highp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, highp > highp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, highp > highp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, highp > highp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, highp > highp_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, highp > highp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, highp > highp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, lowp > lowp_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, lowp > lowp_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, lowp > lowp_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, lowp > lowp_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, lowp > lowp_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, lowp > lowp_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, lowp > lowp_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, lowp > lowp_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, lowp > lowp_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, lowp > lowp_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, lowp > lowp_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, lowp > lowp_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, lowp > lowp_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, lowp > lowp_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, lowp > lowp_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, lowp > lowp_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, lowp > lowp_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, lowp > lowp_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, double, mediump > mediump_dmat2x2
 2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, double, mediump > mediump_dmat2x3
 2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, double, mediump > mediump_dmat2x4
 2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, double, mediump > mediump_dmat3x2
 3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, double, mediump > mediump_dmat3x3
 3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, double, mediump > mediump_dmat3x4
 3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, double, mediump > mediump_dmat4x2
 4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, double, mediump > mediump_dmat4x3
 4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, double, mediump > mediump_dmat4x4
 4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 2, float, mediump > mediump_mat2x2
 2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 3, float, mediump > mediump_mat2x3
 2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 2, 4, float, mediump > mediump_mat2x4
 2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 2, float, mediump > mediump_mat3x2
 3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 3, float, mediump > mediump_mat3x3
 3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 3, 4, float, mediump > mediump_mat3x4
 3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 2, float, mediump > mediump_mat4x2
 4 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 3, float, mediump > mediump_mat4x3
 4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
typedef mat< 4, 4, float, mediump > mediump_mat4x4
 4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. More...
 
+

Detailed Description

+

Matrix types with precision qualifiers which may result in various precision in term of ULPs.

+

GLSL allows defining qualifiers for particular variables. With OpenGL's GLSL, these qualifiers have no effect; they are there for compatibility, with OpenGL ES's GLSL, these qualifiers do have an effect.

+

C++ has no language equivalent to qualifier qualifiers. So GLM provides the next-best thing: a number of typedefs that use a particular qualifier.

+

None of these types make any guarantees about the actual qualifier used.

+

Typedef Documentation

+ +

◆ highp_dmat2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, highp > highp_dmat2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ highp_dmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, double, highp > highp_dmat2x2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ highp_dmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, double, highp > highp_dmat2x3
+
+ +

2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double2x3_precision.hpp.

+ +
+
+ +

◆ highp_dmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, double, highp > highp_dmat2x4
+
+ +

2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double2x4_precision.hpp.

+ +
+
+ +

◆ highp_dmat3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, highp > highp_dmat3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ highp_dmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, double, highp > highp_dmat3x2
+
+ +

3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double3x2_precision.hpp.

+ +
+
+ +

◆ highp_dmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, double, highp > highp_dmat3x3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ highp_dmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, double, highp > highp_dmat3x4
+
+ +

3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double3x4_precision.hpp.

+ +
+
+ +

◆ highp_dmat4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, highp > highp_dmat4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ highp_dmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, double, highp > highp_dmat4x2
+
+ +

4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double4x2_precision.hpp.

+ +
+
+ +

◆ highp_dmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, double, highp > highp_dmat4x3
+
+ +

4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_double4x3_precision.hpp.

+ +
+
+ +

◆ highp_dmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, double, highp > highp_dmat4x4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ highp_mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, highp > highp_mat2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ highp_mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, highp > highp_mat2x2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ highp_mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, highp > highp_mat2x3
+
+ +

2 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float2x3_precision.hpp.

+ +
+
+ +

◆ highp_mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, highp > highp_mat2x4
+
+ +

2 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float2x4_precision.hpp.

+ +
+
+ +

◆ highp_mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, highp > highp_mat3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ highp_mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, highp > highp_mat3x2
+
+ +

3 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float3x2_precision.hpp.

+ +
+
+ +

◆ highp_mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, highp > highp_mat3x3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ highp_mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, highp > highp_mat3x4
+
+ +

3 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float3x4_precision.hpp.

+ +
+
+ +

◆ highp_mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, highp > highp_mat4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float4x4_precision.hpp.

+ +
+
+ +

◆ highp_mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, highp > highp_mat4x2
+
+ +

4 columns of 2 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float4x2_precision.hpp.

+ +
+
+ +

◆ highp_mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, highp > highp_mat4x3
+
+ +

4 columns of 3 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 28 of file matrix_float4x3_precision.hpp.

+ +
+
+ +

◆ highp_mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, highp > highp_mat4x4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using high precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 46 of file matrix_float4x4_precision.hpp.

+ +
+
+ +

◆ lowp_dmat2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, lowp > lowp_dmat2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ lowp_dmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, double, lowp > lowp_dmat2x2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ lowp_dmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, double, lowp > lowp_dmat2x3
+
+ +

2 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double2x3_precision.hpp.

+ +
+
+ +

◆ lowp_dmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, double, lowp > lowp_dmat2x4
+
+ +

2 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double2x4_precision.hpp.

+ +
+
+ +

◆ lowp_dmat3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, lowp > lowp_dmat3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ lowp_dmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, double, lowp > lowp_dmat3x2
+
+ +

3 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double3x2_precision.hpp.

+ +
+
+ +

◆ lowp_dmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, double, lowp > lowp_dmat3x3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ lowp_dmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, double, lowp > lowp_dmat3x4
+
+ +

3 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double3x4_precision.hpp.

+ +
+
+ +

◆ lowp_dmat4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, lowp > lowp_dmat4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ lowp_dmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, double, lowp > lowp_dmat4x2
+
+ +

4 columns of 2 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double4x2_precision.hpp.

+ +
+
+ +

◆ lowp_dmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, double, lowp > lowp_dmat4x3
+
+ +

4 columns of 3 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_double4x3_precision.hpp.

+ +
+
+ +

◆ lowp_dmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, double, lowp > lowp_dmat4x4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ lowp_mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, lowp > lowp_mat2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ lowp_mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, lowp > lowp_mat2x2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ lowp_mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, lowp > lowp_mat2x3
+
+ +

2 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float2x3_precision.hpp.

+ +
+
+ +

◆ lowp_mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, lowp > lowp_mat2x4
+
+ +

2 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float2x4_precision.hpp.

+ +
+
+ +

◆ lowp_mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, lowp > lowp_mat3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ lowp_mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, lowp > lowp_mat3x2
+
+ +

3 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float3x2_precision.hpp.

+ +
+
+ +

◆ lowp_mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, lowp > lowp_mat3x3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ lowp_mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, lowp > lowp_mat3x4
+
+ +

3 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float3x4_precision.hpp.

+ +
+
+ +

◆ lowp_mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, lowp > lowp_mat4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float4x4_precision.hpp.

+ +
+
+ +

◆ lowp_mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, lowp > lowp_mat4x2
+
+ +

4 columns of 2 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float4x2_precision.hpp.

+ +
+
+ +

◆ lowp_mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, lowp > lowp_mat4x3
+
+ +

4 columns of 3 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 16 of file matrix_float4x3_precision.hpp.

+ +
+
+ +

◆ lowp_mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, lowp > lowp_mat4x4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using low precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 34 of file matrix_float4x4_precision.hpp.

+ +
+
+ +

◆ mediump_dmat2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, mediump > mediump_dmat2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ mediump_dmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, double, mediump > mediump_dmat2x2
+
+ +

2 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_double2x2_precision.hpp.

+ +
+
+ +

◆ mediump_dmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, double, mediump > mediump_dmat2x3
+
+ +

2 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double2x3_precision.hpp.

+ +
+
+ +

◆ mediump_dmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, double, mediump > mediump_dmat2x4
+
+ +

2 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double2x4_precision.hpp.

+ +
+
+ +

◆ mediump_dmat3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, mediump > mediump_dmat3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ mediump_dmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, double, mediump > mediump_dmat3x2
+
+ +

3 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double3x2_precision.hpp.

+ +
+
+ +

◆ mediump_dmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, double, mediump > mediump_dmat3x3
+
+ +

3 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_double3x3_precision.hpp.

+ +
+
+ +

◆ mediump_dmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, double, mediump > mediump_dmat3x4
+
+ +

3 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double3x4_precision.hpp.

+ +
+
+ +

◆ mediump_dmat4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, mediump > mediump_dmat4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ mediump_dmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, double, mediump > mediump_dmat4x2
+
+ +

4 columns of 2 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double4x2_precision.hpp.

+ +
+
+ +

◆ mediump_dmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, double, mediump > mediump_dmat4x3
+
+ +

4 columns of 3 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_double4x3_precision.hpp.

+ +
+
+ +

◆ mediump_dmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, double, mediump > mediump_dmat4x4
+
+ +

4 columns of 4 components matrix of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_double4x4_precision.hpp.

+ +
+
+ +

◆ mediump_mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, mediump > mediump_mat2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ mediump_mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, mediump > mediump_mat2x2
+
+ +

2 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_float2x2_precision.hpp.

+ +
+
+ +

◆ mediump_mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, mediump > mediump_mat2x3
+
+ +

2 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float2x3_precision.hpp.

+ +
+
+ +

◆ mediump_mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, mediump > mediump_mat2x4
+
+ +

2 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float2x4_precision.hpp.

+ +
+
+ +

◆ mediump_mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, mediump > mediump_mat3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ mediump_mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, mediump > mediump_mat3x2
+
+ +

3 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float3x2_precision.hpp.

+ +
+
+ +

◆ mediump_mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, mediump > mediump_mat3x3
+
+ +

3 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_float3x3_precision.hpp.

+ +
+
+ +

◆ mediump_mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, mediump > mediump_mat3x4
+
+ +

3 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float3x4_precision.hpp.

+ +
+
+ +

◆ mediump_mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, mediump > mediump_mat4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float4x4_precision.hpp.

+ +
+
+ +

◆ mediump_mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, mediump > mediump_mat4x2
+
+ +

4 columns of 2 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float4x2_precision.hpp.

+ +
+
+ +

◆ mediump_mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, mediump > mediump_mat4x3
+
+ +

4 columns of 3 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 22 of file matrix_float4x3_precision.hpp.

+ +
+
+ +

◆ mediump_mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, mediump > mediump_mat4x4
+
+ +

4 columns of 4 components matrix of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.

+
See also
GLSL 4.20.8 specification, section 4.1.6 Matrices
+
+GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier
+ +

Definition at line 40 of file matrix_float4x4_precision.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00903.html b/include/glm/doc/api/a00903.html new file mode 100644 index 0000000..0c1e47c --- /dev/null +++ b/include/glm/doc/api/a00903.html @@ -0,0 +1,256 @@ + + + + + + + +1.0.2 API documentation: Stable extensions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Stable extensions
+
+
+ +

Additional features not specified by GLSL specification. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 GLM_EXT_matrix_clip_space
 
 GLM_EXT_matrix_common
 
 GLM_EXT_matrix_int2x2
 
 GLM_EXT_matrix_int2x2_sized
 
 GLM_EXT_matrix_int2x3
 
 GLM_EXT_matrix_int2x3_sized
 
 GLM_EXT_matrix_int2x4
 
 GLM_EXT_matrix_int2x4_sized
 
 GLM_EXT_matrix_int3x2
 
 GLM_EXT_matrix_int3x2_sized
 
 GLM_EXT_matrix_int3x3
 
 GLM_EXT_matrix_int3x3_sized
 
 GLM_EXT_matrix_int3x4
 
 GLM_EXT_matrix_int3x4_sized
 
 GLM_EXT_matrix_int4x2
 
 GLM_EXT_matrix_int4x2_sized
 
 GLM_EXT_matrix_int4x3
 
 GLM_EXT_matrix_int4x3_sized
 
 GLM_EXT_matrix_int4x4
 
 GLM_EXT_matrix_int4x4_sized
 
 GLM_EXT_matrix_integer
 
 GLM_EXT_matrix_projection
 
 GLM_EXT_matrix_relational
 
 GLM_EXT_matrix_transform
 
 GLM_EXT_matrix_uint2x2
 
 GLM_EXT_matrix_uint2x2_sized
 
 GLM_EXT_matrix_uint2x3
 
 GLM_EXT_matrix_uint2x3_sized
 
 GLM_EXT_matrix_int2x4
 
 GLM_EXT_matrix_uint2x4_sized
 
 GLM_EXT_matrix_uint3x2
 
 GLM_EXT_matrix_uint3x2_sized
 
 GLM_EXT_matrix_uint3x3
 
 GLM_EXT_matrix_uint3x3_sized
 
 GLM_EXT_matrix_uint3x4
 
 GLM_EXT_matrix_uint3x4_sized
 
 GLM_EXT_matrix_uint4x2
 
 GLM_EXT_matrix_uint4x2_sized
 
 GLM_EXT_matrix_uint4x3
 
 GLM_EXT_matrix_uint4x3_sized
 
 GLM_EXT_matrix_uint4x4
 
 GLM_EXT_matrix_uint4x4_sized
 
 GLM_EXT_quaternion_common
 
 GLM_EXT_quaternion_double
 
 GLM_EXT_quaternion_double_precision
 
 GLM_EXT_quaternion_exponential
 
 GLM_EXT_quaternion_float
 
 GLM_EXT_quaternion_float_precision
 
 GLM_EXT_quaternion_geometric
 
 GLM_EXT_quaternion_relational
 
 GLM_EXT_quaternion_transform
 
 GLM_EXT_quaternion_trigonometric
 
 GLM_EXT_scalar_common
 
 GLM_EXT_scalar_constants
 
 GLM_EXT_scalar_int_sized
 
 GLM_EXT_scalar_integer
 
 GLM_EXT_scalar_packing
 
 GLM_EXT_scalar_reciprocal
 
 GLM_EXT_scalar_relational
 
 GLM_EXT_scalar_uint_sized
 
 GLM_EXT_scalar_ulp
 
 GLM_EXT_vector_bool1
 
 GLM_EXT_vector_bool1_precision
 
 GLM_EXT_vector_common
 
 GLM_EXT_vector_double1
 
 GLM_EXT_vector_double1_precision
 
 GLM_EXT_vector_float1
 
 GLM_EXT_vector_float1_precision
 
 GLM_EXT_vector_int1
 
 GLM_EXT_vector_int1_sized
 
 GLM_EXT_vector_int2_sized
 
 GLM_EXT_vector_int3_sized
 
 GLM_EXT_vector_int4_sized
 
 GLM_EXT_vector_integer
 
 GLM_EXT_vector_packing
 
 GLM_EXT_vector_reciprocal
 
 GLM_EXT_vector_relational
 
 GLM_EXT_vector_uint1
 
 GLM_EXT_vector_uint1_sized
 
 GLM_EXT_vector_uint2_sized
 
 GLM_EXT_vector_uint3_sized
 
 GLM_EXT_vector_uint4_sized
 
 GLM_EXT_vector_ulp
 
+

Detailed Description

+

Additional features not specified by GLSL specification.

+

EXT extensions are fully tested and documented.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+
+ + + + diff --git a/include/glm/doc/api/a00904.html b/include/glm/doc/api/a00904.html new file mode 100644 index 0000000..50da3c7 --- /dev/null +++ b/include/glm/doc/api/a00904.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: Recommended extensions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Recommended extensions
+
+
+ +

Additional features not specified by GLSL specification. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 GLM_GTC_bitfield
 
 GLM_GTC_color_space
 
 GLM_GTC_constants
 
 GLM_GTC_epsilon
 
 GLM_GTC_integer
 Allow to perform bit operations on integer values.
 
 GLM_GTC_matrix_access
 
 GLM_GTC_matrix_integer
 
 GLM_GTC_matrix_inverse
 
 GLM_GTC_matrix_transform
 
 GLM_GTC_noise
 
 GLM_GTC_packing
 
 GLM_GTC_quaternion
 
 GLM_GTC_random
 
 GLM_GTC_reciprocal
 
 GLM_GTC_round
 
 GLM_GTC_type_aligned
 
 GLM_GTC_type_precision
 
 GLM_GTC_type_ptr
 
 GLM_GTC_ulp
 
 GLM_GTC_vec1
 
+

Detailed Description

+

Additional features not specified by GLSL specification.

+

GTC extensions aim to be stable with tests and documentation.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+
+ + + + diff --git a/include/glm/doc/api/a00905.html b/include/glm/doc/api/a00905.html new file mode 100644 index 0000000..94abe75 --- /dev/null +++ b/include/glm/doc/api/a00905.html @@ -0,0 +1,226 @@ + + + + + + + +1.0.2 API documentation: Experimental extensions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Experimental extensions
+
+
+ +

Experimental features not specified by GLSL specification. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Modules

 GLM_GTX_associated_min_max
 Min and max functions that return associated values not the compared ones.
 
 GLM_GTX_bit
 
 GLM_GTX_closest_point
 
 GLM_GTX_color_encoding
 Allow to perform bit operations on integer values.
 
 GLM_GTX_color_space
 
 GLM_GTX_color_space_YCoCg
 
 GLM_GTX_common
 Provide functions to increase the compatibility with Cg and HLSL languages.
 
 GLM_GTX_compatibility
 
 GLM_GTX_component_wise
 
 GLM_GTX_dual_quaternion
 
 GLM_GTX_easing
 
 GLM_GTX_euler_angles
 
 GLM_GTX_extend
 
 GLM_GTX_extended_min_max
 
 GLM_GTX_exterior_product
 Allow to perform bit operations on integer values.
 
 GLM_GTX_fast_exponential
 
 GLM_GTX_fast_square_root
 
 GLM_GTX_fast_trigonometry
 
 GLM_GTX_functions
 
 GLM_GTX_gradient_paint
 
 GLM_GTX_handed_coordinate_space
 
 GLM_GTX_hash
 
 GLM_GTX_integer
 
 GLM_GTX_intersect
 
 GLM_GTX_io
 
 GLM_GTX_iteration
 
 GLM_GTX_log_base
 
 GLM_GTX_matrix_cross_product
 
 GLM_GTX_matrix_decompose
 
 GLM_GTX_matrix_factorisation
 
 GLM_GTX_matrix_interpolation
 
 GLM_GTX_matrix_major_storage
 
 GLM_GTX_matrix_operation
 
 GLM_GTX_matrix_query
 
 GLM_GTX_matrix_transform_2d
 
 GLM_GTX_mixed_producte
 
 GLM_GTX_norm
 
 GLM_GTX_normal
 
 GLM_GTX_normalize_dot
 
 GLM_GTX_number_precision
 
 GLM_GTX_optimum_pow
 
 GLM_GTX_orthonormalize
 
 GLM_GTX_pca
 
 GLM_GTX_perpendicular
 
 GLM_GTX_polar_coordinates
 
 GLM_GTX_projection
 
 GLM_GTX_quaternion
 
 GLM_GTX_range
 
 GLM_GTX_raw_data
 
 GLM_GTX_rotate_normalized_axis
 
 GLM_GTX_rotate_vector
 
 GLM_GTX_scalar_multiplication
 
 GLM_GTX_scalar_relational
 
 GLM_GTX_spline
 
 GLM_GTX_std_based_type
 
 GLM_GTX_string_cast
 
 GLM_GTX_structured_bindings
 
 GLM_GTX_texture
 
 GLM_GTX_transform
 
 GLM_GTX_transform2
 
 GLM_GTX_type_aligned
 
 GLM_GTX_type_trait
 
 GLM_GTX_vec_swizzle
 
 GLM_GTX_vector_angle
 
 GLM_GTX_vector_query
 
 GLM_GTX_wrap
 
+

Detailed Description

+

Experimental features not specified by GLSL specification.

+

Experimental extensions are useful functions and types, but the development of their API and functionality is not necessarily stable. They can change substantially between versions. Backwards compatibility is not much of an issue for them.

+

Even if it's highly unrecommended, it's possible to include all the extensions at once by including <glm/ext.hpp>. Otherwise, each extension needs to be included a specific file.

+
+ + + + diff --git a/include/glm/doc/api/a00906.html b/include/glm/doc/api/a00906.html new file mode 100644 index 0000000..46c5bd3 --- /dev/null +++ b/include/glm/doc/api/a00906.html @@ -0,0 +1,1276 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_bitfield + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_bitfield
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL glm::u8vec2 bitfieldDeinterleave (glm::uint16 x)
 Deinterleaves the bits of x. More...
 
GLM_FUNC_DECL glm::u16vec2 bitfieldDeinterleave (glm::uint32 x)
 Deinterleaves the bits of x. More...
 
GLM_FUNC_DECL glm::u32vec2 bitfieldDeinterleave (glm::uint64 x)
 Deinterleaves the bits of x. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillOne (genIUType Value, int FirstBit, int BitCount)
 Set to 1 a range of bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillOne (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
 Set to 1 a range of bits. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldFillZero (genIUType Value, int FirstBit, int BitCount)
 Set to 0 a range of bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldFillZero (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
 Set to 0 a range of bits. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int16 x, int16 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int16 x, int16 y, int16 z, int16 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int64 bitfieldInterleave (int32 x, int32 y, int32 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int16 bitfieldInterleave (int8 x, int8 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL int32 bitfieldInterleave (int8 x, int8 y, int8 z, int8 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (u16vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (u32vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint16 bitfieldInterleave (u8vec2 const &v)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint16 x, uint16 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint16 x, uint16 y, uint16 z, uint16 w)
 Interleaves the bits of x, y, z and w. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint64 bitfieldInterleave (uint32 x, uint32 y, uint32 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint16 bitfieldInterleave (uint8 x, uint8 y)
 Interleaves the bits of x and y. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z)
 Interleaves the bits of x, y and z. More...
 
GLM_FUNC_DECL uint32 bitfieldInterleave (uint8 x, uint8 y, uint8 z, uint8 w)
 Interleaves the bits of x, y, z and w. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateLeft (genIUType In, int Shift)
 Rotate all bits to the left. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateLeft (vec< L, T, Q > const &In, int Shift)
 Rotate all bits to the left. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType bitfieldRotateRight (genIUType In, int Shift)
 Rotate all bits to the right. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldRotateRight (vec< L, T, Q > const &In, int Shift)
 Rotate all bits to the right. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType mask (genIUType Bits)
 Build a mask of 'count' bits. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > mask (vec< L, T, Q > const &v)
 Build a mask of 'count' bits. More...
 
+

Detailed Description

+

Include <glm/gtc/bitfield.hpp> to use the features of this extension.

+

Allow to perform bit operations on integer values

+

Function Documentation

+ +

◆ bitfieldDeinterleave() [1/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL glm::u8vec2 glm::bitfieldDeinterleave (glm::uint16 x)
+
+ +

Deinterleaves the bits of x.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldDeinterleave() [2/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL glm::u16vec2 glm::bitfieldDeinterleave (glm::uint32 x)
+
+ +

Deinterleaves the bits of x.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldDeinterleave() [3/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL glm::u32vec2 glm::bitfieldDeinterleave (glm::uint64 x)
+
+ +

Deinterleaves the bits of x.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldFillOne() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldFillOne (genIUType Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 1 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldFillOne() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillOne (vec< L, T, Q > const & Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 1 a range of bits.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldFillZero() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldFillZero (genIUType Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 0 a range of bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldFillZero() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillZero (vec< L, T, Q > const & Value,
int FirstBit,
int BitCount 
)
+
+ +

Set to 0 a range of bits.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [1/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int16 x,
int16 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [2/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [3/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int16 x,
int16 y,
int16 z,
int16 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [4/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [5/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::bitfieldInterleave (int32 x,
int32 y,
int32 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [6/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int16 glm::bitfieldInterleave (int8 x,
int8 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [7/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [8/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int32 glm::bitfieldInterleave (int8 x,
int8 y,
int8 z,
int8 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [9/19]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (u16vec2 const & v)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [10/19]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (u32vec2 const & v)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [11/19]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::bitfieldInterleave (u8vec2 const & v)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [12/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint16 x,
uint16 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [13/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [14/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint16 x,
uint16 y,
uint16 z,
uint16 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [15/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [16/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint64 glm::bitfieldInterleave (uint32 x,
uint32 y,
uint32 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [17/19]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint16 glm::bitfieldInterleave (uint8 x,
uint8 y 
)
+
+ +

Interleaves the bits of x and y.

+

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [18/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z 
)
+
+ +

Interleaves the bits of x, y and z.

+

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldInterleave() [19/19]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint32 glm::bitfieldInterleave (uint8 x,
uint8 y,
uint8 z,
uint8 w 
)
+
+ +

Interleaves the bits of x, y, z and w.

+

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldRotateLeft() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldRotateLeft (genIUType In,
int Shift 
)
+
+ +

Rotate all bits to the left.

+

All the bits dropped in the left side are inserted back on the right side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldRotateLeft() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateLeft (vec< L, T, Q > const & In,
int Shift 
)
+
+ +

Rotate all bits to the left.

+

All the bits dropped in the left side are inserted back on the right side.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldRotateRight() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genIUType glm::bitfieldRotateRight (genIUType In,
int Shift 
)
+
+ +

Rotate all bits to the right.

+

All the bits dropped in the right side are inserted back on the left side.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ bitfieldRotateRight() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateRight (vec< L, T, Q > const & In,
int Shift 
)
+
+ +

Rotate all bits to the right.

+

All the bits dropped in the right side are inserted back on the left side.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ mask() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::mask (genIUType Bits)
+
+ +

Build a mask of 'count' bits.

+
See also
GLM_GTC_bitfield
+ +
+
+ +

◆ mask() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::mask (vec< L, T, Q > const & v)
+
+ +

Build a mask of 'count' bits.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TSigned and unsigned integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_bitfield
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00907.html b/include/glm/doc/api/a00907.html new file mode 100644 index 0000000..41ad3fb --- /dev/null +++ b/include/glm/doc/api/a00907.html @@ -0,0 +1,177 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_color_space + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_color_space
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear)
 Convert a linear color to sRGB color using a standard gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear, T Gamma)
 Convert a linear color to sRGB color using a custom gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB)
 Convert a sRGB color to linear color using a standard gamma correction. More...
 
+template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB, T Gamma)
 Convert a sRGB color to linear color using a custom gamma correction.
 
+

Detailed Description

+

Include <glm/gtc/color_space.hpp> to use the features of this extension.

+

Allow to perform bit operations on integer values

+

Function Documentation

+ +

◆ convertLinearToSRGB() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::convertLinearToSRGB (vec< L, T, Q > const & ColorLinear)
+
+ +

Convert a linear color to sRGB color using a standard gamma correction.

+

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

+ +
+
+ +

◆ convertLinearToSRGB() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::convertLinearToSRGB (vec< L, T, Q > const & ColorLinear,
Gamma 
)
+
+ +

Convert a linear color to sRGB color using a custom gamma correction.

+

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

+ +
+
+ +

◆ convertSRGBToLinear()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::convertSRGBToLinear (vec< L, T, Q > const & ColorSRGB)
+
+ +

Convert a sRGB color to linear color using a standard gamma correction.

+

IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00908.html b/include/glm/doc/api/a00908.html new file mode 100644 index 0000000..e78f2f9 --- /dev/null +++ b/include/glm/doc/api/a00908.html @@ -0,0 +1,759 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_constants + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_constants
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType e ()
 Return e constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType euler ()
 Return Euler's constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType four_over_pi ()
 Return 4 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType golden_ratio ()
 Return the golden ratio constant. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType half_pi ()
 Return pi / 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ln_two ()
 Return ln(ln(2)). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_ten ()
 Return ln(10). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType ln_two ()
 Return ln(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one ()
 Return 1. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_pi ()
 Return 1 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_root_two ()
 Return 1 / sqrt(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType one_over_two_pi ()
 Return 1 / (pi * 2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType quarter_pi ()
 Return pi / 4. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_five ()
 Return sqrt(5). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_half_pi ()
 Return sqrt(pi / 2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_ln_four ()
 Return sqrt(ln(4)). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_pi ()
 Return square root of pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_three ()
 Return sqrt(3). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two ()
 Return sqrt(2). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType root_two_pi ()
 Return sqrt(2 * pi). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType tau ()
 Return unit-circle circumference, or pi * 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType third ()
 Return 1 / 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType three_over_two_pi ()
 Return pi / 2 * 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_pi ()
 Return 2 / pi. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_over_root_pi ()
 Return 2 / sqrt(pi). More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_pi ()
 Return pi * 2. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType two_thirds ()
 Return 2 / 3. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType zero ()
 Return 0. More...
 
+

Detailed Description

+

Include <glm/gtc/constants.hpp> to use the features of this extension.

+

Provide a list of constants and precomputed useful values.

+

Function Documentation

+ +

◆ e()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::e ()
+
+ +

Return e constant.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ euler()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::euler ()
+
+ +

Return Euler's constant.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ four_over_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::four_over_pi ()
+
+ +

Return 4 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ golden_ratio()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::golden_ratio ()
+
+ +

Return the golden ratio constant.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ half_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::half_pi ()
+
+ +

Return pi / 2.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ ln_ln_two()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_ln_two ()
+
+ +

Return ln(ln(2)).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ ln_ten()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_ten ()
+
+ +

Return ln(10).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ ln_two()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::ln_two ()
+
+ +

Return ln(2).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ one()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one ()
+
+ +

Return 1.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ one_over_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_pi ()
+
+ +

Return 1 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ one_over_root_two()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_root_two ()
+
+ +

Return 1 / sqrt(2).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ one_over_two_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::one_over_two_pi ()
+
+ +

Return 1 / (pi * 2).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ quarter_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::quarter_pi ()
+
+ +

Return pi / 4.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_five()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_five ()
+
+ +

Return sqrt(5).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_half_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_half_pi ()
+
+ +

Return sqrt(pi / 2).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_ln_four()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_ln_four ()
+
+ +

Return sqrt(ln(4)).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_pi ()
+
+ +

Return square root of pi.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_three()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_three ()
+
+ +

Return sqrt(3).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_two()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_two ()
+
+ +

Return sqrt(2).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ root_two_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::root_two_pi ()
+
+ +

Return sqrt(2 * pi).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ tau()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::tau ()
+
+ +

Return unit-circle circumference, or pi * 2.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ third()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::third ()
+
+ +

Return 1 / 3.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ three_over_two_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::three_over_two_pi ()
+
+ +

Return pi / 2 * 3.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ two_over_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_over_pi ()
+
+ +

Return 2 / pi.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ two_over_root_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_over_root_pi ()
+
+ +

Return 2 / sqrt(pi).

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ two_pi()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_pi ()
+
+ +

Return pi * 2.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ two_thirds()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::two_thirds ()
+
+ +

Return 2 / 3.

+
See also
GLM_GTC_constants
+ +
+
+ +

◆ zero()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR genType glm::zero ()
+
+ +

Return 0.

+
See also
GLM_GTC_constants
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00909.html b/include/glm/doc/api/a00909.html new file mode 100644 index 0000000..de9c3e7 --- /dev/null +++ b/include/glm/doc/api/a00909.html @@ -0,0 +1,255 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_epsilon + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_epsilon
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool epsilonEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > epsilonEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL bool epsilonNotEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > epsilonNotEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
+

Detailed Description

+

Include <glm/gtc/epsilon.hpp> to use the features of this extension.

+

Comparison functions for a user defined epsilon values.

+

Function Documentation

+ +

◆ epsilonEqual() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::epsilonEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +

◆ epsilonEqual() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::epsilonEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
T const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +

◆ epsilonNotEqual() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::epsilonNotEqual (genType const & x,
genType const & y,
genType const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| >= epsilon.

+

True if this expression is not satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+ +

◆ epsilonNotEqual() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::epsilonNotEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y,
T const & epsilon 
)
+
+ +

Returns the component-wise comparison of |x - y| < epsilon.

+

True if this expression is not satisfied.

+
See also
GLM_GTC_epsilon
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00910.html b/include/glm/doc/api/a00910.html new file mode 100644 index 0000000..132ef84 --- /dev/null +++ b/include/glm/doc/api/a00910.html @@ -0,0 +1,82 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTC_integer
+
+
+ +

Allow to perform bit operations on integer values. +More...

+

Allow to perform bit operations on integer values.

+

Include <glm/gtc/integer.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00911.html b/include/glm/doc/api/a00911.html new file mode 100644 index 0000000..b673545 --- /dev/null +++ b/include/glm/doc/api/a00911.html @@ -0,0 +1,239 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_matrix_access + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_matrix_access
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::col_type column (genType const &m, length_t index)
 Get a specific column of a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType column (genType const &m, length_t index, typename genType::col_type const &x)
 Set a specific column to a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType::row_type row (genType const &m, length_t index)
 Get a specific row of a matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType row (genType const &m, length_t index, typename genType::row_type const &x)
 Set a specific row to a matrix. More...
 
+

Detailed Description

+

Include <glm/gtc/matrix_access.hpp> to use the features of this extension.

+

Defines functions to access rows or columns of a matrix easily.

+

Function Documentation

+ +

◆ column() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::col_type glm::column (genType const & m,
length_t index 
)
+
+ +

Get a specific column of a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +

◆ column() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::column (genType const & m,
length_t index,
typename genType::col_type const & x 
)
+
+ +

Set a specific column to a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +

◆ row() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType::row_type glm::row (genType const & m,
length_t index 
)
+
+ +

Get a specific row of a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+ +

◆ row() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::row (genType const & m,
length_t index,
typename genType::row_type const & x 
)
+
+ +

Set a specific row to a matrix.

+
See also
GLM_GTC_matrix_access
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00912.html b/include/glm/doc/api/a00912.html new file mode 100644 index 0000000..b4e9f95 --- /dev/null +++ b/include/glm/doc/api/a00912.html @@ -0,0 +1,1671 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_matrix_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_matrix_integer
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, int, highp > highp_imat2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, highp > highp_imat2x2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, highp > highp_imat2x3
 High-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, highp > highp_imat2x4
 High-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, highp > highp_imat3x2
 High-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3x3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, highp > highp_imat3x4
 High-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, highp > highp_imat4x2
 High-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, highp > highp_imat4x3
 High-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4x4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2x2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, highp > highp_umat2x3
 High-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, highp > highp_umat2x4
 High-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, highp > highp_umat3x2
 High-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3x3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, highp > highp_umat3x4
 High-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, highp > highp_umat4x2
 High-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, highp > highp_umat4x3
 High-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4x4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2x2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, lowp > lowp_imat2x3
 Low-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, lowp > lowp_imat2x4
 Low-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, lowp > lowp_imat3x2
 Low-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3x3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, lowp > lowp_imat3x4
 Low-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, lowp > lowp_imat4x2
 Low-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, lowp > lowp_imat4x3
 Low-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4x4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2x2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, lowp > lowp_umat2x3
 Low-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, lowp > lowp_umat2x4
 Low-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, lowp > lowp_umat3x2
 Low-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3x3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, lowp > lowp_umat3x4
 Low-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, lowp > lowp_umat4x2
 Low-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, lowp > lowp_umat4x3
 Low-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4x4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2x2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 2, 3, int, mediump > mediump_imat2x3
 Medium-qualifier signed integer 2x3 matrix. More...
 
typedef mat< 2, 4, int, mediump > mediump_imat2x4
 Medium-qualifier signed integer 2x4 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 2, int, mediump > mediump_imat3x2
 Medium-qualifier signed integer 3x2 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3x3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 3, 4, int, mediump > mediump_imat3x4
 Medium-qualifier signed integer 3x4 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 4, 2, int, mediump > mediump_imat4x2
 Medium-qualifier signed integer 4x2 matrix. More...
 
typedef mat< 4, 3, int, mediump > mediump_imat4x3
 Medium-qualifier signed integer 4x3 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4x4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2x2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 2, 3, uint, mediump > mediump_umat2x3
 Medium-qualifier unsigned integer 2x3 matrix. More...
 
typedef mat< 2, 4, uint, mediump > mediump_umat2x4
 Medium-qualifier unsigned integer 2x4 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 2, uint, mediump > mediump_umat3x2
 Medium-qualifier unsigned integer 3x2 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3x3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 3, 4, uint, mediump > mediump_umat3x4
 Medium-qualifier unsigned integer 3x4 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 4, 2, uint, mediump > mediump_umat4x2
 Medium-qualifier unsigned integer 4x2 matrix. More...
 
typedef mat< 4, 3, uint, mediump > mediump_umat4x3
 Medium-qualifier unsigned integer 4x3 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4x4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

Include <glm/gtc/matrix_integer.hpp> to use the features of this extension.

+

Defines a number of matrices with integer types.

+

Typedef Documentation

+ +

◆ highp_imat2

+ +
+
+ + + + +
typedef mat<2, 2, int, highp> highp_imat2
+
+ +

High-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 37 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_imat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int, highp > highp_imat2x2
+
+ +

High-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 814 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int, highp > highp_imat2x3
+
+ +

High-qualifier signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 815 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int, highp > highp_imat2x4
+
+ +

High-qualifier signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 816 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat3

+ +
+
+ + + + +
typedef mat<3, 3, int, highp> highp_imat3
+
+ +

High-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 41 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_imat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int, highp > highp_imat3x2
+
+ +

High-qualifier signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 817 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int, highp > highp_imat3x3
+
+ +

High-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 818 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int, highp > highp_imat3x4
+
+ +

High-qualifier signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 819 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat4

+ +
+
+ + + + +
typedef mat<4, 4, int, highp> highp_imat4
+
+ +

High-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 45 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_imat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int, highp > highp_imat4x2
+
+ +

High-qualifier signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 820 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int, highp > highp_imat4x3
+
+ +

High-qualifier signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 821 of file fwd.hpp.

+ +
+
+ +

◆ highp_imat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int, highp > highp_imat4x4
+
+ +

High-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 822 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat2

+ +
+
+ + + + +
typedef mat<2, 2, uint, highp> highp_umat2
+
+ +

High-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 186 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_umat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint, highp > highp_umat2x2
+
+ +

High-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1021 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint, highp > highp_umat2x3
+
+ +

High-qualifier unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1022 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint, highp > highp_umat2x4
+
+ +

High-qualifier unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1023 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat3

+ +
+
+ + + + +
typedef mat<3, 3, uint, highp> highp_umat3
+
+ +

High-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 190 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_umat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint, highp > highp_umat3x2
+
+ +

High-qualifier unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1024 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint, highp > highp_umat3x3
+
+ +

High-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1025 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint, highp > highp_umat3x4
+
+ +

High-qualifier unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1026 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat4

+ +
+
+ + + + +
typedef mat<4, 4, uint, highp> highp_umat4
+
+ +

High-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 194 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ highp_umat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint, highp > highp_umat4x2
+
+ +

High-qualifier unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1027 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint, highp > highp_umat4x3
+
+ +

High-qualifier unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1028 of file fwd.hpp.

+ +
+
+ +

◆ highp_umat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint, highp > highp_umat4x4
+
+ +

High-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1029 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat2

+ +
+
+ + + + +
typedef mat<2, 2, int, lowp> lowp_imat2
+
+ +

Low-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 136 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_imat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int, lowp > lowp_imat2x2
+
+ +

Low-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 794 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int, lowp > lowp_imat2x3
+
+ +

Low-qualifier signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 795 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int, lowp > lowp_imat2x4
+
+ +

Low-qualifier signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 796 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat3

+ +
+
+ + + + +
typedef mat<3, 3, int, lowp> lowp_imat3
+
+ +

Low-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 140 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_imat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int, lowp > lowp_imat3x2
+
+ +

Low-qualifier signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 797 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int, lowp > lowp_imat3x3
+
+ +

Low-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 798 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int, lowp > lowp_imat3x4
+
+ +

Low-qualifier signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 799 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat4

+ +
+
+ + + + +
typedef mat<4, 4, int, lowp> lowp_imat4
+
+ +

Low-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 144 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_imat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int, lowp > lowp_imat4x2
+
+ +

Low-qualifier signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 800 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int, lowp > lowp_imat4x3
+
+ +

Low-qualifier signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 801 of file fwd.hpp.

+ +
+
+ +

◆ lowp_imat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int, lowp > lowp_imat4x4
+
+ +

Low-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 802 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat2

+ +
+
+ + + + +
typedef mat<2, 2, uint, lowp> lowp_umat2
+
+ +

Low-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 285 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_umat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint, lowp > lowp_umat2x2
+
+ +

Low-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1001 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint, lowp > lowp_umat2x3
+
+ +

Low-qualifier unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1002 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint, lowp > lowp_umat2x4
+
+ +

Low-qualifier unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1003 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat3

+ +
+
+ + + + +
typedef mat<3, 3, uint, lowp> lowp_umat3
+
+ +

Low-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 289 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_umat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint, lowp > lowp_umat3x2
+
+ +

Low-qualifier unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1004 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint, lowp > lowp_umat3x3
+
+ +

Low-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1005 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint, lowp > lowp_umat3x4
+
+ +

Low-qualifier unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1006 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat4

+ +
+
+ + + + +
typedef mat<4, 4, uint, lowp> lowp_umat4
+
+ +

Low-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 293 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ lowp_umat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint, lowp > lowp_umat4x2
+
+ +

Low-qualifier unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1007 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint, lowp > lowp_umat4x3
+
+ +

Low-qualifier unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1008 of file fwd.hpp.

+ +
+
+ +

◆ lowp_umat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint, lowp > lowp_umat4x4
+
+ +

Low-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1009 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat2

+ +
+
+ + + + +
typedef mat<2, 2, int, mediump> mediump_imat2
+
+ +

Medium-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 86 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_imat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, int, mediump > mediump_imat2x2
+
+ +

Medium-qualifier signed integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 804 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, int, mediump > mediump_imat2x3
+
+ +

Medium-qualifier signed integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 805 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, int, mediump > mediump_imat2x4
+
+ +

Medium-qualifier signed integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 806 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat3

+ +
+
+ + + + +
typedef mat<3, 3, int, mediump> mediump_imat3
+
+ +

Medium-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 90 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_imat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, int, mediump > mediump_imat3x2
+
+ +

Medium-qualifier signed integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 807 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, int, mediump > mediump_imat3x3
+
+ +

Medium-qualifier signed integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 808 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, int, mediump > mediump_imat3x4
+
+ +

Medium-qualifier signed integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 809 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat4

+ +
+
+ + + + +
typedef mat<4, 4, int, mediump> mediump_imat4
+
+ +

Medium-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 94 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_imat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, int, mediump > mediump_imat4x2
+
+ +

Medium-qualifier signed integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 810 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, int, mediump > mediump_imat4x3
+
+ +

Medium-qualifier signed integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 811 of file fwd.hpp.

+ +
+
+ +

◆ mediump_imat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, int, mediump > mediump_imat4x4
+
+ +

Medium-qualifier signed integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 812 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat2

+ +
+
+ + + + +
typedef mat<2, 2, uint, mediump> mediump_umat2
+
+ +

Medium-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 235 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_umat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, uint, mediump > mediump_umat2x2
+
+ +

Medium-qualifier unsigned integer 2x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1011 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, uint, mediump > mediump_umat2x3
+
+ +

Medium-qualifier unsigned integer 2x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1012 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, uint, mediump > mediump_umat2x4
+
+ +

Medium-qualifier unsigned integer 2x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1013 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat3

+ +
+
+ + + + +
typedef mat<3, 3, uint, mediump> mediump_umat3
+
+ +

Medium-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 239 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_umat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, uint, mediump > mediump_umat3x2
+
+ +

Medium-qualifier unsigned integer 3x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1014 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, uint, mediump > mediump_umat3x3
+
+ +

Medium-qualifier unsigned integer 3x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1015 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, uint, mediump > mediump_umat3x4
+
+ +

Medium-qualifier unsigned integer 3x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1016 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat4

+ +
+
+ + + + +
typedef mat<4, 4, uint, mediump> mediump_umat4
+
+ +

Medium-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 243 of file gtc/matrix_integer.hpp.

+ +
+
+ +

◆ mediump_umat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, uint, mediump > mediump_umat4x2
+
+ +

Medium-qualifier unsigned integer 4x2 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1017 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, uint, mediump > mediump_umat4x3
+
+ +

Medium-qualifier unsigned integer 4x3 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1018 of file fwd.hpp.

+ +
+
+ +

◆ mediump_umat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, uint, mediump > mediump_umat4x4
+
+ +

Medium-qualifier unsigned integer 4x4 matrix.

+
See also
GLM_GTC_matrix_integer
+ +

Definition at line 1019 of file fwd.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00913.html b/include/glm/doc/api/a00913.html new file mode 100644 index 0000000..0d77df7 --- /dev/null +++ b/include/glm/doc/api/a00913.html @@ -0,0 +1,161 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_matrix_inverse + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_matrix_inverse
+
+
+ + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType affineInverse (genType const &m)
 Fast matrix inverse for affine matrix. More...
 
template<typename genType >
GLM_FUNC_DECL genType inverseTranspose (genType const &m)
 Compute the inverse transpose of a matrix. More...
 
+

Detailed Description

+

Include <glm/gtc/matrix_inverse.hpp> to use the features of this extension.

+

Defines additional matrix inverting functions.

+

Function Documentation

+ +

◆ affineInverse()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::affineInverse (genType const & m)
+
+ +

Fast matrix inverse for affine matrix.

+
Parameters
+ + +
mInput matrix to invert.
+
+
+
Template Parameters
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly inaccurate.
+
+
+
See also
GLM_GTC_matrix_inverse
+ +
+
+ +

◆ inverseTranspose()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::inverseTranspose (genType const & m)
+
+ +

Compute the inverse transpose of a matrix.

+
Parameters
+ + +
mInput matrix to invert transpose.
+
+
+
Template Parameters
+ + +
genTypeSquared floating-point matrix: half, float or double. Inverse of matrix based of half-qualifier floating point value is highly inaccurate.
+
+
+
See also
GLM_GTC_matrix_inverse
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00914.html b/include/glm/doc/api/a00914.html new file mode 100644 index 0000000..17a5ffd --- /dev/null +++ b/include/glm/doc/api/a00914.html @@ -0,0 +1,80 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_matrix_transform + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTC_matrix_transform
+
+
+

Include <glm/gtc/matrix_transform.hpp> to use the features of this extension.

+

Defines functions that generate common transformation matrices.

+

The matrices generated by this extension use standard OpenGL fixed-function conventions. For example, the lookAt function generates a transform from world space into the specific eye space that the projective matrix functions (perspective, ortho, etc) are designed to expect. The OpenGL compatibility specifications defines the particular layout of this eye space.

+
+ + + + diff --git a/include/glm/doc/api/a00915.html b/include/glm/doc/api/a00915.html new file mode 100644 index 0000000..8467ca3 --- /dev/null +++ b/include/glm/doc/api/a00915.html @@ -0,0 +1,172 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_noise + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T perlin (vec< L, T, Q > const &p)
 Classic perlin noise. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T perlin (vec< L, T, Q > const &p, vec< L, T, Q > const &rep)
 Periodic perlin noise. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T simplex (vec< L, T, Q > const &p)
 Simplex noise. More...
 
+

Detailed Description

+

Include <glm/gtc/noise.hpp> to use the features of this extension.

+

Defines 2D, 3D and 4D procedural noise functions Based on the work of Stefan Gustavson and Ashima Arts on "webgl-noise": https://github.com/ashima/webgl-noise Following Stefan Gustavson's paper "Simplex noise demystified": http://www.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf

+

Function Documentation

+ +

◆ perlin() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::perlin (vec< L, T, Q > const & p)
+
+ +

Classic perlin noise.

+
See also
GLM_GTC_noise
+ +
+
+ +

◆ perlin() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::perlin (vec< L, T, Q > const & p,
vec< L, T, Q > const & rep 
)
+
+ +

Periodic perlin noise.

+
See also
GLM_GTC_noise
+ +
+
+ +

◆ simplex()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::simplex (vec< L, T, Q > const & p)
+
+ +

Simplex noise.

+
See also
GLM_GTC_noise
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00916.html b/include/glm/doc/api/a00916.html new file mode 100644 index 0000000..579d71d --- /dev/null +++ b/include/glm/doc/api/a00916.html @@ -0,0 +1,2158 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_packing + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_packing
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
GLM_FUNC_DECL uint32 packF3x9_E1x5 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint16, Q > packHalf (vec< L, float, Q > const &v)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer. More...
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer. More...
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL int packInt2x16 (i16vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt2x32 (i32vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int16 packInt2x8 (i8vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt4x16 (i16vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int32 packInt4x8 (i8vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > packRGBM (vec< 3, T, Q > const &rgb)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
template<typename intType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, intType, Q > packSnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into signed integer values. More...
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 First, converts the normalized floating-point value v into 16-bit integer value. More...
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 First, converts the normalized floating-point value v into 8-bit integer value. More...
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values. More...
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packUint2x16 (u16vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint2x32 (u32vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint16 packUint2x8 (u8vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint4x16 (u16vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint32 packUint4x8 (u8vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
template<typename uintType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 First, converts the normalized floating-point value v into a 16-bit integer value. More...
 
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 First, converts the normalized floating-point value v into a 8-bit integer value. More...
 
GLM_FUNC_DECL uint8 packUnorm2x3_1x2 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm2x4 (vec2 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm3x5_1x1 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm4x4 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
GLM_FUNC_DECL vec3 unpackF3x9_E1x5 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > unpackHalf (vec< L, uint16, Q > const &p)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers. More...
 
GLM_FUNC_DECL i16vec2 unpackInt2x16 (int p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i32vec2 unpackInt2x32 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec2 unpackInt2x8 (int16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i16vec4 unpackInt4x16 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec4 unpackInt4x8 (int32 p)
 Convert a packed integer into an integer vector. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM (vec< 4, T, Q > const &rgbm)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
template<typename floatType , length_t L, typename intType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm (vec< L, intType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers. More...
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers. More...
 
GLM_FUNC_DECL u16vec2 unpackUint2x16 (uint p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u32vec2 unpackUint2x32 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec2 unpackUint2x8 (uint16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u16vec4 unpackUint4x16 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec4 unpackUint4x8 (uint32 p)
 Convert a packed integer into an integer vector. More...
 
template<typename floatType , length_t L, typename uintType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm (vec< L, uintType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 Convert a single 8-bit integer to a normalized floating-point value. More...
 
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x4 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x4 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
+

Detailed Description

+

Include <glm/gtc/packing.hpp> to use the features of this extension.

+

This extension provides a set of function to convert vertors to packed formats.

+

Function Documentation

+ +

◆ packF2x11_1x10()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packF2x11_1x10 (vec3 const & v)
+
+ +

First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.

+

Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value. Then, the results are packed into the returned 32-bit unsigned integer.

+

The first vector component specifies the 11 least-significant bits of the result; the last component specifies the 10 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec3 unpackF2x11_1x10(uint32 const& p)
+ +
+
+ +

◆ packF3x9_E1x5()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packF3x9_E1x5 (vec3 const & v)
+
+ +

First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values.

+

Then, converts the third component of the normalized floating-point value v into a 10-bit signless floating-point value. Then, the results are packed into the returned 32-bit unsigned integer.

+

The first vector component specifies the 11 least-significant bits of the result; the last component specifies the 10 most-significant bits.

+

packF3x9_E1x5 allows encoding into RGBE / RGB9E5 format

+
See also
GLM_GTC_packing
+
+vec3 unpackF3x9_E1x5(uint32 const& p)
+ +
+
+ +

◆ packHalf()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, uint16, Q> glm::packHalf (vec< L, float, Q > const & v)
+
+ +

Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification.

+

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p)
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packHalf1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packHalf1x16 (float v)
+
+ +

Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer.

+
See also
GLM_GTC_packing
+
+uint32 packHalf2x16(vec2 const& v)
+
+uint64 packHalf4x16(vec4 const& v)
+
+GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packHalf4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packHalf4x16 (vec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer.

+

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packHalf1x16(float const& v)
+
+uint32 packHalf2x16(vec2 const& v)
+
+GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packI3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packI3x10_1x2 (ivec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packI3x10_1x2(uvec4 const& v)
+
+uint32 packSnorm3x10_1x2(vec4 const& v)
+
+uint32 packUnorm3x10_1x2(vec4 const& v)
+
+ivec4 unpackI3x10_1x2(uint32 const& p)
+ +
+
+ +

◆ packInt2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::packInt2x16 (i16vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed integer.

+
See also
GLM_GTC_packing
+
+i16vec2 unpackInt2x16(int p)
+ +
+
+ +

◆ packInt2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int64 glm::packInt2x32 (i32vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed integer.

+
See also
GLM_GTC_packing
+
+i32vec2 unpackInt2x32(int p)
+ +
+
+ +

◆ packInt2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int16 glm::packInt2x8 (i8vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed integer.

+
See also
GLM_GTC_packing
+
+i8vec2 unpackInt2x8(int16 p)
+ +
+
+ +

◆ packInt4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int64 glm::packInt4x16 (i16vec4 const & v)
+
+ +

Convert each component from an integer vector into a packed integer.

+
See also
GLM_GTC_packing
+
+i16vec4 unpackInt4x16(int64 p)
+ +
+
+ +

◆ packInt4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int32 glm::packInt4x8 (i8vec4 const & v)
+
+ +

Convert each component from an integer vector into a packed integer.

+
See also
GLM_GTC_packing
+
+i8vec4 unpackInt4x8(int32 p)
+ +
+
+ +

◆ packRGBM()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::packRGBM (vec< 3, T, Q > const & rgb)
+
+ +

Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification.

+

The first vector component specifies the 16 least-significant bits of the result; the forth component specifies the 16 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& p)
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, intType, Q> glm::packSnorm (vec< L, floatType, Q > const & v)
+
+ +

Convert each component of the normalized floating-point vector into signed integer values.

+
See also
GLM_GTC_packing
+
+vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& p);
+ +
+
+ +

◆ packSnorm1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packSnorm1x16 (float v)
+
+ +

First, converts the normalized floating-point value v into 16-bit integer value.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 32767.0)

+
See also
GLM_GTC_packing
+
+uint32 packSnorm2x16(vec2 const& v)
+
+uint64 packSnorm4x16(vec4 const& v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm1x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packSnorm1x8 (float s)
+
+ +

First, converts the normalized floating-point value v into 8-bit integer value.

+

Then, the results are packed into the returned 8-bit unsigned integer.

+

The conversion to fixed point is done as follows: packSnorm1x8: round(clamp(s, -1, +1) * 127.0)

+
See also
GLM_GTC_packing
+
+uint16 packSnorm2x8(vec2 const& v)
+
+uint32 packSnorm4x8(vec4 const& v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packSnorm2x8 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8-bit integer values.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 127.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint8 packSnorm1x8(float const& v)
+
+uint32 packSnorm4x8(vec4 const& v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packSnorm3x10_1x2 (vec4 const & v)
+
+ +

First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values.

+

Then, converts the forth component of the normalized floating-point value v into 2-bit signed integer values. Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm3x10_1x2(xyz): round(clamp(c, -1, +1) * 511.0) packSnorm3x10_1x2(w): round(clamp(c, -1, +1) * 1.0)

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec4 unpackSnorm3x10_1x2(uint32 const& p)
+
+uint32 packUnorm3x10_1x2(vec4 const& v)
+
+uint32 packU3x10_1x2(uvec4 const& v)
+
+uint32 packI3x10_1x2(ivec4 const& v)
+ +
+
+ +

◆ packSnorm4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packSnorm4x16 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 16-bit integer values.

+

Then, the results are packed into the returned 64-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x8: round(clamp(c, -1, +1) * 32767.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packSnorm1x16(float const& v)
+
+uint32 packSnorm2x16(vec2 const& v)
+
+GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packU3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packU3x10_1x2 (uvec4 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer.

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packI3x10_1x2(ivec4 const& v)
+
+uint32 packSnorm3x10_1x2(vec4 const& v)
+
+uint32 packUnorm3x10_1x2(vec4 const& v)
+
+ivec4 unpackU3x10_1x2(uint32 const& p)
+ +
+
+ +

◆ packUint2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packUint2x16 (u16vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed unsigned integer.

+
See also
GLM_GTC_packing
+
+u16vec2 unpackUint2x16(uint p)
+ +
+
+ +

◆ packUint2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packUint2x32 (u32vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed unsigned integer.

+
See also
GLM_GTC_packing
+
+u32vec2 unpackUint2x32(int p)
+ +
+
+ +

◆ packUint2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUint2x8 (u8vec2 const & v)
+
+ +

Convert each component from an integer vector into a packed unsigned integer.

+
See also
GLM_GTC_packing
+
+u8vec2 unpackInt2x8(uint16 p)
+ +
+
+ +

◆ packUint4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packUint4x16 (u16vec4 const & v)
+
+ +

Convert each component from an integer vector into a packed unsigned integer.

+
See also
GLM_GTC_packing
+
+u16vec4 unpackUint4x16(uint64 p)
+ +
+
+ +

◆ packUint4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packUint4x8 (u8vec4 const & v)
+
+ +

Convert each component from an integer vector into a packed unsigned integer.

+
See also
GLM_GTC_packing
+
+u8vec4 unpackUint4x8(uint32 p)
+ +
+
+ +

◆ packUnorm()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, uintType, Q> glm::packUnorm (vec< L, floatType, Q > const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec<L, floatType, Q> unpackUnorm(vec<L, intType, Q> const& p);
+ +
+
+ +

◆ packUnorm1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm1x16 (float v)
+
+ +

First, converts the normalized floating-point value v into a 16-bit integer value.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm1x16: round(clamp(c, 0, +1) * 65535.0)

+
See also
GLM_GTC_packing
+
+uint16 packSnorm1x16(float const& v)
+
+uint64 packSnorm4x16(vec4 const& v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm1x5_1x6_1x5()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm1x5_1x6_1x5 (vec3 const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec3 unpackUnorm1x5_1x6_1x5(uint16 p)
+ +
+
+ +

◆ packUnorm1x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packUnorm1x8 (float v)
+
+ +

First, converts the normalized floating-point value v into a 8-bit integer value.

+

Then, the results are packed into the returned 8-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm1x8: round(clamp(c, 0, +1) * 255.0)

+
See also
GLM_GTC_packing
+
+uint16 packUnorm2x8(vec2 const& v)
+
+uint32 packUnorm4x8(vec4 const& v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm2x3_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packUnorm2x3_1x2 (vec3 const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec3 unpackUnorm2x3_1x2(uint8 p)
+ +
+
+ +

◆ packUnorm2x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint8 glm::packUnorm2x4 (vec2 const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec2 unpackUnorm2x4(uint8 p)
+ +
+
+ +

◆ packUnorm2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm2x8 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8-bit integer values.

+

Then, the results are packed into the returned 16-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm2x8: round(clamp(c, 0, +1) * 255.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint8 packUnorm1x8(float const& v)
+
+uint32 packUnorm4x8(vec4 const& v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint32 glm::packUnorm3x10_1x2 (vec4 const & v)
+
+ +

First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values.

+

Then, converts the forth component of the normalized floating-point value v into 2-bit signed uninteger values. Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm3x10_1x2(xyz): round(clamp(c, 0, +1) * 1023.0) packUnorm3x10_1x2(w): round(clamp(c, 0, +1) * 3.0)

+

The first vector component specifies the 10 least-significant bits of the result; the forth component specifies the 2 most-significant bits.

+
See also
GLM_GTC_packing
+
+vec4 unpackUnorm3x10_1x2(uint32 const& p)
+
+uint32 packUnorm3x10_1x2(vec4 const& v)
+
+uint32 packU3x10_1x2(uvec4 const& v)
+
+uint32 packI3x10_1x2(ivec4 const& v)
+ +
+
+ +

◆ packUnorm3x5_1x1()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm3x5_1x1 (vec4 const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec4 unpackUnorm3x5_1x1(uint16 p)
+ +
+
+ +

◆ packUnorm4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint64 glm::packUnorm4x16 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 16-bit integer values.

+

Then, the results are packed into the returned 64-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm4x16: round(clamp(c, 0, +1) * 65535.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLM_GTC_packing
+
+uint16 packUnorm1x16(float const& v)
+
+uint32 packUnorm2x16(vec2 const& v)
+
+GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm4x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint16 glm::packUnorm4x4 (vec4 const & v)
+
+ +

Convert each component of the normalized floating-point vector into unsigned integer values.

+
See also
GLM_GTC_packing
+
+vec4 unpackUnorm4x4(uint16 p)
+ +
+
+ +

◆ unpackF2x11_1x10()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec3 glm::unpackF2x11_1x10 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .

+

Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packF2x11_1x10(vec3 const& v)
+ +
+
+ +

◆ unpackF3x9_E1x5()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec3 glm::unpackF3x9_E1x5 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value .

+

Then, each component is converted to a normalized floating-point value to generate the returned three-component vector.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+

unpackF3x9_E1x5 allows decoding RGBE / RGB9E5 data

+
See also
GLM_GTC_packing
+
+uint32 packF3x9_E1x5(vec3 const& v)
+ +
+
+ +

◆ unpackHalf()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, float, Q> glm::unpackHalf (vec< L, uint16, Q > const & p)
+
+ +

Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

+
See also
GLM_GTC_packing
+
+vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v)
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackHalf1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackHalf1x16 (uint16 v)
+
+ +

Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values.

+
See also
GLM_GTC_packing
+
+vec2 unpackHalf2x16(uint32 const& v)
+
+vec4 unpackHalf4x16(uint64 const& v)
+
+GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackHalf4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackHalf4x16 (uint64 p)
+
+ +

Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

+
See also
GLM_GTC_packing
+
+float unpackHalf1x16(uint16 const& v)
+
+vec2 unpackHalf2x16(uint32 const& v)
+
+GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackI3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL ivec4 glm::unpackI3x10_1x2 (uint32 p)
+
+ +

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packU3x10_1x2(uvec4 const& v)
+
+vec4 unpackSnorm3x10_1x2(uint32 const& p);
+
+uvec4 unpackI3x10_1x2(uint32 const& p);
+ +
+
+ +

◆ unpackInt2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL i16vec2 glm::unpackInt2x16 (int p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int packInt2x16(i16vec2 const& v)
+ +
+
+ +

◆ unpackInt2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL i32vec2 glm::unpackInt2x32 (int64 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int packInt2x16(i32vec2 const& v)
+ +
+
+ +

◆ unpackInt2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL i8vec2 glm::unpackInt2x8 (int16 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int16 packInt2x8(i8vec2 const& v)
+ +
+
+ +

◆ unpackInt4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL i16vec4 glm::unpackInt4x16 (int64 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int64 packInt4x16(i16vec4 const& v)
+ +
+
+ +

◆ unpackInt4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL i8vec4 glm::unpackInt4x8 (int32 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int32 packInt2x8(i8vec4 const& v)
+ +
+
+ +

◆ unpackRGBM()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::unpackRGBM (vec< 4, T, Q > const & rgbm)
+
+ +

Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the forth component is obtained from the 16 most-significant bits of v.

+
See also
GLM_GTC_packing
+
+vec<4, T, Q> packRGBM(vec<3, float, Q> const& v)
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, floatType, Q> glm::unpackSnorm (vec< L, intType, Q > const & v)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v)
+ +
+
+ +

◆ unpackSnorm1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackSnorm1x16 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x16: clamp(f / 32767.0, -1, +1)

+
See also
GLM_GTC_packing
+
+vec2 unpackSnorm2x16(uint32 p)
+
+vec4 unpackSnorm4x16(uint64 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm1x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackSnorm1x8 (uint8 p)
+
+ +

First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.

+

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm1x8: clamp(f / 127.0, -1, +1)

+
See also
GLM_GTC_packing
+
+vec2 unpackSnorm2x8(uint16 p)
+
+vec4 unpackSnorm4x8(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackSnorm2x8 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x8: clamp(f / 127.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackSnorm1x8(uint8 p)
+
+vec4 unpackSnorm4x8(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm3x10_1x2 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 511.0, -1, +1) unpackSnorm3x10_1x2(w): clamp(f / 511.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packSnorm3x10_1x2(vec4 const& v)
+
+vec4 unpackUnorm3x10_1x2(uint32 const& p))
+
+uvec4 unpackI3x10_1x2(uint32 const& p)
+
+uvec4 unpackU3x10_1x2(uint32 const& p)
+ +
+
+ +

◆ unpackSnorm4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm4x16 (uint64 p)
+
+ +

First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x16: clamp(f / 32767.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackSnorm1x16(uint16 p)
+
+vec2 unpackSnorm2x16(uint32 p)
+
+GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackU3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uvec4 glm::unpackU3x10_1x2 (uint32 p)
+
+ +

Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers.

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packU3x10_1x2(uvec4 const& v)
+
+vec4 unpackSnorm3x10_1x2(uint32 const& p);
+
+uvec4 unpackI3x10_1x2(uint32 const& p);
+ +
+
+ +

◆ unpackUint2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL u16vec2 glm::unpackUint2x16 (uint p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+uint packUint2x16(u16vec2 const& v)
+ +
+
+ +

◆ unpackUint2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL u32vec2 glm::unpackUint2x32 (uint64 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+int packUint2x16(u32vec2 const& v)
+ +
+
+ +

◆ unpackUint2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL u8vec2 glm::unpackUint2x8 (uint16 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+uint16 packInt2x8(u8vec2 const& v)
+ +
+
+ +

◆ unpackUint4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL u16vec4 glm::unpackUint4x16 (uint64 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+uint64 packUint4x16(u16vec4 const& v)
+ +
+
+ +

◆ unpackUint4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL u8vec4 glm::unpackUint4x8 (uint32 p)
+
+ +

Convert a packed integer into an integer vector.

+
See also
GLM_GTC_packing
+
+uint32 packUint4x8(u8vec2 const& v)
+ +
+
+ +

◆ unpackUnorm()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, floatType, Q> glm::unpackUnorm (vec< L, uintType, Q > const & v)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+vec<L, intType, Q> packUnorm(vec<L, floatType, Q> const& v)
+ +
+
+ +

◆ unpackUnorm1x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackUnorm1x16 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.

+

Then, the value is converted to a normalized floating-point value to generate the returned scalar.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm1x16: f / 65535.0

+
See also
GLM_GTC_packing
+
+vec2 unpackUnorm2x16(uint32 p)
+
+vec4 unpackUnorm4x16(uint64 p)
+
+GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm1x5_1x6_1x5()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec3 glm::unpackUnorm1x5_1x6_1x5 (uint16 p)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+uint16 packUnorm1x5_1x6_1x5(vec3 const& v)
+ +
+
+ +

◆ unpackUnorm1x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL float glm::unpackUnorm1x8 (uint8 p)
+
+ +

Convert a single 8-bit integer to a normalized floating-point value.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+
See also
GLM_GTC_packing
+
+vec2 unpackUnorm2x8(uint16 p)
+
+vec4 unpackUnorm4x8(uint32 p)
+
+GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm2x3_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec3 glm::unpackUnorm2x3_1x2 (uint8 p)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+uint8 packUnorm2x3_1x2(vec3 const& v)
+ +
+
+ +

◆ unpackUnorm2x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackUnorm2x4 (uint8 p)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+uint8 packUnorm2x4(vec2 const& v)
+ +
+
+ +

◆ unpackUnorm2x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackUnorm2x8 (uint16 p)
+
+ +

First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackUnorm1x8(uint8 v)
+
+vec4 unpackUnorm4x8(uint32 p)
+
+GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm3x10_1x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm3x10_1x2 (uint32 p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm3x10_1x2(xyz): clamp(f / 1023.0, 0, +1) unpackSnorm3x10_1x2(w): clamp(f / 3.0, 0, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+uint32 packSnorm3x10_1x2(vec4 const& v)
+
+vec4 unpackInorm3x10_1x2(uint32 const& p))
+
+uvec4 unpackI3x10_1x2(uint32 const& p)
+
+uvec4 unpackU3x10_1x2(uint32 const& p)
+ +
+
+ +

◆ unpackUnorm3x5_1x1()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm3x5_1x1 (uint16 p)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+uint16 packUnorm3x5_1x1(vec4 const& v)
+ +
+
+ +

◆ unpackUnorm4x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm4x16 (uint64 p)
+
+ +

First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnormx4x16: f / 65535.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLM_GTC_packing
+
+float unpackUnorm1x16(uint16 p)
+
+vec2 unpackUnorm2x16(uint32 p)
+
+GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm4x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm4x4 (uint16 p)
+
+ +

Convert a packed integer to a normalized floating-point vector.

+
See also
GLM_GTC_packing
+
+uint16 packUnorm4x4(vec4 const& v)
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00917.html b/include/glm/doc/api/a00917.html new file mode 100644 index 0000000..34291b8 --- /dev/null +++ b/include/glm/doc/api/a00917.html @@ -0,0 +1,633 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_quaternion + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_quaternion
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles (qua< T, Q > const &x)
 Returns euler angles, pitch as x, yaw as y, roll as z. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T pitch (qua< T, Q > const &x)
 Returns pitch value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 3, 3, T, Q > const &x)
 Converts a pure rotation 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 4, 4, T, Q > const &x)
 Converts a pure rotation 4 * 4 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAt (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a look at quaternion based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtLH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a left-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtRH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a right-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T roll (qua< T, Q > const &x)
 Returns roll value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T yaw (qua< T, Q > const &x)
 Returns yaw value of euler angles expressed in radians. More...
 
+

Detailed Description

+

Include <glm/gtc/quaternion.hpp> to use the features of this extension.

+

Defines a templated quaternion type and several quaternion operations.

+

Function Documentation

+ +

◆ eulerAngles()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::eulerAngles (qua< T, Q > const & x)
+
+ +

Returns euler angles, pitch as x, yaw as y, roll as z.

+

The result is expressed in radians.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +

◆ greaterThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> glm::greaterThan (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x > y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_relational
+ +
+
+ +

◆ greaterThanEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> glm::greaterThanEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x >= y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_relational
+ +
+
+ +

◆ lessThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> glm::lessThan (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison result of x < y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_relational
+ +
+
+ +

◆ lessThanEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> glm::lessThanEqual (qua< T, Q > const & x,
qua< T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x <= y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_quaternion_relational
+ +
+
+ +

◆ mat3_cast()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::mat3_cast (qua< T, Q > const & x)
+
+ +

Converts a quaternion to a 3 * 3 matrix.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toMat3().

+ +
+
+ +

◆ mat4_cast()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::mat4_cast (qua< T, Q > const & x)
+
+ +

Converts a quaternion to a 4 * 4 matrix.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toMat4().

+ +
+
+ +

◆ pitch()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::pitch (qua< T, Q > const & x)
+
+ +

Returns pitch value of euler angles expressed in radians.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +

◆ quat_cast() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::quat_cast (mat< 3, 3, T, Q > const & x)
+
+ +

Converts a pure rotation 3 * 3 matrix to a quaternion.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +

Referenced by glm::toQuat().

+ +
+
+ +

◆ quat_cast() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::quat_cast (mat< 4, 4, T, Q > const & x)
+
+ +

Converts a pure rotation 4 * 4 matrix to a quaternion.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +

◆ quatLookAt()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::quatLookAt (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
+
+ +

Build a look at quaternion based on the default handedness.

+
Parameters
+ + + +
directionDesired forward direction. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
+
+
+ +
+
+ +

◆ quatLookAtLH()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::quatLookAtLH (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
+
+ +

Build a left-handed look at quaternion.

+
Parameters
+ + + +
directionDesired forward direction onto which the +z-axis gets mapped. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
+
+
+ +
+
+ +

◆ quatLookAtRH()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::quatLookAtRH (vec< 3, T, Q > const & direction,
vec< 3, T, Q > const & up 
)
+
+ +

Build a right-handed look at quaternion.

+
Parameters
+ + + +
directionDesired forward direction onto which the -z-axis gets mapped. Needs to be normalized.
upUp vector, how the camera is oriented. Typically (0, 1, 0).
+
+
+ +
+
+ +

◆ roll()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::roll (qua< T, Q > const & x)
+
+ +

Returns roll value of euler angles expressed in radians.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+ +

◆ yaw()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::yaw (qua< T, Q > const & x)
+
+ +

Returns yaw value of euler angles expressed in radians.

+
Template Parameters
+ + +
TFloating-point scalar types.
+
+
+
See also
GLM_GTC_quaternion
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00918.html b/include/glm/doc/api/a00918.html new file mode 100644 index 0000000..79a6905 --- /dev/null +++ b/include/glm/doc/api/a00918.html @@ -0,0 +1,318 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_random + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > ballRand (T Radius)
 Generate a random 3D vector which coordinates are regularly distributed within the volume of a ball of a given radius. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > circularRand (T Radius)
 Generate a random 2D vector which coordinates are regularly distributed on a circle of a given radius. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > diskRand (T Radius)
 Generate a random 2D vector which coordinates are regularly distributed within the area of a disk of a given radius. More...
 
template<typename genType >
GLM_FUNC_DECL genType gaussRand (genType Mean, genType Deviation)
 Generate random numbers in the interval [Min, Max], according a gaussian distribution. More...
 
template<typename genType >
GLM_FUNC_DECL genType linearRand (genType Min, genType Max)
 Generate random numbers in the interval [Min, Max], according a linear distribution. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > linearRand (vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Generate random numbers in the interval [Min, Max], according a linear distribution. More...
 
template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > sphericalRand (T Radius)
 Generate a random 3D vector which coordinates are regularly distributed on a sphere of a given radius. More...
 
+

Detailed Description

+

Include <glm/gtc/random.hpp> to use the features of this extension.

+

Generate random number from various distribution methods.

+

Function Documentation

+ +

◆ ballRand()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, defaultp> glm::ballRand (Radius)
+
+ +

Generate a random 3D vector which coordinates are regularly distributed within the volume of a ball of a given radius.

+
See also
GLM_GTC_random
+ +
+
+ +

◆ circularRand()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, defaultp> glm::circularRand (Radius)
+
+ +

Generate a random 2D vector which coordinates are regularly distributed on a circle of a given radius.

+
See also
GLM_GTC_random
+ +
+
+ +

◆ diskRand()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, defaultp> glm::diskRand (Radius)
+
+ +

Generate a random 2D vector which coordinates are regularly distributed within the area of a disk of a given radius.

+
See also
GLM_GTC_random
+ +
+
+ +

◆ gaussRand()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::gaussRand (genType Mean,
genType Deviation 
)
+
+ +

Generate random numbers in the interval [Min, Max], according a gaussian distribution.

+
See also
GLM_GTC_random
+ +
+
+ +

◆ linearRand() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::linearRand (genType Min,
genType Max 
)
+
+ +

Generate random numbers in the interval [Min, Max], according a linear distribution.

+
Parameters
+ + + +
MinMinimum value included in the sampling
MaxMaximum value included in the sampling
+
+
+
Template Parameters
+ + +
genTypeValue type. Currently supported: float or double scalars.
+
+
+
See also
GLM_GTC_random
+ +
+
+ +

◆ linearRand() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::linearRand (vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
+
+ +

Generate random numbers in the interval [Min, Max], according a linear distribution.

+
Parameters
+ + + +
MinMinimum value included in the sampling
MaxMaximum value included in the sampling
+
+
+
Template Parameters
+ + +
TValue type. Currently supported: float or double.
+
+
+
See also
GLM_GTC_random
+ +
+
+ +

◆ sphericalRand()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, defaultp> glm::sphericalRand (Radius)
+
+ +

Generate a random 3D vector which coordinates are regularly distributed on a sphere of a given radius.

+
See also
GLM_GTC_random
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00919.html b/include/glm/doc/api/a00919.html new file mode 100644 index 0000000..24097e5 --- /dev/null +++ b/include/glm/doc/api/a00919.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_reciprocal + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTC_reciprocal
+
+
+

Include <glm/gtc/reciprocal.hpp> to use the features of this extension.

+

Define secant, cosecant and cotangent functions.

+
+ + + + diff --git a/include/glm/doc/api/a00920.html b/include/glm/doc/api/a00920.html new file mode 100644 index 0000000..1e0381d --- /dev/null +++ b/include/glm/doc/api/a00920.html @@ -0,0 +1,555 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_round + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType ceilMultiple (genType v, genType Multiple)
 Higher multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceilMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Higher multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType ceilPowerOfTwo (genIUType v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > ceilPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just higher the input value, round up to a power of two. More...
 
template<typename genType >
GLM_FUNC_DECL genType floorMultiple (genType v, genType Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floorMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType floorPowerOfTwo (genIUType v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > floorPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is just lower the input value, round down to a power of two. More...
 
template<typename genType >
GLM_FUNC_DECL genType roundMultiple (genType v, genType Multiple)
 Lower multiple number of Source. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundMultiple (vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)
 Lower multiple number of Source. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType roundPowerOfTwo (genIUType v)
 Return the power of two number which value is the closet to the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > roundPowerOfTwo (vec< L, T, Q > const &v)
 Return the power of two number which value is the closet to the input value. More...
 
+

Detailed Description

+

Include <glm/gtc/round.hpp> to use the features of this extension.

+

Rounding value to specific boundings

+

Function Documentation

+ +

◆ ceilMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::ceilMultiple (genType v,
genType Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
vSource value to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ ceilMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::ceilMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Higher multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ ceilPowerOfTwo() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::ceilPowerOfTwo (genIUType v)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +

◆ ceilPowerOfTwo() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::ceilPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return the power of two number which value is just higher the input value, round up to a power of two.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ floorMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::floorMultiple (genType v,
genType Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
vSource value to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ floorMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::floorMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ floorPowerOfTwo() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::floorPowerOfTwo (genIUType v)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
See also
GLM_GTC_round
+ +
+
+ +

◆ floorPowerOfTwo() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::floorPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return the power of two number which value is just lower the input value, round down to a power of two.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ roundMultiple() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::roundMultiple (genType v,
genType Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + +
genTypeFloating-point or integer scalar or vector types.
+
+
+
Parameters
+ + + +
vSource value to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ roundMultiple() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::roundMultiple (vec< L, T, Q > const & v,
vec< L, T, Q > const & Multiple 
)
+
+ +

Lower multiple number of Source.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
Parameters
+ + + +
vSource values to which is applied the function
MultipleMust be a null or positive value
+
+
+
See also
GLM_GTC_round
+ +
+
+ +

◆ roundPowerOfTwo() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::roundPowerOfTwo (genIUType v)
+
+ +

Return the power of two number which value is the closet to the input value.

+
See also
GLM_GTC_round
+ +
+
+ +

◆ roundPowerOfTwo() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::roundPowerOfTwo (vec< L, T, Q > const & v)
+
+ +

Return the power of two number which value is the closet to the input value.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_GTC_round
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00921.html b/include/glm/doc/api/a00921.html new file mode 100644 index 0000000..d4f9a6b --- /dev/null +++ b/include/glm/doc/api/a00921.html @@ -0,0 +1,1558 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_type_aligned + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_type_aligned
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef aligned_highp_bvec1 aligned_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec2 aligned_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec3 aligned_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec4 aligned_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef aligned_highp_dmat2 aligned_dmat2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x2 aligned_dmat2x2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x3 aligned_dmat2x3
 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x4 aligned_dmat2x4
 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3 aligned_dmat3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x2 aligned_dmat3x2
 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x3 aligned_dmat3x3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x4 aligned_dmat3x4
 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4 aligned_dmat4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x2 aligned_dmat4x2
 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x3 aligned_dmat4x3
 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x4 aligned_dmat4x4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dquat aligned_dquat
 quaternion tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec1 aligned_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec2 aligned_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec3 aligned_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec4 aligned_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef vec< 1, bool, aligned_highp > aligned_highp_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_highp > aligned_highp_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_highp > aligned_highp_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_highp > aligned_highp_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_highp > aligned_highp_dquat
 quaternion aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_highp > aligned_highp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_highp > aligned_highp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_highp > aligned_highp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_highp > aligned_highp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_highp > aligned_highp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_highp > aligned_highp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_highp > aligned_highp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_highp > aligned_highp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_highp > aligned_highp_quat
 quaternion aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_highp > aligned_highp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_highp > aligned_highp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_highp > aligned_highp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_highp > aligned_highp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_highp > aligned_highp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_highp > aligned_highp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_highp > aligned_highp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_highp > aligned_highp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef aligned_highp_ivec1 aligned_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec2 aligned_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec3 aligned_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec4 aligned_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_lowp > aligned_lowp_dquat
 quaternion aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_lowp > aligned_lowp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_lowp > aligned_lowp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_lowp > aligned_lowp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_lowp > aligned_lowp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_lowp > aligned_lowp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_lowp > aligned_lowp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_lowp > aligned_lowp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_lowp > aligned_lowp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_lowp > aligned_lowp_quat
 quaternion aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_lowp > aligned_lowp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_lowp > aligned_lowp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_lowp > aligned_lowp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_lowp > aligned_lowp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef aligned_highp_mat2 aligned_mat2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x2 aligned_mat2x2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x3 aligned_mat2x3
 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x4 aligned_mat2x4
 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3 aligned_mat3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x2 aligned_mat3x2
 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x3 aligned_mat3x3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x4 aligned_mat3x4
 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4 aligned_mat4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x2 aligned_mat4x2
 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x3 aligned_mat4x3
 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x4 aligned_mat4x4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_mediump > aligned_mediump_dquat
 quaternion aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_mediump > aligned_mediump_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_mediump > aligned_mediump_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_mediump > aligned_mediump_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_mediump > aligned_mediump_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_mediump > aligned_mediump_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_mediump > aligned_mediump_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_mediump > aligned_mediump_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_mediump > aligned_mediump_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_mediump > aligned_mediump_quat
 quaternion aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_mediump > aligned_mediump_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_mediump > aligned_mediump_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_mediump > aligned_mediump_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_mediump > aligned_mediump_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef aligned_highp_quat aligned_quat
 quaternion tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_uvec1 aligned_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec2 aligned_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec3 aligned_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec4 aligned_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_vec1 aligned_vec1
 1 component vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec2 aligned_vec2
 2 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec3 aligned_vec3
 3 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec4 aligned_vec4
 4 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef packed_highp_bvec1 packed_bvec1
 1 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec2 packed_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec3 packed_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec4 packed_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_dmat2 packed_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x2 packed_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x3 packed_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x4 packed_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3 packed_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x2 packed_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x3 packed_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x4 packed_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4 packed_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x2 packed_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x3 packed_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x4 packed_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dquat packed_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec1 packed_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec2 packed_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec3 packed_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec4 packed_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef vec< 1, bool, packed_highp > packed_highp_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_highp > packed_highp_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_highp > packed_highp_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_highp > packed_highp_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_highp > packed_highp_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_highp > packed_highp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_highp > packed_highp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_highp > packed_highp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_highp > packed_highp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_highp > packed_highp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_highp > packed_highp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_highp > packed_highp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_highp > packed_highp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_highp > packed_highp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_highp > packed_highp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_highp > packed_highp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_highp > packed_highp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_highp > packed_highp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_highp > packed_highp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_highp > packed_highp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_highp > packed_highp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_highp > packed_highp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_highp > packed_highp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_highp > packed_highp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_highp > packed_highp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_highp > packed_highp_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_highp > packed_highp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_highp > packed_highp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_highp > packed_highp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_highp > packed_highp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_highp > packed_highp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_highp > packed_highp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_highp > packed_highp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_highp > packed_highp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef packed_highp_ivec1 packed_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec2 packed_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec3 packed_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec4 packed_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 1, bool, packed_lowp > packed_lowp_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_lowp > packed_lowp_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_lowp > packed_lowp_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_lowp > packed_lowp_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_lowp > packed_lowp_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_lowp > packed_lowp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_lowp > packed_lowp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_lowp > packed_lowp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_lowp > packed_lowp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_lowp > packed_lowp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_lowp > packed_lowp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_lowp > packed_lowp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_lowp > packed_lowp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_lowp > packed_lowp_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_lowp > packed_lowp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_lowp > packed_lowp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_lowp > packed_lowp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_lowp > packed_lowp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_lowp > packed_lowp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_lowp > packed_lowp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_lowp > packed_lowp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_lowp > packed_lowp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef packed_highp_mat2 packed_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x2 packed_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x3 packed_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x4 packed_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3 packed_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x2 packed_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x3 packed_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x4 packed_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4 packed_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x2 packed_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x3 packed_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x4 packed_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef vec< 1, bool, packed_mediump > packed_mediump_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_mediump > packed_mediump_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_mediump > packed_mediump_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_mediump > packed_mediump_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_mediump > packed_mediump_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_mediump > packed_mediump_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_mediump > packed_mediump_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_mediump > packed_mediump_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_mediump > packed_mediump_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_mediump > packed_mediump_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_mediump > packed_mediump_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_mediump > packed_mediump_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_mediump > packed_mediump_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_mediump > packed_mediump_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_mediump > packed_mediump_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_mediump > packed_mediump_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_mediump > packed_mediump_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_mediump > packed_mediump_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_mediump > packed_mediump_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_mediump > packed_mediump_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_mediump > packed_mediump_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_mediump > packed_mediump_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef packed_highp_quat packed_quat
 quaternion tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_uvec1 packed_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec2 packed_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec3 packed_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec4 packed_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_vec1 packed_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec2 packed_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec3 packed_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec4 packed_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers.
 
+

Detailed Description

+

Include <glm/gtc/type_aligned.hpp> to use the features of this extension.

+

Aligned types allowing SIMD optimizations of vectors and matrices types

+
+ + + + diff --git a/include/glm/doc/api/a00922.html b/include/glm/doc/api/a00922.html new file mode 100644 index 0000000..1d6d4fc --- /dev/null +++ b/include/glm/doc/api/a00922.html @@ -0,0 +1,9643 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_type_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_type_precision
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef float f32
 Default 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, defaultp > f32mat2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, defaultp > f32mat2x2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, defaultp > f32mat2x3
 Single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, defaultp > f32mat2x4
 Single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > f32mat3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, defaultp > f32mat3x2
 Single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > f32mat3x3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, defaultp > f32mat3x4
 Single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > f32mat4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, defaultp > f32mat4x2
 Single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, defaultp > f32mat4x3
 Single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > f32mat4x4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, defaultp > f32quat
 Single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, defaultp > f32vec1
 Single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, defaultp > f32vec2
 Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, defaultp > f32vec3
 Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, defaultp > f32vec4
 Single-qualifier floating-point vector of 4 components. More...
 
typedef double f64
 Default 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, defaultp > f64mat2
 Double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, defaultp > f64mat2x2
 Double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, defaultp > f64mat2x3
 Double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, defaultp > f64mat2x4
 Double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, defaultp > f64mat3
 Double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, defaultp > f64mat3x2
 Double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, defaultp > f64mat3x3
 Double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, defaultp > f64mat3x4
 Double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, defaultp > f64mat4
 Double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, defaultp > f64mat4x2
 Double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, defaultp > f64mat4x3
 Double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, defaultp > f64mat4x4
 Double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, defaultp > f64quat
 Double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, defaultp > f64vec1
 Double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, defaultp > f64vec2
 Double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, defaultp > f64vec3
 Double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, defaultp > f64vec4
 Double-qualifier floating-point vector of 4 components. More...
 
typedef float float32
 Single-qualifier floating-point scalar. More...
 
typedef float float32_t
 Default 32 bit single-qualifier floating-point scalar. More...
 
typedef double float64
 Double-qualifier floating-point scalar. More...
 
typedef double float64_t
 Default 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, defaultp > fmat2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, defaultp > fmat2x2
 Single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, defaultp > fmat2x3
 Single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, defaultp > fmat2x4
 Single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > fmat3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, defaultp > fmat3x2
 Single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, defaultp > fmat3x3
 Single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, defaultp > fmat3x4
 Single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > fmat4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, defaultp > fmat4x2
 Single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, defaultp > fmat4x3
 Single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, defaultp > fmat4x4
 Single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, f32, defaultp > fvec1
 Single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, defaultp > fvec2
 Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, defaultp > fvec3
 Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, defaultp > fvec4
 Single-qualifier floating-point vector of 4 components. More...
 
typedef float highp_f32
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, highp > highp_f32mat2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, highp > highp_f32mat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, highp > highp_f32mat2x3
 High single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, highp > highp_f32mat2x4
 High single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_f32mat3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, highp > highp_f32mat3x2
 High single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_f32mat3x3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, highp > highp_f32mat3x4
 High single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_f32mat4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, highp > highp_f32mat4x2
 High single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, highp > highp_f32mat4x3
 High single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_f32mat4x4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, highp > highp_f32quat
 High single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, highp > highp_f32vec1
 High single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, highp > highp_f32vec2
 High single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, highp > highp_f32vec3
 High single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, highp > highp_f32vec4
 High single-qualifier floating-point vector of 4 components. More...
 
typedef double highp_f64
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, highp > highp_f64mat2
 High double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, highp > highp_f64mat2x2
 High double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, highp > highp_f64mat2x3
 High double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, highp > highp_f64mat2x4
 High double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, highp > highp_f64mat3
 High double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, highp > highp_f64mat3x2
 High double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, highp > highp_f64mat3x3
 High double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, highp > highp_f64mat3x4
 High double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, highp > highp_f64mat4
 High double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, highp > highp_f64mat4x2
 High double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, highp > highp_f64mat4x3
 High double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, highp > highp_f64mat4x4
 High double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, highp > highp_f64quat
 High double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, highp > highp_f64vec1
 High double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, highp > highp_f64vec2
 High double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, highp > highp_f64vec3
 High double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, highp > highp_f64vec4
 High double-qualifier floating-point vector of 4 components. More...
 
typedef float highp_float32
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef float highp_float32_t
 High 32 bit single-qualifier floating-point scalar. More...
 
typedef double highp_float64
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef double highp_float64_t
 High 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, highp > highp_fmat2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, highp > highp_fmat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, highp > highp_fmat2x3
 High single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, highp > highp_fmat2x4
 High single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_fmat3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, highp > highp_fmat3x2
 High single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, highp > highp_fmat3x3
 High single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, highp > highp_fmat3x4
 High single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_fmat4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, highp > highp_fmat4x2
 High single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, highp > highp_fmat4x3
 High single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, highp > highp_fmat4x4
 High single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, highp > highp_fvec1
 High single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, highp > highp_fvec2
 High Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, highp > highp_fvec3
 High Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, highp > highp_fvec4
 High Single-qualifier floating-point vector of 4 components. More...
 
typedef int16 highp_i16
 High qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, highp > highp_i16vec1
 High qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, highp > highp_i16vec2
 High qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, highp > highp_i16vec3
 High qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, highp > highp_i16vec4
 High qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 highp_i32
 High qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, highp > highp_i32vec1
 High qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, highp > highp_i32vec2
 High qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, highp > highp_i32vec3
 High qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, highp > highp_i32vec4
 High qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 highp_i64
 High qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, highp > highp_i64vec1
 High qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, highp > highp_i64vec2
 High qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, highp > highp_i64vec3
 High qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, highp > highp_i64vec4
 High qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 highp_i8
 High qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, highp > highp_i8vec1
 High qualifier 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, highp > highp_i8vec2
 High qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, highp > highp_i8vec3
 High qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, highp > highp_i8vec4
 High qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 highp_int16
 High qualifier 16 bit signed integer type. More...
 
typedef int16 highp_int16_t
 High qualifier 16 bit signed integer type. More...
 
typedef int32 highp_int32
 High qualifier 32 bit signed integer type. More...
 
typedef int32 highp_int32_t
 32 bit signed integer type. More...
 
typedef int64 highp_int64
 High qualifier 64 bit signed integer type. More...
 
typedef int64 highp_int64_t
 High qualifier 64 bit signed integer type. More...
 
typedef int8 highp_int8
 High qualifier 8 bit signed integer type. More...
 
typedef int8 highp_int8_t
 High qualifier 8 bit signed integer type. More...
 
typedef vec< 1, int, highp > highp_ivec1
 High qualifier signed integer vector of 1 component type. More...
 
typedef vec< 2, int, highp > highp_ivec2
 High qualifier signed integer vector of 2 components type. More...
 
typedef vec< 3, int, highp > highp_ivec3
 High qualifier signed integer vector of 3 components type. More...
 
typedef vec< 4, int, highp > highp_ivec4
 High qualifier signed integer vector of 4 components type. More...
 
typedef uint16 highp_u16
 High qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, highp > highp_u16vec1
 High qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, highp > highp_u16vec2
 High qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, highp > highp_u16vec3
 High qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, highp > highp_u16vec4
 High qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 highp_u32
 High qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, highp > highp_u32vec1
 High qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, highp > highp_u32vec2
 High qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, highp > highp_u32vec3
 High qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, highp > highp_u32vec4
 High qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 highp_u64
 High qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, highp > highp_u64vec1
 High qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, highp > highp_u64vec2
 High qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, highp > highp_u64vec3
 High qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, highp > highp_u64vec4
 High qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 highp_u8
 High qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, highp > highp_u8vec1
 High qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, highp > highp_u8vec2
 High qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, highp > highp_u8vec3
 High qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, highp > highp_u8vec4
 High qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 highp_uint16
 High qualifier 16 bit unsigned integer type. More...
 
typedef uint16 highp_uint16_t
 High qualifier 16 bit unsigned integer type. More...
 
typedef uint32 highp_uint32
 High qualifier 32 bit unsigned integer type. More...
 
typedef uint32 highp_uint32_t
 High qualifier 32 bit unsigned integer type. More...
 
typedef uint64 highp_uint64
 High qualifier 64 bit unsigned integer type. More...
 
typedef uint64 highp_uint64_t
 High qualifier 64 bit unsigned integer type. More...
 
typedef uint8 highp_uint8
 High qualifier 8 bit unsigned integer type. More...
 
typedef uint8 highp_uint8_t
 High qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, uint, highp > highp_uvec1
 High qualifier unsigned integer vector of 1 component type. More...
 
typedef vec< 2, uint, highp > highp_uvec2
 High qualifier unsigned integer vector of 2 components type. More...
 
typedef vec< 3, uint, highp > highp_uvec3
 High qualifier unsigned integer vector of 3 components type. More...
 
typedef vec< 4, uint, highp > highp_uvec4
 High qualifier unsigned integer vector of 4 components type. More...
 
typedef int16 i16
 16 bit signed integer type. More...
 
typedef int32 i32
 32 bit signed integer type. More...
 
typedef int64 i64
 64 bit signed integer type. More...
 
typedef int8 i8
 8 bit signed integer type. More...
 
typedef int16 int16_t
 16 bit signed integer type. More...
 
typedef int32 int32_t
 32 bit signed integer type. More...
 
typedef int64 int64_t
 64 bit signed integer type. More...
 
typedef int8 int8_t
 8 bit signed integer type. More...
 
typedef float lowp_f32
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, lowp > lowp_f32mat2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, lowp > lowp_f32mat2x2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, lowp > lowp_f32mat2x3
 Low single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, lowp > lowp_f32mat2x4
 Low single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_f32mat3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, lowp > lowp_f32mat3x2
 Low single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_f32mat3x3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, lowp > lowp_f32mat3x4
 Low single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_f32mat4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, lowp > lowp_f32mat4x2
 Low single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, lowp > lowp_f32mat4x3
 Low single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_f32mat4x4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, lowp > lowp_f32quat
 Low single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, lowp > lowp_f32vec1
 Low single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, lowp > lowp_f32vec2
 Low single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, lowp > lowp_f32vec3
 Low single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, lowp > lowp_f32vec4
 Low single-qualifier floating-point vector of 4 components. More...
 
typedef double lowp_f64
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, lowp > lowp_f64mat2
 Low double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, lowp > lowp_f64mat2x2
 Low double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, lowp > lowp_f64mat2x3
 Low double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, lowp > lowp_f64mat2x4
 Low double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, lowp > lowp_f64mat3
 Low double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, lowp > lowp_f64mat3x2
 Low double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, lowp > lowp_f64mat3x3
 Low double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, lowp > lowp_f64mat3x4
 Low double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, lowp > lowp_f64mat4
 Low double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, lowp > lowp_f64mat4x2
 Low double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, lowp > lowp_f64mat4x3
 Low double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, lowp > lowp_f64mat4x4
 Low double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, lowp > lowp_f64quat
 Low double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, lowp > lowp_f64vec1
 Low double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, lowp > lowp_f64vec2
 Low double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, lowp > lowp_f64vec3
 Low double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, lowp > lowp_f64vec4
 Low double-qualifier floating-point vector of 4 components. More...
 
typedef float lowp_float32
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef float lowp_float32_t
 Low 32 bit single-qualifier floating-point scalar. More...
 
typedef double lowp_float64
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef double lowp_float64_t
 Low 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, lowp > lowp_fmat2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, lowp > lowp_fmat2x2
 Low single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, lowp > lowp_fmat2x3
 Low single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, lowp > lowp_fmat2x4
 Low single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_fmat3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, lowp > lowp_fmat3x2
 Low single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, lowp > lowp_fmat3x3
 Low single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, lowp > lowp_fmat3x4
 Low single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_fmat4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, lowp > lowp_fmat4x2
 Low single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, lowp > lowp_fmat4x3
 Low single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, lowp > lowp_fmat4x4
 Low single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, lowp > lowp_fvec1
 Low single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, lowp > lowp_fvec2
 Low single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, lowp > lowp_fvec3
 Low single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, lowp > lowp_fvec4
 Low single-qualifier floating-point vector of 4 components. More...
 
typedef int16 lowp_i16
 Low qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, lowp > lowp_i16vec1
 Low qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, lowp > lowp_i16vec2
 Low qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, lowp > lowp_i16vec3
 Low qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, lowp > lowp_i16vec4
 Low qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 lowp_i32
 Low qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, lowp > lowp_i32vec1
 Low qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, lowp > lowp_i32vec2
 Low qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, lowp > lowp_i32vec3
 Low qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, lowp > lowp_i32vec4
 Low qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 lowp_i64
 Low qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, lowp > lowp_i64vec1
 Low qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, lowp > lowp_i64vec2
 Low qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, lowp > lowp_i64vec3
 Low qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, lowp > lowp_i64vec4
 Low qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 lowp_i8
 Low qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, lowp > lowp_i8vec1
 Low qualifier 8 bit signed integer vector of 1 component type. More...
 
typedef vec< 2, i8, lowp > lowp_i8vec2
 Low qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, lowp > lowp_i8vec3
 Low qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, lowp > lowp_i8vec4
 Low qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 lowp_int16
 Low qualifier 16 bit signed integer type. More...
 
typedef int16 lowp_int16_t
 Low qualifier 16 bit signed integer type. More...
 
typedef int32 lowp_int32
 Low qualifier 32 bit signed integer type. More...
 
typedef int32 lowp_int32_t
 Low qualifier 32 bit signed integer type. More...
 
typedef int64 lowp_int64
 Low qualifier 64 bit signed integer type. More...
 
typedef int64 lowp_int64_t
 Low qualifier 64 bit signed integer type. More...
 
typedef int8 lowp_int8
 Low qualifier 8 bit signed integer type. More...
 
typedef int8 lowp_int8_t
 Low qualifier 8 bit signed integer type. More...
 
typedef vec< 1, int, lowp > lowp_ivec1
 Low qualifier signed integer vector of 1 component type. More...
 
typedef vec< 2, int, lowp > lowp_ivec2
 Low qualifier signed integer vector of 2 components type. More...
 
typedef vec< 3, int, lowp > lowp_ivec3
 Low qualifier signed integer vector of 3 components type. More...
 
typedef vec< 4, int, lowp > lowp_ivec4
 Low qualifier signed integer vector of 4 components type. More...
 
typedef uint16 lowp_u16
 Low qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, lowp > lowp_u16vec1
 Low qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, lowp > lowp_u16vec2
 Low qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, lowp > lowp_u16vec3
 Low qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, lowp > lowp_u16vec4
 Low qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 lowp_u32
 Low qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, lowp > lowp_u32vec1
 Low qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, lowp > lowp_u32vec2
 Low qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, lowp > lowp_u32vec3
 Low qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, lowp > lowp_u32vec4
 Low qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 lowp_u64
 Low qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, lowp > lowp_u64vec1
 Low qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, lowp > lowp_u64vec2
 Low qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, lowp > lowp_u64vec3
 Low qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, lowp > lowp_u64vec4
 Low qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 lowp_u8
 Low qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, lowp > lowp_u8vec1
 Low qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, lowp > lowp_u8vec2
 Low qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, lowp > lowp_u8vec3
 Low qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, lowp > lowp_u8vec4
 Low qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 lowp_uint16
 Low qualifier 16 bit unsigned integer type. More...
 
typedef uint16 lowp_uint16_t
 Low qualifier 16 bit unsigned integer type. More...
 
typedef uint32 lowp_uint32
 Low qualifier 32 bit unsigned integer type. More...
 
typedef uint32 lowp_uint32_t
 Low qualifier 32 bit unsigned integer type. More...
 
typedef uint64 lowp_uint64
 Low qualifier 64 bit unsigned integer type. More...
 
typedef uint64 lowp_uint64_t
 Low qualifier 64 bit unsigned integer type. More...
 
typedef uint8 lowp_uint8
 Low qualifier 8 bit unsigned integer type. More...
 
typedef uint8 lowp_uint8_t
 Low qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, uint, lowp > lowp_uvec1
 Low qualifier unsigned integer vector of 1 component type. More...
 
typedef vec< 2, uint, lowp > lowp_uvec2
 Low qualifier unsigned integer vector of 2 components type. More...
 
typedef vec< 3, uint, lowp > lowp_uvec3
 Low qualifier unsigned integer vector of 3 components type. More...
 
typedef vec< 4, uint, lowp > lowp_uvec4
 Low qualifier unsigned integer vector of 4 components type. More...
 
typedef float mediump_f32
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, mediump > mediump_f32mat2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, mediump > mediump_f32mat2x2
 High single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, mediump > mediump_f32mat2x3
 Medium single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, mediump > mediump_f32mat2x4
 Medium single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_f32mat3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, mediump > mediump_f32mat3x2
 Medium single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_f32mat3x3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, mediump > mediump_f32mat3x4
 Medium single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_f32mat4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, mediump > mediump_f32mat4x2
 Medium single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, mediump > mediump_f32mat4x3
 Medium single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_f32mat4x4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f32, mediump > mediump_f32quat
 Medium single-qualifier floating-point quaternion. More...
 
typedef vec< 1, f32, mediump > mediump_f32vec1
 Medium single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f32, mediump > mediump_f32vec2
 Medium single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f32, mediump > mediump_f32vec3
 Medium single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f32, mediump > mediump_f32vec4
 Medium single-qualifier floating-point vector of 4 components. More...
 
typedef double mediump_f64
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f64, mediump > mediump_f64mat2
 Medium double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f64, mediump > mediump_f64mat2x2
 Medium double-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f64, mediump > mediump_f64mat2x3
 Medium double-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f64, mediump > mediump_f64mat2x4
 Medium double-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f64, mediump > mediump_f64mat3
 Medium double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f64, mediump > mediump_f64mat3x2
 Medium double-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f64, mediump > mediump_f64mat3x3
 Medium double-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f64, mediump > mediump_f64mat3x4
 Medium double-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f64, mediump > mediump_f64mat4
 Medium double-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f64, mediump > mediump_f64mat4x2
 Medium double-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f64, mediump > mediump_f64mat4x3
 Medium double-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f64, mediump > mediump_f64mat4x4
 Medium double-qualifier floating-point 4x4 matrix. More...
 
typedef qua< f64, mediump > mediump_f64quat
 Medium double-qualifier floating-point quaternion. More...
 
typedef vec< 1, f64, mediump > mediump_f64vec1
 Medium double-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, f64, mediump > mediump_f64vec2
 Medium double-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, f64, mediump > mediump_f64vec3
 Medium double-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, f64, mediump > mediump_f64vec4
 Medium double-qualifier floating-point vector of 4 components. More...
 
typedef float mediump_float32
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef float mediump_float32_t
 Medium 32 bit single-qualifier floating-point scalar. More...
 
typedef double mediump_float64
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef double mediump_float64_t
 Medium 64 bit double-qualifier floating-point scalar. More...
 
typedef mat< 2, 2, f32, mediump > mediump_fmat2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 2, f32, mediump > mediump_fmat2x2
 Medium single-qualifier floating-point 1x1 matrix. More...
 
typedef mat< 2, 3, f32, mediump > mediump_fmat2x3
 Medium single-qualifier floating-point 2x3 matrix. More...
 
typedef mat< 2, 4, f32, mediump > mediump_fmat2x4
 Medium single-qualifier floating-point 2x4 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_fmat3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 2, f32, mediump > mediump_fmat3x2
 Medium single-qualifier floating-point 3x2 matrix. More...
 
typedef mat< 3, 3, f32, mediump > mediump_fmat3x3
 Medium single-qualifier floating-point 3x3 matrix. More...
 
typedef mat< 3, 4, f32, mediump > mediump_fmat3x4
 Medium single-qualifier floating-point 3x4 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_fmat4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef mat< 4, 2, f32, mediump > mediump_fmat4x2
 Medium single-qualifier floating-point 4x2 matrix. More...
 
typedef mat< 4, 3, f32, mediump > mediump_fmat4x3
 Medium single-qualifier floating-point 4x3 matrix. More...
 
typedef mat< 4, 4, f32, mediump > mediump_fmat4x4
 Medium single-qualifier floating-point 4x4 matrix. More...
 
typedef vec< 1, float, mediump > mediump_fvec1
 Medium single-qualifier floating-point vector of 1 component. More...
 
typedef vec< 2, float, mediump > mediump_fvec2
 Medium Single-qualifier floating-point vector of 2 components. More...
 
typedef vec< 3, float, mediump > mediump_fvec3
 Medium Single-qualifier floating-point vector of 3 components. More...
 
typedef vec< 4, float, mediump > mediump_fvec4
 Medium Single-qualifier floating-point vector of 4 components. More...
 
typedef int16 mediump_i16
 Medium qualifier 16 bit signed integer type. More...
 
typedef vec< 1, i16, mediump > mediump_i16vec1
 Medium qualifier 16 bit signed integer scalar type. More...
 
typedef vec< 2, i16, mediump > mediump_i16vec2
 Medium qualifier 16 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i16, mediump > mediump_i16vec3
 Medium qualifier 16 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i16, mediump > mediump_i16vec4
 Medium qualifier 16 bit signed integer vector of 4 components type. More...
 
typedef int32 mediump_i32
 Medium qualifier 32 bit signed integer type. More...
 
typedef vec< 1, i32, mediump > mediump_i32vec1
 Medium qualifier 32 bit signed integer scalar type. More...
 
typedef vec< 2, i32, mediump > mediump_i32vec2
 Medium qualifier 32 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i32, mediump > mediump_i32vec3
 Medium qualifier 32 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i32, mediump > mediump_i32vec4
 Medium qualifier 32 bit signed integer vector of 4 components type. More...
 
typedef int64 mediump_i64
 Medium qualifier 64 bit signed integer type. More...
 
typedef vec< 1, i64, mediump > mediump_i64vec1
 Medium qualifier 64 bit signed integer scalar type. More...
 
typedef vec< 2, i64, mediump > mediump_i64vec2
 Medium qualifier 64 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i64, mediump > mediump_i64vec3
 Medium qualifier 64 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i64, mediump > mediump_i64vec4
 Medium qualifier 64 bit signed integer vector of 4 components type. More...
 
typedef int8 mediump_i8
 Medium qualifier 8 bit signed integer type. More...
 
typedef vec< 1, i8, mediump > mediump_i8vec1
 Medium qualifier 8 bit signed integer scalar type. More...
 
typedef vec< 2, i8, mediump > mediump_i8vec2
 Medium qualifier 8 bit signed integer vector of 2 components type. More...
 
typedef vec< 3, i8, mediump > mediump_i8vec3
 Medium qualifier 8 bit signed integer vector of 3 components type. More...
 
typedef vec< 4, i8, mediump > mediump_i8vec4
 Medium qualifier 8 bit signed integer vector of 4 components type. More...
 
typedef int16 mediump_int16
 Medium qualifier 16 bit signed integer type. More...
 
typedef int16 mediump_int16_t
 Medium qualifier 16 bit signed integer type. More...
 
typedef int32 mediump_int32
 Medium qualifier 32 bit signed integer type. More...
 
typedef int32 mediump_int32_t
 Medium qualifier 32 bit signed integer type. More...
 
typedef int64 mediump_int64
 Medium qualifier 64 bit signed integer type. More...
 
typedef int64 mediump_int64_t
 Medium qualifier 64 bit signed integer type. More...
 
typedef int8 mediump_int8
 Medium qualifier 8 bit signed integer type. More...
 
typedef int8 mediump_int8_t
 Medium qualifier 8 bit signed integer type. More...
 
typedef vec< 1, int, mediump > mediump_ivec1
 Medium qualifier signed integer vector of 1 component type. More...
 
typedef vec< 2, int, mediump > mediump_ivec2
 Medium qualifier signed integer vector of 2 components type. More...
 
typedef vec< 3, int, mediump > mediump_ivec3
 Medium qualifier signed integer vector of 3 components type. More...
 
typedef vec< 4, int, mediump > mediump_ivec4
 Medium qualifier signed integer vector of 4 components type. More...
 
typedef uint16 mediump_u16
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef vec< 1, u16, mediump > mediump_u16vec1
 Medium qualifier 16 bit unsigned integer scalar type. More...
 
typedef vec< 2, u16, mediump > mediump_u16vec2
 Medium qualifier 16 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u16, mediump > mediump_u16vec3
 Medium qualifier 16 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u16, mediump > mediump_u16vec4
 Medium qualifier 16 bit unsigned integer vector of 4 components type. More...
 
typedef uint32 mediump_u32
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef vec< 1, u32, mediump > mediump_u32vec1
 Medium qualifier 32 bit unsigned integer scalar type. More...
 
typedef vec< 2, u32, mediump > mediump_u32vec2
 Medium qualifier 32 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u32, mediump > mediump_u32vec3
 Medium qualifier 32 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u32, mediump > mediump_u32vec4
 Medium qualifier 32 bit unsigned integer vector of 4 components type. More...
 
typedef uint64 mediump_u64
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef vec< 1, u64, mediump > mediump_u64vec1
 Medium qualifier 64 bit unsigned integer scalar type. More...
 
typedef vec< 2, u64, mediump > mediump_u64vec2
 Medium qualifier 64 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u64, mediump > mediump_u64vec3
 Medium qualifier 64 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u64, mediump > mediump_u64vec4
 Medium qualifier 64 bit unsigned integer vector of 4 components type. More...
 
typedef uint8 mediump_u8
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, u8, mediump > mediump_u8vec1
 Medium qualifier 8 bit unsigned integer scalar type. More...
 
typedef vec< 2, u8, mediump > mediump_u8vec2
 Medium qualifier 8 bit unsigned integer vector of 2 components type. More...
 
typedef vec< 3, u8, mediump > mediump_u8vec3
 Medium qualifier 8 bit unsigned integer vector of 3 components type. More...
 
typedef vec< 4, u8, mediump > mediump_u8vec4
 Medium qualifier 8 bit unsigned integer vector of 4 components type. More...
 
typedef uint16 mediump_uint16
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef uint16 mediump_uint16_t
 Medium qualifier 16 bit unsigned integer type. More...
 
typedef uint32 mediump_uint32
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef uint32 mediump_uint32_t
 Medium qualifier 32 bit unsigned integer type. More...
 
typedef uint64 mediump_uint64
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef uint64 mediump_uint64_t
 Medium qualifier 64 bit unsigned integer type. More...
 
typedef uint8 mediump_uint8
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef uint8 mediump_uint8_t
 Medium qualifier 8 bit unsigned integer type. More...
 
typedef vec< 1, uint, mediump > mediump_uvec1
 Medium qualifier unsigned integer vector of 1 component type. More...
 
typedef vec< 2, uint, mediump > mediump_uvec2
 Medium qualifier unsigned integer vector of 2 components type. More...
 
typedef vec< 3, uint, mediump > mediump_uvec3
 Medium qualifier unsigned integer vector of 3 components type. More...
 
typedef vec< 4, uint, mediump > mediump_uvec4
 Medium qualifier unsigned integer vector of 4 components type. More...
 
typedef uint16 u16
 Default qualifier 16 bit unsigned integer type. More...
 
typedef uint32 u32
 Default qualifier 32 bit unsigned integer type. More...
 
typedef uint64 u64
 Default qualifier 64 bit unsigned integer type. More...
 
typedef uint8 u8
 Default qualifier 8 bit unsigned integer type. More...
 
typedef uint16 uint16_t
 Default qualifier 16 bit unsigned integer type. More...
 
typedef uint32 uint32_t
 Default qualifier 32 bit unsigned integer type. More...
 
typedef uint64 uint64_t
 Default qualifier 64 bit unsigned integer type. More...
 
typedef uint8 uint8_t
 Default qualifier 8 bit unsigned integer type. More...
 
+

Detailed Description

+

Include <glm/gtc/type_precision.hpp> to use the features of this extension.

+

Defines specific C++-based qualifier types.

+

Typedef Documentation

+ +

◆ f32

+ +
+
+ + + + +
typedef float32 f32
+
+ +

Default 32 bit single-qualifier floating-point scalar.

+

32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 152 of file fwd.hpp.

+ +
+
+ +

◆ f32mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > f32mat2
+
+ +

Single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 554 of file fwd.hpp.

+ +
+
+ +

◆ f32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > f32mat2x2
+
+ +

Single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 702 of file fwd.hpp.

+ +
+
+ +

◆ f32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, defaultp > f32mat2x3
+
+ +

Single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 703 of file fwd.hpp.

+ +
+
+ +

◆ f32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, defaultp > f32mat2x4
+
+ +

Single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 704 of file fwd.hpp.

+ +
+
+ +

◆ f32mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > f32mat3
+
+ +

Single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 555 of file fwd.hpp.

+ +
+
+ +

◆ f32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, defaultp > f32mat3x2
+
+ +

Single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 705 of file fwd.hpp.

+ +
+
+ +

◆ f32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > f32mat3x3
+
+ +

Single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 706 of file fwd.hpp.

+ +
+
+ +

◆ f32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, defaultp > f32mat3x4
+
+ +

Single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 707 of file fwd.hpp.

+ +
+
+ +

◆ f32mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > f32mat4
+
+ +

Single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 556 of file fwd.hpp.

+ +
+
+ +

◆ f32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, defaultp > f32mat4x2
+
+ +

Single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 708 of file fwd.hpp.

+ +
+
+ +

◆ f32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, defaultp > f32mat4x3
+
+ +

Single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 709 of file fwd.hpp.

+ +
+
+ +

◆ f32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > f32mat4x4
+
+ +

Single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 710 of file fwd.hpp.

+ +
+
+ +

◆ f32quat

+ +
+
+ + + + +
typedef qua< f32, defaultp > f32quat
+
+ +

Single-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1220 of file fwd.hpp.

+ +
+
+ +

◆ f32vec1

+ +
+
+ + + + +
typedef vec< 1, f32, defaultp > f32vec1
+
+ +

Single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 463 of file fwd.hpp.

+ +
+
+ +

◆ f32vec2

+ +
+
+ + + + +
typedef vec< 2, f32, defaultp > f32vec2
+
+ +

Single-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 464 of file fwd.hpp.

+ +
+
+ +

◆ f32vec3

+ +
+
+ + + + +
typedef vec< 3, f32, defaultp > f32vec3
+
+ +

Single-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 465 of file fwd.hpp.

+ +
+
+ +

◆ f32vec4

+ +
+
+ + + + +
typedef vec< 4, f32, defaultp > f32vec4
+
+ +

Single-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 466 of file fwd.hpp.

+ +
+
+ +

◆ f64

+ +
+
+ + + + +
typedef float64 f64
+
+ +

Default 64 bit double-qualifier floating-point scalar.

+

64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 168 of file fwd.hpp.

+ +
+
+ +

◆ f64mat2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, defaultp > f64mat2
+
+ +

Double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 586 of file fwd.hpp.

+ +
+
+ +

◆ f64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, defaultp > f64mat2x2
+
+ +

Double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 782 of file fwd.hpp.

+ +
+
+ +

◆ f64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f64, defaultp > f64mat2x3
+
+ +

Double-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 783 of file fwd.hpp.

+ +
+
+ +

◆ f64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f64, defaultp > f64mat2x4
+
+ +

Double-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 784 of file fwd.hpp.

+ +
+
+ +

◆ f64mat3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, defaultp > f64mat3
+
+ +

Double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 587 of file fwd.hpp.

+ +
+
+ +

◆ f64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f64, defaultp > f64mat3x2
+
+ +

Double-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 785 of file fwd.hpp.

+ +
+
+ +

◆ f64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, defaultp > f64mat3x3
+
+ +

Double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 786 of file fwd.hpp.

+ +
+
+ +

◆ f64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f64, defaultp > f64mat3x4
+
+ +

Double-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 787 of file fwd.hpp.

+ +
+
+ +

◆ f64mat4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, defaultp > f64mat4
+
+ +

Double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 588 of file fwd.hpp.

+ +
+
+ +

◆ f64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f64, defaultp > f64mat4x2
+
+ +

Double-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 788 of file fwd.hpp.

+ +
+
+ +

◆ f64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f64, defaultp > f64mat4x3
+
+ +

Double-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 789 of file fwd.hpp.

+ +
+
+ +

◆ f64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, defaultp > f64mat4x4
+
+ +

Double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 790 of file fwd.hpp.

+ +
+
+ +

◆ f64quat

+ +
+
+ + + + +
typedef qua< f64, defaultp > f64quat
+
+ +

Double-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1230 of file fwd.hpp.

+ +
+
+ +

◆ f64vec1

+ +
+
+ + + + +
typedef vec< 1, f64, defaultp > f64vec1
+
+ +

Double-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 503 of file fwd.hpp.

+ +
+
+ +

◆ f64vec2

+ +
+
+ + + + +
typedef vec< 2, f64, defaultp > f64vec2
+
+ +

Double-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 504 of file fwd.hpp.

+ +
+
+ +

◆ f64vec3

+ +
+
+ + + + +
typedef vec< 3, f64, defaultp > f64vec3
+
+ +

Double-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 505 of file fwd.hpp.

+ +
+
+ +

◆ f64vec4

+ +
+
+ + + + +
typedef vec< 4, f64, defaultp > f64vec4
+
+ +

Double-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 506 of file fwd.hpp.

+ +
+
+ +

◆ float32

+ +
+
+ + + + +
typedef float float32
+
+ +

Single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 157 of file fwd.hpp.

+ +
+
+ +

◆ float32_t

+ +
+
+ + + + +
typedef float32 float32_t
+
+ +

Default 32 bit single-qualifier floating-point scalar.

+

32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 162 of file fwd.hpp.

+ +
+
+ +

◆ float64

+ +
+
+ + + + +
typedef double float64
+
+ +

Double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 173 of file fwd.hpp.

+ +
+
+ +

◆ float64_t

+ +
+
+ + + + +
typedef float64 float64_t
+
+ +

Default 64 bit double-qualifier floating-point scalar.

+

64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 178 of file fwd.hpp.

+ +
+
+ +

◆ fmat2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > fmat2
+
+ +

Single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 538 of file fwd.hpp.

+ +
+
+ +

◆ fmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, defaultp > fmat2x2
+
+ +

Single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 662 of file fwd.hpp.

+ +
+
+ +

◆ fmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, defaultp > fmat2x3
+
+ +

Single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 663 of file fwd.hpp.

+ +
+
+ +

◆ fmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, defaultp > fmat2x4
+
+ +

Single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 664 of file fwd.hpp.

+ +
+
+ +

◆ fmat3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > fmat3
+
+ +

Single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 539 of file fwd.hpp.

+ +
+
+ +

◆ fmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, defaultp > fmat3x2
+
+ +

Single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 665 of file fwd.hpp.

+ +
+
+ +

◆ fmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, defaultp > fmat3x3
+
+ +

Single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 666 of file fwd.hpp.

+ +
+
+ +

◆ fmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, defaultp > fmat3x4
+
+ +

Single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 667 of file fwd.hpp.

+ +
+
+ +

◆ fmat4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > fmat4
+
+ +

Single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 540 of file fwd.hpp.

+ +
+
+ +

◆ fmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, defaultp > fmat4x2
+
+ +

Single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 668 of file fwd.hpp.

+ +
+
+ +

◆ fmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, defaultp > fmat4x3
+
+ +

Single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 669 of file fwd.hpp.

+ +
+
+ +

◆ fmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, defaultp > fmat4x4
+
+ +

Single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 670 of file fwd.hpp.

+ +
+
+ +

◆ fvec1

+ +
+
+ + + + +
typedef vec< 1, float, defaultp > fvec1
+
+ +

Single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 443 of file fwd.hpp.

+ +
+
+ +

◆ fvec2

+ +
+
+ + + + +
typedef vec< 2, float, defaultp > fvec2
+
+ +

Single-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 444 of file fwd.hpp.

+ +
+
+ +

◆ fvec3

+ +
+
+ + + + +
typedef vec< 3, float, defaultp > fvec3
+
+ +

Single-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 445 of file fwd.hpp.

+ +
+
+ +

◆ fvec4

+ +
+
+ + + + +
typedef vec< 4, float, defaultp > fvec4
+
+ +

Single-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 446 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32

+ +
+
+ + + + +
typedef float32 highp_f32
+
+ +

High 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 151 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat2

+ +
+
+ + + + +
typedef highp_f32mat2x2 highp_f32mat2
+
+ +

High single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 550 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, highp > highp_f32mat2x2
+
+ +

High single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 692 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, highp > highp_f32mat2x3
+
+ +

High single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 693 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, highp > highp_f32mat2x4
+
+ +

High single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 694 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat3

+ +
+
+ + + + +
typedef highp_f32mat3x3 highp_f32mat3
+
+ +

High single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 551 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, highp > highp_f32mat3x2
+
+ +

High single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 695 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, highp > highp_f32mat3x3
+
+ +

High single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 696 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, highp > highp_f32mat3x4
+
+ +

High single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 697 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat4

+ +
+
+ + + + +
typedef highp_f32mat4x4 highp_f32mat4
+
+ +

High single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 552 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, highp > highp_f32mat4x2
+
+ +

High single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 698 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, highp > highp_f32mat4x3
+
+ +

High single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 699 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, highp > highp_f32mat4x4
+
+ +

High single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 700 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32quat

+ +
+
+ + + + +
typedef qua< f32, highp > highp_f32quat
+
+ +

High single-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1219 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32vec1

+ +
+
+ + + + +
typedef vec< 1, f32, highp > highp_f32vec1
+
+ +

High single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 458 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32vec2

+ +
+
+ + + + +
typedef vec< 2, f32, highp > highp_f32vec2
+
+ +

High single-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 459 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32vec3

+ +
+
+ + + + +
typedef vec< 3, f32, highp > highp_f32vec3
+
+ +

High single-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 460 of file fwd.hpp.

+ +
+
+ +

◆ highp_f32vec4

+ +
+
+ + + + +
typedef vec< 4, f32, highp > highp_f32vec4
+
+ +

High single-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 461 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64

+ +
+
+ + + + +
typedef float64 highp_f64
+
+ +

High 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 167 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat2

+ +
+
+ + + + +
typedef highp_f64mat2x2 highp_f64mat2
+
+ +

High double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 582 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, highp > highp_f64mat2x2
+
+ +

High double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 772 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f64, highp > highp_f64mat2x3
+
+ +

High double-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 773 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f64, highp > highp_f64mat2x4
+
+ +

High double-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 774 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat3

+ +
+
+ + + + +
typedef highp_f64mat3x3 highp_f64mat3
+
+ +

High double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 583 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f64, highp > highp_f64mat3x2
+
+ +

High double-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 775 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, highp > highp_f64mat3x3
+
+ +

High double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 776 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f64, highp > highp_f64mat3x4
+
+ +

High double-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 777 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat4

+ +
+
+ + + + +
typedef highp_f64mat4x4 highp_f64mat4
+
+ +

High double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 584 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f64, highp > highp_f64mat4x2
+
+ +

High double-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 778 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f64, highp > highp_f64mat4x3
+
+ +

High double-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 779 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, highp > highp_f64mat4x4
+
+ +

High double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 780 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64quat

+ +
+
+ + + + +
typedef qua< f64, highp > highp_f64quat
+
+ +

High double-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1229 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64vec1

+ +
+
+ + + + +
typedef vec< 1, f64, highp > highp_f64vec1
+
+ +

High double-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 498 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64vec2

+ +
+
+ + + + +
typedef vec< 2, f64, highp > highp_f64vec2
+
+ +

High double-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 499 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64vec3

+ +
+
+ + + + +
typedef vec< 3, f64, highp > highp_f64vec3
+
+ +

High double-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 500 of file fwd.hpp.

+ +
+
+ +

◆ highp_f64vec4

+ +
+
+ + + + +
typedef vec< 4, f64, highp > highp_f64vec4
+
+ +

High double-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 501 of file fwd.hpp.

+ +
+
+ +

◆ highp_float32

+ +
+
+ + + + +
typedef float32 highp_float32
+
+ +

High 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 156 of file fwd.hpp.

+ +
+
+ +

◆ highp_float32_t

+ +
+
+ + + + +
typedef float32 highp_float32_t
+
+ +

High 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 161 of file fwd.hpp.

+ +
+
+ +

◆ highp_float64

+ +
+
+ + + + +
typedef float64 highp_float64
+
+ +

High 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 172 of file fwd.hpp.

+ +
+
+ +

◆ highp_float64_t

+ +
+
+ + + + +
typedef float64 highp_float64_t
+
+ +

High 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 177 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat2

+ +
+
+ + + + +
typedef highp_fmat2x2 highp_fmat2
+
+ +

High single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 534 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, highp > highp_fmat2x2
+
+ +

High single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision High single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 652 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, highp > highp_fmat2x3
+
+ +

High single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 653 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, highp > highp_fmat2x4
+
+ +

High single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 654 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat3

+ +
+
+ + + + +
typedef highp_fmat3x3 highp_fmat3
+
+ +

High single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 535 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, highp > highp_fmat3x2
+
+ +

High single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 655 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, highp > highp_fmat3x3
+
+ +

High single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 656 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, highp > highp_fmat3x4
+
+ +

High single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 657 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat4

+ +
+
+ + + + +
typedef highp_fmat4x4 highp_fmat4
+
+ +

High single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 536 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, highp > highp_fmat4x2
+
+ +

High single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 658 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, highp > highp_fmat4x3
+
+ +

High single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 659 of file fwd.hpp.

+ +
+
+ +

◆ highp_fmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, highp > highp_fmat4x4
+
+ +

High single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 660 of file fwd.hpp.

+ +
+
+ +

◆ highp_fvec1

+ +
+
+ + + + +
typedef vec< 1, float, highp > highp_fvec1
+
+ +

High single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 438 of file fwd.hpp.

+ +
+
+ +

◆ highp_fvec2

+ +
+
+ + + + +
typedef vec< 2, float, highp > highp_fvec2
+
+ +

High Single-qualifier floating-point vector of 2 components.

+
See also
core_precision
+ +

Definition at line 439 of file fwd.hpp.

+ +
+
+ +

◆ highp_fvec3

+ +
+
+ + + + +
typedef vec< 3, float, highp > highp_fvec3
+
+ +

High Single-qualifier floating-point vector of 3 components.

+
See also
core_precision
+ +

Definition at line 440 of file fwd.hpp.

+ +
+
+ +

◆ highp_fvec4

+ +
+
+ + + + +
typedef vec< 4, float, highp > highp_fvec4
+
+ +

High Single-qualifier floating-point vector of 4 components.

+
See also
core_precision
+ +

Definition at line 441 of file fwd.hpp.

+ +
+
+ +

◆ highp_i16

+ +
+
+ + + + +
typedef detail::int16 highp_i16
+
+ +

High qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 47 of file fwd.hpp.

+ +
+
+ +

◆ highp_i16vec1

+ +
+
+ + + + +
typedef vec< 1, i16, highp > highp_i16vec1
+
+ +

High qualifier 16 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 254 of file fwd.hpp.

+ +
+
+ +

◆ highp_i16vec2

+ +
+
+ + + + +
typedef vec< 2, i16, highp > highp_i16vec2
+
+ +

High qualifier 16 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 255 of file fwd.hpp.

+ +
+
+ +

◆ highp_i16vec3

+ +
+
+ + + + +
typedef vec< 3, i16, highp > highp_i16vec3
+
+ +

High qualifier 16 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 256 of file fwd.hpp.

+ +
+
+ +

◆ highp_i16vec4

+ +
+
+ + + + +
typedef vec< 4, i16, highp > highp_i16vec4
+
+ +

High qualifier 16 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 257 of file fwd.hpp.

+ +
+
+ +

◆ highp_i32

+ +
+
+ + + + +
typedef detail::int32 highp_i32
+
+ +

High qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 61 of file fwd.hpp.

+ +
+
+ +

◆ highp_i32vec1

+ +
+
+ + + + +
typedef vec< 1, i32, highp > highp_i32vec1
+
+ +

High qualifier 32 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 274 of file fwd.hpp.

+ +
+
+ +

◆ highp_i32vec2

+ +
+
+ + + + +
typedef vec< 2, i32, highp > highp_i32vec2
+
+ +

High qualifier 32 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 275 of file fwd.hpp.

+ +
+
+ +

◆ highp_i32vec3

+ +
+
+ + + + +
typedef vec< 3, i32, highp > highp_i32vec3
+
+ +

High qualifier 32 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 276 of file fwd.hpp.

+ +
+
+ +

◆ highp_i32vec4

+ +
+
+ + + + +
typedef vec< 4, i32, highp > highp_i32vec4
+
+ +

High qualifier 32 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 277 of file fwd.hpp.

+ +
+
+ +

◆ highp_i64

+ +
+
+ + + + +
typedef detail::int64 highp_i64
+
+ +

High qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 75 of file fwd.hpp.

+ +
+
+ +

◆ highp_i64vec1

+ +
+
+ + + + +
typedef vec< 1, i64, highp > highp_i64vec1
+
+ +

High qualifier 64 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 294 of file fwd.hpp.

+ +
+
+ +

◆ highp_i64vec2

+ +
+
+ + + + +
typedef vec< 2, i64, highp > highp_i64vec2
+
+ +

High qualifier 64 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 295 of file fwd.hpp.

+ +
+
+ +

◆ highp_i64vec3

+ +
+
+ + + + +
typedef vec< 3, i64, highp > highp_i64vec3
+
+ +

High qualifier 64 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 296 of file fwd.hpp.

+ +
+
+ +

◆ highp_i64vec4

+ +
+
+ + + + +
typedef vec< 4, i64, highp > highp_i64vec4
+
+ +

High qualifier 64 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 297 of file fwd.hpp.

+ +
+
+ +

◆ highp_i8

+ +
+
+ + + + +
typedef detail::int8 highp_i8
+
+ +

High qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 33 of file fwd.hpp.

+ +
+
+ +

◆ highp_i8vec1

+ +
+
+ + + + +
typedef vec< 1, i8, highp > highp_i8vec1
+
+ +

High qualifier 8 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 234 of file fwd.hpp.

+ +
+
+ +

◆ highp_i8vec2

+ +
+
+ + + + +
typedef vec< 2, i8, highp > highp_i8vec2
+
+ +

High qualifier 8 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 235 of file fwd.hpp.

+ +
+
+ +

◆ highp_i8vec3

+ +
+
+ + + + +
typedef vec< 3, i8, highp > highp_i8vec3
+
+ +

High qualifier 8 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 236 of file fwd.hpp.

+ +
+
+ +

◆ highp_i8vec4

+ +
+
+ + + + +
typedef vec< 4, i8, highp > highp_i8vec4
+
+ +

High qualifier 8 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 237 of file fwd.hpp.

+ +
+
+ +

◆ highp_int16

+ +
+
+ + + + +
typedef detail::int16 highp_int16
+
+ +

High qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 52 of file fwd.hpp.

+ +
+
+ +

◆ highp_int16_t

+ +
+
+ + + + +
typedef detail::int16 highp_int16_t
+
+ +

High qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 56 of file fwd.hpp.

+ +
+
+ +

◆ highp_int32

+ +
+
+ + + + +
typedef detail::int32 highp_int32
+
+ +

High qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 66 of file fwd.hpp.

+ +
+
+ +

◆ highp_int32_t

+ +
+
+ + + + +
typedef detail::int32 highp_int32_t
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 70 of file fwd.hpp.

+ +
+
+ +

◆ highp_int64

+ +
+
+ + + + +
typedef detail::int64 highp_int64
+
+ +

High qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 80 of file fwd.hpp.

+ +
+
+ +

◆ highp_int64_t

+ +
+
+ + + + +
typedef detail::int64 highp_int64_t
+
+ +

High qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 84 of file fwd.hpp.

+ +
+
+ +

◆ highp_int8

+ +
+
+ + + + +
typedef detail::int8 highp_int8
+
+ +

High qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 38 of file fwd.hpp.

+ +
+
+ +

◆ highp_int8_t

+ +
+
+ + + + +
typedef detail::int8 highp_int8_t
+
+ +

High qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 42 of file fwd.hpp.

+ +
+
+ +

◆ highp_ivec1

+ +
+
+ + + + +
typedef vec< 1, int, highp > highp_ivec1
+
+ +

High qualifier signed integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 214 of file fwd.hpp.

+ +
+
+ +

◆ highp_ivec2

+ +
+
+ + + + +
typedef vec< 2, int, highp > highp_ivec2
+
+ +

High qualifier signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 215 of file fwd.hpp.

+ +
+
+ +

◆ highp_ivec3

+ +
+
+ + + + +
typedef vec< 3, int, highp > highp_ivec3
+
+ +

High qualifier signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 216 of file fwd.hpp.

+ +
+
+ +

◆ highp_ivec4

+ +
+
+ + + + +
typedef vec< 4, int, highp > highp_ivec4
+
+ +

High qualifier signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 217 of file fwd.hpp.

+ +
+
+ +

◆ highp_u16

+ +
+
+ + + + +
typedef detail::uint16 highp_u16
+
+ +

High qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 107 of file fwd.hpp.

+ +
+
+ +

◆ highp_u16vec1

+ +
+
+ + + + +
typedef vec< 1, u16, highp > highp_u16vec1
+
+ +

High qualifier 16 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 356 of file fwd.hpp.

+ +
+
+ +

◆ highp_u16vec2

+ +
+
+ + + + +
typedef vec< 2, u16, highp > highp_u16vec2
+
+ +

High qualifier 16 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 357 of file fwd.hpp.

+ +
+
+ +

◆ highp_u16vec3

+ +
+
+ + + + +
typedef vec< 3, u16, highp > highp_u16vec3
+
+ +

High qualifier 16 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 358 of file fwd.hpp.

+ +
+
+ +

◆ highp_u16vec4

+ +
+
+ + + + +
typedef vec< 4, u16, highp > highp_u16vec4
+
+ +

High qualifier 16 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 359 of file fwd.hpp.

+ +
+
+ +

◆ highp_u32

+ +
+
+ + + + +
typedef detail::uint32 highp_u32
+
+ +

High qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 121 of file fwd.hpp.

+ +
+
+ +

◆ highp_u32vec1

+ +
+
+ + + + +
typedef vec< 1, u32, highp > highp_u32vec1
+
+ +

High qualifier 32 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 376 of file fwd.hpp.

+ +
+
+ +

◆ highp_u32vec2

+ +
+
+ + + + +
typedef vec< 2, u32, highp > highp_u32vec2
+
+ +

High qualifier 32 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 377 of file fwd.hpp.

+ +
+
+ +

◆ highp_u32vec3

+ +
+
+ + + + +
typedef vec< 3, u32, highp > highp_u32vec3
+
+ +

High qualifier 32 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 378 of file fwd.hpp.

+ +
+
+ +

◆ highp_u32vec4

+ +
+
+ + + + +
typedef vec< 4, u32, highp > highp_u32vec4
+
+ +

High qualifier 32 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 379 of file fwd.hpp.

+ +
+
+ +

◆ highp_u64

+ +
+
+ + + + +
typedef detail::uint64 highp_u64
+
+ +

High qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 135 of file fwd.hpp.

+ +
+
+ +

◆ highp_u64vec1

+ +
+
+ + + + +
typedef vec< 1, u64, highp > highp_u64vec1
+
+ +

High qualifier 64 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 396 of file fwd.hpp.

+ +
+
+ +

◆ highp_u64vec2

+ +
+
+ + + + +
typedef vec< 2, u64, highp > highp_u64vec2
+
+ +

High qualifier 64 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 397 of file fwd.hpp.

+ +
+
+ +

◆ highp_u64vec3

+ +
+
+ + + + +
typedef vec< 3, u64, highp > highp_u64vec3
+
+ +

High qualifier 64 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 398 of file fwd.hpp.

+ +
+
+ +

◆ highp_u64vec4

+ +
+
+ + + + +
typedef vec< 4, u64, highp > highp_u64vec4
+
+ +

High qualifier 64 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 399 of file fwd.hpp.

+ +
+
+ +

◆ highp_u8

+ +
+
+ + + + +
typedef detail::uint8 highp_u8
+
+ +

High qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 93 of file fwd.hpp.

+ +
+
+ +

◆ highp_u8vec1

+ +
+
+ + + + +
typedef vec< 1, u8, highp > highp_u8vec1
+
+ +

High qualifier 8 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 336 of file fwd.hpp.

+ +
+
+ +

◆ highp_u8vec2

+ +
+
+ + + + +
typedef vec< 2, u8, highp > highp_u8vec2
+
+ +

High qualifier 8 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 337 of file fwd.hpp.

+ +
+
+ +

◆ highp_u8vec3

+ +
+
+ + + + +
typedef vec< 3, u8, highp > highp_u8vec3
+
+ +

High qualifier 8 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 338 of file fwd.hpp.

+ +
+
+ +

◆ highp_u8vec4

+ +
+
+ + + + +
typedef vec< 4, u8, highp > highp_u8vec4
+
+ +

High qualifier 8 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 339 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint16

+ +
+
+ + + + +
typedef detail::uint16 highp_uint16
+
+ +

High qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 112 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint16_t

+ +
+
+ + + + +
typedef detail::uint16 highp_uint16_t
+
+ +

High qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 116 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint32

+ +
+
+ + + + +
typedef detail::uint32 highp_uint32
+
+ +

High qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 126 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint32_t

+ +
+
+ + + + +
typedef detail::uint32 highp_uint32_t
+
+ +

High qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 130 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint64

+ +
+
+ + + + +
typedef detail::uint64 highp_uint64
+
+ +

High qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 140 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint64_t

+ +
+
+ + + + +
typedef detail::uint64 highp_uint64_t
+
+ +

High qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 144 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint8

+ +
+
+ + + + +
typedef detail::uint8 highp_uint8
+
+ +

High qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 98 of file fwd.hpp.

+ +
+
+ +

◆ highp_uint8_t

+ +
+
+ + + + +
typedef detail::uint8 highp_uint8_t
+
+ +

High qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 102 of file fwd.hpp.

+ +
+
+ +

◆ highp_uvec1

+ +
+
+ + + + +
typedef vec< 1, uint, highp > highp_uvec1
+
+ +

High qualifier unsigned integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 316 of file fwd.hpp.

+ +
+
+ +

◆ highp_uvec2

+ +
+
+ + + + +
typedef vec< 2, uint, highp > highp_uvec2
+
+ +

High qualifier unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 317 of file fwd.hpp.

+ +
+
+ +

◆ highp_uvec3

+ +
+
+ + + + +
typedef vec< 3, uint, highp > highp_uvec3
+
+ +

High qualifier unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 318 of file fwd.hpp.

+ +
+
+ +

◆ highp_uvec4

+ +
+
+ + + + +
typedef vec< 4, uint, highp > highp_uvec4
+
+ +

High qualifier unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 319 of file fwd.hpp.

+ +
+
+ +

◆ i16

+ +
+
+ + + + +
typedef detail::int16 i16
+
+ +

16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 48 of file fwd.hpp.

+ +
+
+ +

◆ i32

+ +
+
+ + + + +
typedef detail::int32 i32
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 62 of file fwd.hpp.

+ +
+
+ +

◆ i64

+ +
+
+ + + + +
typedef detail::int64 i64
+
+ +

64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 76 of file fwd.hpp.

+ +
+
+ +

◆ i8

+ +
+
+ + + + +
typedef detail::int8 i8
+
+ +

8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 34 of file fwd.hpp.

+ +
+
+ +

◆ int16_t

+ +
+
+ + + + +
typedef detail::int16 int16_t
+
+ +

16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 57 of file fwd.hpp.

+ +
+
+ +

◆ int32_t

+ +
+
+ + + + +
typedef detail::int32 int32_t
+
+ +

32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 71 of file fwd.hpp.

+ +
+
+ +

◆ int64_t

+ +
+
+ + + + +
typedef detail::int64 int64_t
+
+ +

64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 85 of file fwd.hpp.

+ +
+
+ +

◆ int8_t

+ +
+
+ + + + +
typedef detail::int8 int8_t
+
+ +

8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 43 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32

+ +
+
+ + + + +
typedef float32 lowp_f32
+
+ +

Low 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 149 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat2

+ +
+
+ + + + +
typedef lowp_f32mat2x2 lowp_f32mat2
+
+ +

Low single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 542 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, lowp > lowp_f32mat2x2
+
+ +

Low single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 672 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, lowp > lowp_f32mat2x3
+
+ +

Low single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 673 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, lowp > lowp_f32mat2x4
+
+ +

Low single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 674 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat3

+ +
+
+ + + + +
typedef lowp_f32mat3x3 lowp_f32mat3
+
+ +

Low single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 543 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, lowp > lowp_f32mat3x2
+
+ +

Low single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 675 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, lowp > lowp_f32mat3x3
+
+ +

Low single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 676 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, lowp > lowp_f32mat3x4
+
+ +

Low single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 677 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat4

+ +
+
+ + + + +
typedef lowp_f32mat4x4 lowp_f32mat4
+
+ +

Low single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 544 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, lowp > lowp_f32mat4x2
+
+ +

Low single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 678 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, lowp > lowp_f32mat4x3
+
+ +

Low single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 679 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, lowp > lowp_f32mat4x4
+
+ +

Low single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 680 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32quat

+ +
+
+ + + + +
typedef qua< f32, lowp > lowp_f32quat
+
+ +

Low single-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1217 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32vec1

+ +
+
+ + + + +
typedef vec< 1, f32, lowp > lowp_f32vec1
+
+ +

Low single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 448 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32vec2

+ +
+
+ + + + +
typedef vec< 2, f32, lowp > lowp_f32vec2
+
+ +

Low single-qualifier floating-point vector of 2 components.

+
See also
core_precision
+ +

Definition at line 449 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32vec3

+ +
+
+ + + + +
typedef vec< 3, f32, lowp > lowp_f32vec3
+
+ +

Low single-qualifier floating-point vector of 3 components.

+
See also
core_precision
+ +

Definition at line 450 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f32vec4

+ +
+
+ + + + +
typedef vec< 4, f32, lowp > lowp_f32vec4
+
+ +

Low single-qualifier floating-point vector of 4 components.

+
See also
core_precision
+ +

Definition at line 451 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64

+ +
+
+ + + + +
typedef float64 lowp_f64
+
+ +

Low 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 165 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat2

+ +
+
+ + + + +
typedef lowp_f64mat2x2 lowp_f64mat2
+
+ +

Low double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 574 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, lowp > lowp_f64mat2x2
+
+ +

Low double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 752 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f64, lowp > lowp_f64mat2x3
+
+ +

Low double-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 753 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f64, lowp > lowp_f64mat2x4
+
+ +

Low double-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 754 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat3

+ +
+
+ + + + +
typedef lowp_f64mat3x3 lowp_f64mat3
+
+ +

Low double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 575 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f64, lowp > lowp_f64mat3x2
+
+ +

Low double-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 755 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, lowp > lowp_f64mat3x3
+
+ +

Low double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 756 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f64, lowp > lowp_f64mat3x4
+
+ +

Low double-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 757 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat4

+ +
+
+ + + + +
typedef lowp_f64mat4x4 lowp_f64mat4
+
+ +

Low double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 576 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f64, lowp > lowp_f64mat4x2
+
+ +

Low double-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 758 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f64, lowp > lowp_f64mat4x3
+
+ +

Low double-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 759 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, lowp > lowp_f64mat4x4
+
+ +

Low double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 760 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64quat

+ +
+
+ + + + +
typedef qua< f64, lowp > lowp_f64quat
+
+ +

Low double-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1227 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64vec1

+ +
+
+ + + + +
typedef vec< 1, f64, lowp > lowp_f64vec1
+
+ +

Low double-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 488 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64vec2

+ +
+
+ + + + +
typedef vec< 2, f64, lowp > lowp_f64vec2
+
+ +

Low double-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 489 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64vec3

+ +
+
+ + + + +
typedef vec< 3, f64, lowp > lowp_f64vec3
+
+ +

Low double-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 490 of file fwd.hpp.

+ +
+
+ +

◆ lowp_f64vec4

+ +
+
+ + + + +
typedef vec< 4, f64, lowp > lowp_f64vec4
+
+ +

Low double-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 491 of file fwd.hpp.

+ +
+
+ +

◆ lowp_float32

+ +
+
+ + + + +
typedef float32 lowp_float32
+
+ +

Low 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 154 of file fwd.hpp.

+ +
+
+ +

◆ lowp_float32_t

+ +
+
+ + + + +
typedef float32 lowp_float32_t
+
+ +

Low 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 159 of file fwd.hpp.

+ +
+
+ +

◆ lowp_float64

+ +
+
+ + + + +
typedef float64 lowp_float64
+
+ +

Low 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 170 of file fwd.hpp.

+ +
+
+ +

◆ lowp_float64_t

+ +
+
+ + + + +
typedef float64 lowp_float64_t
+
+ +

Low 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 175 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat2

+ +
+
+ + + + +
typedef lowp_fmat2x2 lowp_fmat2
+
+ +

Low single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 526 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, lowp > lowp_fmat2x2
+
+ +

Low single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 632 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, lowp > lowp_fmat2x3
+
+ +

Low single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 633 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, lowp > lowp_fmat2x4
+
+ +

Low single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 634 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat3

+ +
+
+ + + + +
typedef lowp_fmat3x3 lowp_fmat3
+
+ +

Low single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 527 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, lowp > lowp_fmat3x2
+
+ +

Low single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 635 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, lowp > lowp_fmat3x3
+
+ +

Low single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 636 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, lowp > lowp_fmat3x4
+
+ +

Low single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 637 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat4

+ +
+
+ + + + +
typedef lowp_fmat4x4 lowp_fmat4
+
+ +

Low single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 528 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, lowp > lowp_fmat4x2
+
+ +

Low single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 638 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, lowp > lowp_fmat4x3
+
+ +

Low single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 639 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, lowp > lowp_fmat4x4
+
+ +

Low single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 640 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fvec1

+ +
+
+ + + + +
typedef vec< 1, float, lowp > lowp_fvec1
+
+ +

Low single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 428 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fvec2

+ +
+
+ + + + +
typedef vec< 2, float, lowp > lowp_fvec2
+
+ +

Low single-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 429 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fvec3

+ +
+
+ + + + +
typedef vec< 3, float, lowp > lowp_fvec3
+
+ +

Low single-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 430 of file fwd.hpp.

+ +
+
+ +

◆ lowp_fvec4

+ +
+
+ + + + +
typedef vec< 4, float, lowp > lowp_fvec4
+
+ +

Low single-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 431 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i16

+ +
+
+ + + + +
typedef detail::int16 lowp_i16
+
+ +

Low qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 45 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i16vec1

+ +
+
+ + + + +
typedef vec< 1, i16, lowp > lowp_i16vec1
+
+ +

Low qualifier 16 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 244 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i16vec2

+ +
+
+ + + + +
typedef vec< 2, i16, lowp > lowp_i16vec2
+
+ +

Low qualifier 16 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 245 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i16vec3

+ +
+
+ + + + +
typedef vec< 3, i16, lowp > lowp_i16vec3
+
+ +

Low qualifier 16 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 246 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i16vec4

+ +
+
+ + + + +
typedef vec< 4, i16, lowp > lowp_i16vec4
+
+ +

Low qualifier 16 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 247 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i32

+ +
+
+ + + + +
typedef detail::int32 lowp_i32
+
+ +

Low qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 59 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i32vec1

+ +
+
+ + + + +
typedef vec< 1, i32, lowp > lowp_i32vec1
+
+ +

Low qualifier 32 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 264 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i32vec2

+ +
+
+ + + + +
typedef vec< 2, i32, lowp > lowp_i32vec2
+
+ +

Low qualifier 32 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 265 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i32vec3

+ +
+
+ + + + +
typedef vec< 3, i32, lowp > lowp_i32vec3
+
+ +

Low qualifier 32 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 266 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i32vec4

+ +
+
+ + + + +
typedef vec< 4, i32, lowp > lowp_i32vec4
+
+ +

Low qualifier 32 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 267 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i64

+ +
+
+ + + + +
typedef detail::int64 lowp_i64
+
+ +

Low qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 73 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i64vec1

+ +
+
+ + + + +
typedef vec< 1, i64, lowp > lowp_i64vec1
+
+ +

Low qualifier 64 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 284 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i64vec2

+ +
+
+ + + + +
typedef vec< 2, i64, lowp > lowp_i64vec2
+
+ +

Low qualifier 64 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 285 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i64vec3

+ +
+
+ + + + +
typedef vec< 3, i64, lowp > lowp_i64vec3
+
+ +

Low qualifier 64 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 286 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i64vec4

+ +
+
+ + + + +
typedef vec< 4, i64, lowp > lowp_i64vec4
+
+ +

Low qualifier 64 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 287 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i8

+ +
+
+ + + + +
typedef detail::int8 lowp_i8
+
+ +

Low qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 31 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i8vec1

+ +
+
+ + + + +
typedef vec< 1, i8, lowp > lowp_i8vec1
+
+ +

Low qualifier 8 bit signed integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 224 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i8vec2

+ +
+
+ + + + +
typedef vec< 2, i8, lowp > lowp_i8vec2
+
+ +

Low qualifier 8 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 225 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i8vec3

+ +
+
+ + + + +
typedef vec< 3, i8, lowp > lowp_i8vec3
+
+ +

Low qualifier 8 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 226 of file fwd.hpp.

+ +
+
+ +

◆ lowp_i8vec4

+ +
+
+ + + + +
typedef vec< 4, i8, lowp > lowp_i8vec4
+
+ +

Low qualifier 8 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 227 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int16

+ +
+
+ + + + +
typedef detail::int16 lowp_int16
+
+ +

Low qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 50 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int16_t

+ +
+
+ + + + +
typedef detail::int16 lowp_int16_t
+
+ +

Low qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 54 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int32

+ +
+
+ + + + +
typedef detail::int32 lowp_int32
+
+ +

Low qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 64 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int32_t

+ +
+
+ + + + +
typedef detail::int32 lowp_int32_t
+
+ +

Low qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 68 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int64

+ +
+
+ + + + +
typedef detail::int64 lowp_int64
+
+ +

Low qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 78 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int64_t

+ +
+
+ + + + +
typedef detail::int64 lowp_int64_t
+
+ +

Low qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 82 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int8

+ +
+
+ + + + +
typedef detail::int8 lowp_int8
+
+ +

Low qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 36 of file fwd.hpp.

+ +
+
+ +

◆ lowp_int8_t

+ +
+
+ + + + +
typedef detail::int8 lowp_int8_t
+
+ +

Low qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 40 of file fwd.hpp.

+ +
+
+ +

◆ lowp_ivec1

+ +
+
+ + + + +
typedef vec< 1, int, lowp > lowp_ivec1
+
+ +

Low qualifier signed integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 204 of file fwd.hpp.

+ +
+
+ +

◆ lowp_ivec2

+ +
+
+ + + + +
typedef vec< 2, int, lowp > lowp_ivec2
+
+ +

Low qualifier signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 205 of file fwd.hpp.

+ +
+
+ +

◆ lowp_ivec3

+ +
+
+ + + + +
typedef vec< 3, int, lowp > lowp_ivec3
+
+ +

Low qualifier signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 206 of file fwd.hpp.

+ +
+
+ +

◆ lowp_ivec4

+ +
+
+ + + + +
typedef vec< 4, int, lowp > lowp_ivec4
+
+ +

Low qualifier signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 207 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u16

+ +
+
+ + + + +
typedef detail::uint16 lowp_u16
+
+ +

Low qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 105 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u16vec1

+ +
+
+ + + + +
typedef vec< 1, u16, lowp > lowp_u16vec1
+
+ +

Low qualifier 16 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 346 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u16vec2

+ +
+
+ + + + +
typedef vec< 2, u16, lowp > lowp_u16vec2
+
+ +

Low qualifier 16 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 347 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u16vec3

+ +
+
+ + + + +
typedef vec< 3, u16, lowp > lowp_u16vec3
+
+ +

Low qualifier 16 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 348 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u16vec4

+ +
+
+ + + + +
typedef vec< 4, u16, lowp > lowp_u16vec4
+
+ +

Low qualifier 16 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 349 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u32

+ +
+
+ + + + +
typedef detail::uint32 lowp_u32
+
+ +

Low qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 119 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u32vec1

+ +
+
+ + + + +
typedef vec< 1, u32, lowp > lowp_u32vec1
+
+ +

Low qualifier 32 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 366 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u32vec2

+ +
+
+ + + + +
typedef vec< 2, u32, lowp > lowp_u32vec2
+
+ +

Low qualifier 32 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 367 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u32vec3

+ +
+
+ + + + +
typedef vec< 3, u32, lowp > lowp_u32vec3
+
+ +

Low qualifier 32 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 368 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u32vec4

+ +
+
+ + + + +
typedef vec< 4, u32, lowp > lowp_u32vec4
+
+ +

Low qualifier 32 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 369 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u64

+ +
+
+ + + + +
typedef detail::uint64 lowp_u64
+
+ +

Low qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 133 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u64vec1

+ +
+
+ + + + +
typedef vec< 1, u64, lowp > lowp_u64vec1
+
+ +

Low qualifier 64 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 386 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u64vec2

+ +
+
+ + + + +
typedef vec< 2, u64, lowp > lowp_u64vec2
+
+ +

Low qualifier 64 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 387 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u64vec3

+ +
+
+ + + + +
typedef vec< 3, u64, lowp > lowp_u64vec3
+
+ +

Low qualifier 64 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 388 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u64vec4

+ +
+
+ + + + +
typedef vec< 4, u64, lowp > lowp_u64vec4
+
+ +

Low qualifier 64 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 389 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u8

+ +
+
+ + + + +
typedef detail::uint8 lowp_u8
+
+ +

Low qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 91 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u8vec1

+ +
+
+ + + + +
typedef vec< 1, u8, lowp > lowp_u8vec1
+
+ +

Low qualifier 8 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 326 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u8vec2

+ +
+
+ + + + +
typedef vec< 2, u8, lowp > lowp_u8vec2
+
+ +

Low qualifier 8 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 327 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u8vec3

+ +
+
+ + + + +
typedef vec< 3, u8, lowp > lowp_u8vec3
+
+ +

Low qualifier 8 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 328 of file fwd.hpp.

+ +
+
+ +

◆ lowp_u8vec4

+ +
+
+ + + + +
typedef vec< 4, u8, lowp > lowp_u8vec4
+
+ +

Low qualifier 8 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 329 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint16

+ +
+
+ + + + +
typedef detail::uint16 lowp_uint16
+
+ +

Low qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 110 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint16_t

+ +
+
+ + + + +
typedef detail::uint16 lowp_uint16_t
+
+ +

Low qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 114 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint32

+ +
+
+ + + + +
typedef detail::uint32 lowp_uint32
+
+ +

Low qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 124 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint32_t

+ +
+
+ + + + +
typedef detail::uint32 lowp_uint32_t
+
+ +

Low qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 128 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint64

+ +
+
+ + + + +
typedef detail::uint64 lowp_uint64
+
+ +

Low qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 138 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint64_t

+ +
+
+ + + + +
typedef detail::uint64 lowp_uint64_t
+
+ +

Low qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 142 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint8

+ +
+
+ + + + +
typedef detail::uint8 lowp_uint8
+
+ +

Low qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 96 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uint8_t

+ +
+
+ + + + +
typedef detail::uint8 lowp_uint8_t
+
+ +

Low qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 100 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uvec1

+ +
+
+ + + + +
typedef vec< 1, uint, lowp > lowp_uvec1
+
+ +

Low qualifier unsigned integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 306 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uvec2

+ +
+
+ + + + +
typedef vec< 2, uint, lowp > lowp_uvec2
+
+ +

Low qualifier unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 307 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uvec3

+ +
+
+ + + + +
typedef vec< 3, uint, lowp > lowp_uvec3
+
+ +

Low qualifier unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 308 of file fwd.hpp.

+ +
+
+ +

◆ lowp_uvec4

+ +
+
+ + + + +
typedef vec< 4, uint, lowp > lowp_uvec4
+
+ +

Low qualifier unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 309 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32

+ +
+
+ + + + +
typedef float32 mediump_f32
+
+ +

Medium 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 150 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat2

+ +
+
+ + + + +
typedef mediump_f32mat2x2 mediump_f32mat2
+
+ +

Medium single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 546 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, mediump > mediump_f32mat2x2
+
+ +

High single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Low single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 682 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, mediump > mediump_f32mat2x3
+
+ +

Medium single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 683 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, mediump > mediump_f32mat2x4
+
+ +

Medium single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 684 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat3

+ +
+
+ + + + +
typedef mediump_f32mat3x3 mediump_f32mat3
+
+ +

Medium single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 547 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, mediump > mediump_f32mat3x2
+
+ +

Medium single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 685 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, mediump > mediump_f32mat3x3
+
+ +

Medium single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 686 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, mediump > mediump_f32mat3x4
+
+ +

Medium single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 687 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat4

+ +
+
+ + + + +
typedef mediump_f32mat4x4 mediump_f32mat4
+
+ +

Medium single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 548 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, mediump > mediump_f32mat4x2
+
+ +

Medium single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 688 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, mediump > mediump_f32mat4x3
+
+ +

Medium single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 689 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, mediump > mediump_f32mat4x4
+
+ +

Medium single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 690 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32quat

+ +
+
+ + + + +
typedef qua< f32, mediump > mediump_f32quat
+
+ +

Medium single-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1218 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32vec1

+ +
+
+ + + + +
typedef vec< 1, f32, mediump > mediump_f32vec1
+
+ +

Medium single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 453 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32vec2

+ +
+
+ + + + +
typedef vec< 2, f32, mediump > mediump_f32vec2
+
+ +

Medium single-qualifier floating-point vector of 2 components.

+
See also
core_precision
+ +

Definition at line 454 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32vec3

+ +
+
+ + + + +
typedef vec< 3, f32, mediump > mediump_f32vec3
+
+ +

Medium single-qualifier floating-point vector of 3 components.

+
See also
core_precision
+ +

Definition at line 455 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f32vec4

+ +
+
+ + + + +
typedef vec< 4, f32, mediump > mediump_f32vec4
+
+ +

Medium single-qualifier floating-point vector of 4 components.

+
See also
core_precision
+ +

Definition at line 456 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64

+ +
+
+ + + + +
typedef float64 mediump_f64
+
+ +

Medium 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 166 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat2

+ +
+
+ + + + +
typedef mediump_f64mat2x2 mediump_f64mat2
+
+ +

Medium double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Medium double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 578 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f64, mediump > mediump_f64mat2x2
+
+ +

Medium double-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Medium double-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 762 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f64, mediump > mediump_f64mat2x3
+
+ +

Medium double-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 763 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f64, mediump > mediump_f64mat2x4
+
+ +

Medium double-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 764 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat3

+ +
+
+ + + + +
typedef mediump_f64mat3x3 mediump_f64mat3
+
+ +

Medium double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 579 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f64, mediump > mediump_f64mat3x2
+
+ +

Medium double-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 765 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f64, mediump > mediump_f64mat3x3
+
+ +

Medium double-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 766 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f64, mediump > mediump_f64mat3x4
+
+ +

Medium double-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 767 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat4

+ +
+
+ + + + +
typedef mediump_f64mat4x4 mediump_f64mat4
+
+ +

Medium double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 580 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f64, mediump > mediump_f64mat4x2
+
+ +

Medium double-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 768 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f64, mediump > mediump_f64mat4x3
+
+ +

Medium double-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 769 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64mat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f64, mediump > mediump_f64mat4x4
+
+ +

Medium double-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 770 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64quat

+ +
+
+ + + + +
typedef qua< f64, mediump > mediump_f64quat
+
+ +

Medium double-qualifier floating-point quaternion.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 1228 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64vec1

+ +
+
+ + + + +
typedef vec< 1, f64, mediump > mediump_f64vec1
+
+ +

Medium double-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 493 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64vec2

+ +
+
+ + + + +
typedef vec< 2, f64, mediump > mediump_f64vec2
+
+ +

Medium double-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 494 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64vec3

+ +
+
+ + + + +
typedef vec< 3, f64, mediump > mediump_f64vec3
+
+ +

Medium double-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 495 of file fwd.hpp.

+ +
+
+ +

◆ mediump_f64vec4

+ +
+
+ + + + +
typedef vec< 4, f64, mediump > mediump_f64vec4
+
+ +

Medium double-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 496 of file fwd.hpp.

+ +
+
+ +

◆ mediump_float32

+ +
+
+ + + + +
typedef float32 mediump_float32
+
+ +

Medium 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 155 of file fwd.hpp.

+ +
+
+ +

◆ mediump_float32_t

+ +
+
+ + + + +
typedef float32 mediump_float32_t
+
+ +

Medium 32 bit single-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 160 of file fwd.hpp.

+ +
+
+ +

◆ mediump_float64

+ +
+
+ + + + +
typedef float64 mediump_float64
+
+ +

Medium 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 171 of file fwd.hpp.

+ +
+
+ +

◆ mediump_float64_t

+ +
+
+ + + + +
typedef float64 mediump_float64_t
+
+ +

Medium 64 bit double-qualifier floating-point scalar.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 176 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat2

+ +
+
+ + + + +
typedef mediump_fmat2x2 mediump_fmat2
+
+ +

Medium single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 530 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat2x2

+ +
+
+ + + + +
typedef mat< 2, 2, f32, mediump > mediump_fmat2x2
+
+ +

Medium single-qualifier floating-point 1x1 matrix.

+
See also
GLM_GTC_type_precision Medium single-qualifier floating-point 2x2 matrix.
+
+GLM_GTC_type_precision
+ +

Definition at line 642 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat2x3

+ +
+
+ + + + +
typedef mat< 2, 3, f32, mediump > mediump_fmat2x3
+
+ +

Medium single-qualifier floating-point 2x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 643 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat2x4

+ +
+
+ + + + +
typedef mat< 2, 4, f32, mediump > mediump_fmat2x4
+
+ +

Medium single-qualifier floating-point 2x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 644 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat3

+ +
+
+ + + + +
typedef mediump_fmat3x3 mediump_fmat3
+
+ +

Medium single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 531 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat3x2

+ +
+
+ + + + +
typedef mat< 3, 2, f32, mediump > mediump_fmat3x2
+
+ +

Medium single-qualifier floating-point 3x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 645 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat3x3

+ +
+
+ + + + +
typedef mat< 3, 3, f32, mediump > mediump_fmat3x3
+
+ +

Medium single-qualifier floating-point 3x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 646 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat3x4

+ +
+
+ + + + +
typedef mat< 3, 4, f32, mediump > mediump_fmat3x4
+
+ +

Medium single-qualifier floating-point 3x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 647 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat4

+ +
+
+ + + + +
typedef mediump_fmat4x4 mediump_fmat4
+
+ +

Medium single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 532 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat4x2

+ +
+
+ + + + +
typedef mat< 4, 2, f32, mediump > mediump_fmat4x2
+
+ +

Medium single-qualifier floating-point 4x2 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 648 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat4x3

+ +
+
+ + + + +
typedef mat< 4, 3, f32, mediump > mediump_fmat4x3
+
+ +

Medium single-qualifier floating-point 4x3 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 649 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fmat4x4

+ +
+
+ + + + +
typedef mat< 4, 4, f32, mediump > mediump_fmat4x4
+
+ +

Medium single-qualifier floating-point 4x4 matrix.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 650 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fvec1

+ +
+
+ + + + +
typedef vec< 1, float, mediump > mediump_fvec1
+
+ +

Medium single-qualifier floating-point vector of 1 component.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 433 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fvec2

+ +
+
+ + + + +
typedef vec< 2, float, mediump > mediump_fvec2
+
+ +

Medium Single-qualifier floating-point vector of 2 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 434 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fvec3

+ +
+
+ + + + +
typedef vec< 3, float, mediump > mediump_fvec3
+
+ +

Medium Single-qualifier floating-point vector of 3 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 435 of file fwd.hpp.

+ +
+
+ +

◆ mediump_fvec4

+ +
+
+ + + + +
typedef vec< 4, float, mediump > mediump_fvec4
+
+ +

Medium Single-qualifier floating-point vector of 4 components.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 436 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i16

+ +
+
+ + + + +
typedef detail::int16 mediump_i16
+
+ +

Medium qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 46 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i16vec1

+ +
+
+ + + + +
typedef vec< 1, i16, mediump > mediump_i16vec1
+
+ +

Medium qualifier 16 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 249 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i16vec2

+ +
+
+ + + + +
typedef vec< 2, i16, mediump > mediump_i16vec2
+
+ +

Medium qualifier 16 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 250 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i16vec3

+ +
+
+ + + + +
typedef vec< 3, i16, mediump > mediump_i16vec3
+
+ +

Medium qualifier 16 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 251 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i16vec4

+ +
+
+ + + + +
typedef vec< 4, i16, mediump > mediump_i16vec4
+
+ +

Medium qualifier 16 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 252 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i32

+ +
+
+ + + + +
typedef detail::int32 mediump_i32
+
+ +

Medium qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 60 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i32vec1

+ +
+
+ + + + +
typedef vec< 1, i32, mediump > mediump_i32vec1
+
+ +

Medium qualifier 32 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 269 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i32vec2

+ +
+
+ + + + +
typedef vec< 2, i32, mediump > mediump_i32vec2
+
+ +

Medium qualifier 32 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 270 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i32vec3

+ +
+
+ + + + +
typedef vec< 3, i32, mediump > mediump_i32vec3
+
+ +

Medium qualifier 32 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 271 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i32vec4

+ +
+
+ + + + +
typedef vec< 4, i32, mediump > mediump_i32vec4
+
+ +

Medium qualifier 32 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 272 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i64

+ +
+
+ + + + +
typedef detail::int64 mediump_i64
+
+ +

Medium qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 74 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i64vec1

+ +
+
+ + + + +
typedef vec< 1, i64, mediump > mediump_i64vec1
+
+ +

Medium qualifier 64 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 289 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i64vec2

+ +
+
+ + + + +
typedef vec< 2, i64, mediump > mediump_i64vec2
+
+ +

Medium qualifier 64 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 290 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i64vec3

+ +
+
+ + + + +
typedef vec< 3, i64, mediump > mediump_i64vec3
+
+ +

Medium qualifier 64 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 291 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i64vec4

+ +
+
+ + + + +
typedef vec< 4, i64, mediump > mediump_i64vec4
+
+ +

Medium qualifier 64 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 292 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i8

+ +
+
+ + + + +
typedef detail::int8 mediump_i8
+
+ +

Medium qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 32 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i8vec1

+ +
+
+ + + + +
typedef vec< 1, i8, mediump > mediump_i8vec1
+
+ +

Medium qualifier 8 bit signed integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 229 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i8vec2

+ +
+
+ + + + +
typedef vec< 2, i8, mediump > mediump_i8vec2
+
+ +

Medium qualifier 8 bit signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 230 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i8vec3

+ +
+
+ + + + +
typedef vec< 3, i8, mediump > mediump_i8vec3
+
+ +

Medium qualifier 8 bit signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 231 of file fwd.hpp.

+ +
+
+ +

◆ mediump_i8vec4

+ +
+
+ + + + +
typedef vec< 4, i8, mediump > mediump_i8vec4
+
+ +

Medium qualifier 8 bit signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 232 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int16

+ +
+
+ + + + +
typedef detail::int16 mediump_int16
+
+ +

Medium qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 51 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int16_t

+ +
+
+ + + + +
typedef detail::int16 mediump_int16_t
+
+ +

Medium qualifier 16 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 55 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int32

+ +
+
+ + + + +
typedef detail::int32 mediump_int32
+
+ +

Medium qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 65 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int32_t

+ +
+
+ + + + +
typedef detail::int32 mediump_int32_t
+
+ +

Medium qualifier 32 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 69 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int64

+ +
+
+ + + + +
typedef detail::int64 mediump_int64
+
+ +

Medium qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 79 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int64_t

+ +
+
+ + + + +
typedef detail::int64 mediump_int64_t
+
+ +

Medium qualifier 64 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 83 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int8

+ +
+
+ + + + +
typedef detail::int8 mediump_int8
+
+ +

Medium qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 37 of file fwd.hpp.

+ +
+
+ +

◆ mediump_int8_t

+ +
+
+ + + + +
typedef detail::int8 mediump_int8_t
+
+ +

Medium qualifier 8 bit signed integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 41 of file fwd.hpp.

+ +
+
+ +

◆ mediump_ivec1

+ +
+
+ + + + +
typedef vec< 1, int, mediump > mediump_ivec1
+
+ +

Medium qualifier signed integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 209 of file fwd.hpp.

+ +
+
+ +

◆ mediump_ivec2

+ +
+
+ + + + +
typedef vec< 2, int, mediump > mediump_ivec2
+
+ +

Medium qualifier signed integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 210 of file fwd.hpp.

+ +
+
+ +

◆ mediump_ivec3

+ +
+
+ + + + +
typedef vec< 3, int, mediump > mediump_ivec3
+
+ +

Medium qualifier signed integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 211 of file fwd.hpp.

+ +
+
+ +

◆ mediump_ivec4

+ +
+
+ + + + +
typedef vec< 4, int, mediump > mediump_ivec4
+
+ +

Medium qualifier signed integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 212 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u16

+ +
+
+ + + + +
typedef detail::uint16 mediump_u16
+
+ +

Medium qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 106 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u16vec1

+ +
+
+ + + + +
typedef vec< 1, u16, mediump > mediump_u16vec1
+
+ +

Medium qualifier 16 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 351 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u16vec2

+ +
+
+ + + + +
typedef vec< 2, u16, mediump > mediump_u16vec2
+
+ +

Medium qualifier 16 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 352 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u16vec3

+ +
+
+ + + + +
typedef vec< 3, u16, mediump > mediump_u16vec3
+
+ +

Medium qualifier 16 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 353 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u16vec4

+ +
+
+ + + + +
typedef vec< 4, u16, mediump > mediump_u16vec4
+
+ +

Medium qualifier 16 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 354 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u32

+ +
+
+ + + + +
typedef detail::uint32 mediump_u32
+
+ +

Medium qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 120 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u32vec1

+ +
+
+ + + + +
typedef vec< 1, u32, mediump > mediump_u32vec1
+
+ +

Medium qualifier 32 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 371 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u32vec2

+ +
+
+ + + + +
typedef vec< 2, u32, mediump > mediump_u32vec2
+
+ +

Medium qualifier 32 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 372 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u32vec3

+ +
+
+ + + + +
typedef vec< 3, u32, mediump > mediump_u32vec3
+
+ +

Medium qualifier 32 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 373 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u32vec4

+ +
+
+ + + + +
typedef vec< 4, u32, mediump > mediump_u32vec4
+
+ +

Medium qualifier 32 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 374 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u64

+ +
+
+ + + + +
typedef detail::uint64 mediump_u64
+
+ +

Medium qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 134 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u64vec1

+ +
+
+ + + + +
typedef vec< 1, u64, mediump > mediump_u64vec1
+
+ +

Medium qualifier 64 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 391 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u64vec2

+ +
+
+ + + + +
typedef vec< 2, u64, mediump > mediump_u64vec2
+
+ +

Medium qualifier 64 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 392 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u64vec3

+ +
+
+ + + + +
typedef vec< 3, u64, mediump > mediump_u64vec3
+
+ +

Medium qualifier 64 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 393 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u64vec4

+ +
+
+ + + + +
typedef vec< 4, u64, mediump > mediump_u64vec4
+
+ +

Medium qualifier 64 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 394 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u8

+ +
+
+ + + + +
typedef detail::uint8 mediump_u8
+
+ +

Medium qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 92 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u8vec1

+ +
+
+ + + + +
typedef vec< 1, u8, mediump > mediump_u8vec1
+
+ +

Medium qualifier 8 bit unsigned integer scalar type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 331 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u8vec2

+ +
+
+ + + + +
typedef vec< 2, u8, mediump > mediump_u8vec2
+
+ +

Medium qualifier 8 bit unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 332 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u8vec3

+ +
+
+ + + + +
typedef vec< 3, u8, mediump > mediump_u8vec3
+
+ +

Medium qualifier 8 bit unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 333 of file fwd.hpp.

+ +
+
+ +

◆ mediump_u8vec4

+ +
+
+ + + + +
typedef vec< 4, u8, mediump > mediump_u8vec4
+
+ +

Medium qualifier 8 bit unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 334 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint16

+ +
+
+ + + + +
typedef detail::uint16 mediump_uint16
+
+ +

Medium qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 111 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint16_t

+ +
+
+ + + + +
typedef detail::uint16 mediump_uint16_t
+
+ +

Medium qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 115 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint32

+ +
+
+ + + + +
typedef detail::uint32 mediump_uint32
+
+ +

Medium qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 125 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint32_t

+ +
+
+ + + + +
typedef detail::uint32 mediump_uint32_t
+
+ +

Medium qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 129 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint64

+ +
+
+ + + + +
typedef detail::uint64 mediump_uint64
+
+ +

Medium qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 139 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint64_t

+ +
+
+ + + + +
typedef detail::uint64 mediump_uint64_t
+
+ +

Medium qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 143 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint8

+ +
+
+ + + + +
typedef detail::uint8 mediump_uint8
+
+ +

Medium qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 97 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uint8_t

+ +
+
+ + + + +
typedef detail::uint8 mediump_uint8_t
+
+ +

Medium qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 101 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uvec1

+ +
+
+ + + + +
typedef vec< 1, uint, mediump > mediump_uvec1
+
+ +

Medium qualifier unsigned integer vector of 1 component type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 311 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uvec2

+ +
+
+ + + + +
typedef vec< 2, uint, mediump > mediump_uvec2
+
+ +

Medium qualifier unsigned integer vector of 2 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 312 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uvec3

+ +
+
+ + + + +
typedef vec< 3, uint, mediump > mediump_uvec3
+
+ +

Medium qualifier unsigned integer vector of 3 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 313 of file fwd.hpp.

+ +
+
+ +

◆ mediump_uvec4

+ +
+
+ + + + +
typedef vec< 4, uint, mediump > mediump_uvec4
+
+ +

Medium qualifier unsigned integer vector of 4 components type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 314 of file fwd.hpp.

+ +
+
+ +

◆ u16

+ +
+
+ + + + +
typedef detail::uint16 u16
+
+ +

Default qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 108 of file fwd.hpp.

+ +
+
+ +

◆ u32

+ +
+
+ + + + +
typedef detail::uint32 u32
+
+ +

Default qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 122 of file fwd.hpp.

+ +
+
+ +

◆ u64

+ +
+
+ + + + +
typedef detail::uint64 u64
+
+ +

Default qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 136 of file fwd.hpp.

+ +
+
+ +

◆ u8

+ +
+
+ + + + +
typedef detail::uint8 u8
+
+ +

Default qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 94 of file fwd.hpp.

+ +
+
+ +

◆ uint16_t

+ +
+
+ + + + +
typedef detail::uint16 uint16_t
+
+ +

Default qualifier 16 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 117 of file fwd.hpp.

+ +
+
+ +

◆ uint32_t

+ +
+
+ + + + +
typedef detail::uint32 uint32_t
+
+ +

Default qualifier 32 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 131 of file fwd.hpp.

+ +
+
+ +

◆ uint64_t

+ +
+
+ + + + +
typedef detail::uint64 uint64_t
+
+ +

Default qualifier 64 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 145 of file fwd.hpp.

+ +
+
+ +

◆ uint8_t

+ +
+
+ + + + +
typedef detail::uint8 uint8_t
+
+ +

Default qualifier 8 bit unsigned integer type.

+
See also
GLM_GTC_type_precision
+ +

Definition at line 103 of file fwd.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00923.html b/include/glm/doc/api/a00923.html new file mode 100644 index 0000000..71d01ba --- /dev/null +++ b/include/glm/doc/api/a00923.html @@ -0,0 +1,927 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_type_ptr + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTC_type_ptr
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > make_mat2x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 3, T, defaultp > make_mat2x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 4, T, defaultp > make_mat2x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 2, T, defaultp > make_mat3x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > make_mat3x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 4, T, defaultp > make_mat3x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 2, T, defaultp > make_mat4x2 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 3, T, defaultp > make_mat4x3 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > make_mat4x4 (T const *const ptr)
 Build a matrix from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL qua< T, defaultp > make_quat (T const *const ptr)
 Build a quaternion from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, T, Q > make_vec1 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 2, T, defaultp > make_vec2 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > make_vec2 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 3, T, defaultp > make_vec3 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > make_vec3 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T >
GLM_FUNC_DECL vec< 4, T, defaultp > make_vec4 (T const *const ptr)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 1, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 2, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 3, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > make_vec4 (vec< 4, T, Q > const &v)
 Build a vector from a pointer. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type const * value_ptr (genType const &v)
 Return the constant address to the data of the input parameter. More...
 
+

Detailed Description

+

Include <glm/gtc/type_ptr.hpp> to use the features of this extension.

+

Handles the interaction between pointers and vector, matrix types.

+

This extension defines an overloaded function, glm::value_ptr. It returns a pointer to the memory layout of the object. Matrix types store their values in column-major order.

+

This is useful for uploading data to matrices or copying data to buffer objects.

+

Example:

#include <glm/glm.hpp>
+ +
+
glm::vec3 aVector(3);
+
glm::mat4 someMatrix(1.0);
+
+
glUniform3fv(uniformLoc, 1, glm::value_ptr(aVector));
+
glUniformMatrix4fv(uniformMatrixLoc, 1, GL_FALSE, glm::value_ptr(someMatrix));
+

<glm/gtc/type_ptr.hpp> need to be included to use the features of this extension.

+

Function Documentation

+ +

◆ make_mat2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::make_mat2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat2x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::make_mat2x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat2x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 3, T, defaultp> glm::make_mat2x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat2x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 4, T, defaultp> glm::make_mat2x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::make_mat3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat3x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 2, T, defaultp> glm::make_mat3x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat3x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::make_mat3x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat3x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 4, T, defaultp> glm::make_mat3x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::make_mat4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat4x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 2, T, defaultp> glm::make_mat4x2 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat4x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 3, T, defaultp> glm::make_mat4x3 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_mat4x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::make_mat4x4 (T const *const ptr)
+
+ +

Build a matrix from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_quat()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL qua<T, defaultp> glm::make_quat (T const *const ptr)
+
+ +

Build a quaternion from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec1() [1/4]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 1, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec1() [2/4]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 2, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec1() [3/4]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 3, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec1() [4/4]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<1, T, Q> glm::make_vec1 (vec< 4, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec2() [1/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, defaultp> glm::make_vec2 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec2() [2/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 1, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec2() [3/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 2, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec2() [4/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 3, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec2() [5/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<2, T, Q> glm::make_vec2 (vec< 4, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec3() [1/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, defaultp> glm::make_vec3 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec3() [2/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 1, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec3() [3/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 2, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec3() [4/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 3, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec3() [5/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::make_vec3 (vec< 4, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec4() [1/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, defaultp> glm::make_vec4 (T const *const ptr)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec4() [2/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 1, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec4() [3/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 2, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec4() [4/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 3, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ make_vec4() [5/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::make_vec4 (vec< 4, T, Q > const & v)
+
+ +

Build a vector from a pointer.

+
See also
GLM_GTC_type_ptr
+ +
+
+ +

◆ value_ptr()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type const* glm::value_ptr (genType const & v)
+
+ +

Return the constant address to the data of the input parameter.

+
See also
GLM_GTC_type_ptr
+ +
+
+
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
GLM_FUNC_DECL genType::value_type const * value_ptr(genType const &v)
Return the constant address to the data of the input parameter.
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
GLM_GTC_type_ptr
+ + + + diff --git a/include/glm/doc/api/a00924.html b/include/glm/doc/api/a00924.html new file mode 100644 index 0000000..a287597 --- /dev/null +++ b/include/glm/doc/api/a00924.html @@ -0,0 +1,621 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_ulp + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL int64 float_distance (double x, double y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
GLM_FUNC_DECL int float_distance (float x, float y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int64, Q > float_distance (vec< L, double, Q > const &x, vec< L, double, Q > const &y)
 Return the distance in the number of ULP between 2 double-precision floating-point scalars. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > float_distance (vec< L, float, Q > const &x, vec< L, float, Q > const &y)
 Return the distance in the number of ULP between 2 single-precision floating-point scalars. More...
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType x)
 Return the next ULP value(s) after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType next_float (genType x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x)
 Return the next ULP value(s) after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > next_float (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance after the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<typename genType >
GLM_FUNC_DECL genType prev_float (genType x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x)
 Return the previous ULP value(s) before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x, int ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > prev_float (vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)
 Return the value(s) ULP distance before the input value(s). More...
 
+

Detailed Description

+

Include <glm/gtc/ulp.hpp> to use the features of this extension.

+

Allow the measurement of the accuracy of a function against a reference implementation. This extension works on floating-point data and provide results in ULP.

+

Function Documentation

+ +

◆ float_distance() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int64 glm::float_distance (double x,
double y 
)
+
+ +

Return the distance in the number of ULP between 2 double-precision floating-point scalars.

+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ float_distance() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::float_distance (float x,
float y 
)
+
+ +

Return the distance in the number of ULP between 2 single-precision floating-point scalars.

+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ float_distance() [3/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, int64, Q> glm::float_distance (vec< L, double, Q > const & x,
vec< L, double, Q > const & y 
)
+
+ +

Return the distance in the number of ULP between 2 double-precision floating-point scalars.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ float_distance() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::float_distance (vec< L, float, Q > const & x,
vec< L, float, Q > const & y 
)
+
+ +

Return the distance in the number of ULP between 2 single-precision floating-point scalars.

+
Template Parameters
+ + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ next_float() [1/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::next_float (genType x)
+
+ +

Return the next ULP value(s) after the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ next_float() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::next_float (genType x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ next_float() [3/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::next_float (vec< L, T, Q > const & x)
+
+ +

Return the next ULP value(s) after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ next_float() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::next_float (vec< L, T, Q > const & x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ next_float() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::next_float (vec< L, T, Q > const & x,
vec< L, int, Q > const & ULPs 
)
+
+ +

Return the value(s) ULP distance after the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ prev_float() [1/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::prev_float (genType x)
+
+ +

Return the previous ULP value(s) before the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ prev_float() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::prev_float (genType x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + +
genTypeA floating-point scalar type.
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ prev_float() [3/5]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prev_float (vec< L, T, Q > const & x)
+
+ +

Return the previous ULP value(s) before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ prev_float() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prev_float (vec< L, T, Q > const & x,
int ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+ +

◆ prev_float() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::prev_float (vec< L, T, Q > const & x,
vec< L, int, Q > const & ULPs 
)
+
+ +

Return the value(s) ULP distance before the input value(s).

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point
QValue from qualifier enum
+
+
+
See also
GLM_GTC_ulp
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00925.html b/include/glm/doc/api/a00925.html new file mode 100644 index 0000000..7819ed7 --- /dev/null +++ b/include/glm/doc/api/a00925.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTC_vec1 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
+
+
+

Include <glm/gtc/vec1.hpp> to use the features of this extension.

+

Add vec1, ivec1, uvec1 and bvec1 types.

+
+ + + + diff --git a/include/glm/doc/api/a00926.html b/include/glm/doc/api/a00926.html new file mode 100644 index 0000000..70acd7f --- /dev/null +++ b/include/glm/doc/api/a00926.html @@ -0,0 +1,1388 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_associated_min_max + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_associated_min_max
+
+
+ +

Min and max functions that return associated values not the compared ones. +More...

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMax (T x, U a, T y, U b, T z, U c, T w, U d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)
 Maximum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)
 Maximum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMax (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)
 Maximum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c)
 Minimum comparison between 3 variables and returns 3 associated variable values. More...
 
template<typename T , typename U >
GLM_FUNC_DECL U associatedMin (T x, U a, T y, U b, T z, U c, T w, U d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)
 Minimum comparison between 2 variables and returns 2 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)
 Minimum comparison between 3 variables and returns 3 associated variable values. More...
 
template<length_t L, typename T , typename U , qualifier Q>
GLM_FUNC_DECL vec< L, U, Q > associatedMin (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)
 Minimum comparison between 4 variables and returns 4 associated variable values. More...
 
+

Detailed Description

+

Min and max functions that return associated values not the compared ones.

+

Include <glm/gtx/associated_min_max.hpp> to use the features of this extension.

+

Function Documentation

+ +

◆ associatedMax() [1/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [2/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b,
z,
c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [3/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMax (x,
a,
y,
b,
z,
c,
w,
d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [4/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [5/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [6/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c,
w,
vec< L, U, Q > const & d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [7/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [8/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [9/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c,
vec< L, T, Q > const & w,
d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [10/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b 
)
+
+ +

Maximum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [11/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c 
)
+
+ +

Maximum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMax() [12/12]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMax (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c,
vec< L, T, Q > const & w,
vec< L, U, Q > const & d 
)
+
+ +

Maximum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [1/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (x,
const vec< L, U, Q > & a,
y,
const vec< L, U, Q > & b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [2/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [3/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b,
z,
c 
)
+
+ +

Minimum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [4/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL U glm::associatedMin (x,
a,
y,
b,
z,
c,
w,
d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [5/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (x,
vec< L, U, Q > const & a,
y,
vec< L, U, Q > const & b,
z,
vec< L, U, Q > const & c,
w,
vec< L, U, Q > const & d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [6/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [7/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
a,
vec< L, T, Q > const & y,
b,
vec< L, T, Q > const & z,
c,
vec< L, T, Q > const & w,
d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [8/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b 
)
+
+ +

Minimum comparison between 2 variables and returns 2 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [9/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c 
)
+
+ +

Minimum comparison between 3 variables and returns 3 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+ +

◆ associatedMin() [10/10]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, U, Q> glm::associatedMin (vec< L, T, Q > const & x,
vec< L, U, Q > const & a,
vec< L, T, Q > const & y,
vec< L, U, Q > const & b,
vec< L, T, Q > const & z,
vec< L, U, Q > const & c,
vec< L, T, Q > const & w,
vec< L, U, Q > const & d 
)
+
+ +

Minimum comparison between 4 variables and returns 4 associated variable values.

+
See also
GLM_GTX_associated_min_max
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00927.html b/include/glm/doc/api/a00927.html new file mode 100644 index 0000000..bfc4169 --- /dev/null +++ b/include/glm/doc/api/a00927.html @@ -0,0 +1,324 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_bit + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genIUType >
GLM_FUNC_DECL genIUType highestBitValue (genIUType Value)
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > highestBitValue (vec< L, T, Q > const &value)
 Find the highest bit set to 1 in a integer variable and return its value. More...
 
template<typename genIUType >
GLM_FUNC_DECL genIUType lowestBitValue (genIUType Value)
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoAbove (genIUType Value)
 Return the power of two number which value is just higher the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoAbove (vec< L, T, Q > const &value)
 Return the power of two number which value is just higher the input value. More...
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoBelow (genIUType Value)
 Return the power of two number which value is just lower the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoBelow (vec< L, T, Q > const &value)
 Return the power of two number which value is just lower the input value. More...
 
template<typename genIUType >
GLM_DEPRECATED GLM_FUNC_DECL genIUType powerOfTwoNearest (genIUType Value)
 Return the power of two number which value is the closet to the input value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > powerOfTwoNearest (vec< L, T, Q > const &value)
 Return the power of two number which value is the closet to the input value. More...
 
+

Detailed Description

+

Include <glm/gtx/bit.hpp> to use the features of this extension.

+

Allow to perform bit operations on integer values

+

Function Documentation

+ +

◆ highestBitValue() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::highestBitValue (genIUType Value)
+
+
See also
GLM_GTX_bit
+ +
+
+ +

◆ highestBitValue() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::highestBitValue (vec< L, T, Q > const & value)
+
+ +

Find the highest bit set to 1 in a integer variable and return its value.

+
See also
GLM_GTX_bit
+ +
+
+ +

◆ lowestBitValue()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genIUType glm::lowestBitValue (genIUType Value)
+
+
See also
GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoAbove() [1/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoAbove (genIUType Value)
+
+ +

Return the power of two number which value is just higher the input value.

+

Deprecated, use ceilPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoAbove() [2/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoAbove (vec< L, T, Q > const & value)
+
+ +

Return the power of two number which value is just higher the input value.

+

Deprecated, use ceilPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoBelow() [1/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoBelow (genIUType Value)
+
+ +

Return the power of two number which value is just lower the input value.

+

Deprecated, use floorPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoBelow() [2/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoBelow (vec< L, T, Q > const & value)
+
+ +

Return the power of two number which value is just lower the input value.

+

Deprecated, use floorPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoNearest() [1/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL genIUType glm::powerOfTwoNearest (genIUType Value)
+
+ +

Return the power of two number which value is the closet to the input value.

+

Deprecated, use roundPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+ +

◆ powerOfTwoNearest() [2/2]

+ +
+
+ + + + + + + + +
GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> glm::powerOfTwoNearest (vec< L, T, Q > const & value)
+
+ +

Return the power of two number which value is the closet to the input value.

+

Deprecated, use roundPowerOfTwo from GTC_round instead

+
See also
GLM_GTC_round
+
+GLM_GTX_bit
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00928.html b/include/glm/doc/api/a00928.html new file mode 100644 index 0000000..4e01cef --- /dev/null +++ b/include/glm/doc/api/a00928.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_closest_point + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_closest_point
+
+
+ + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > closestPointOnLine (vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)
 2d lines work as well
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > closestPointOnLine (vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)
 Find the point on a straight line which is the closet of a point. More...
 
+

Detailed Description

+

Include <glm/gtx/closest_point.hpp> to use the features of this extension.

+

Find the point on a straight line which is the closet of a point.

+

Function Documentation

+ +

◆ closestPointOnLine()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::closestPointOnLine (vec< 3, T, Q > const & point,
vec< 3, T, Q > const & a,
vec< 3, T, Q > const & b 
)
+
+ +

Find the point on a straight line which is the closet of a point.

+
See also
GLM_GTX_closest_point
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00929.html b/include/glm/doc/api/a00929.html new file mode 100644 index 0000000..2652827 --- /dev/null +++ b/include/glm/doc/api/a00929.html @@ -0,0 +1,109 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_color_encoding + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_color_encoding
+
+
+ +

Allow to perform bit operations on integer values. +More...

+ + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToD50XYZ (vec< 3, T, Q > const &ColorD65XYZ)
 Convert a D65 YUV color to D50 YUV.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertD65XYZToLinearSRGB (vec< 3, T, Q > const &ColorD65XYZ)
 Convert a D65 YUV color to linear sRGB.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD50XYZ (vec< 3, T, Q > const &ColorLinearSRGB)
 Convert a linear sRGB color to D50 YUV.
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > convertLinearSRGBToD65XYZ (vec< 3, T, Q > const &ColorLinearSRGB)
 Convert a linear sRGB color to D65 YUV.
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

Include <glm/gtx/color_encoding.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00930.html b/include/glm/doc/api/a00930.html new file mode 100644 index 0000000..d9ae868 --- /dev/null +++ b/include/glm/doc/api/a00930.html @@ -0,0 +1,257 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_color_space + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_color_space
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > hsvColor (vec< 3, T, Q > const &rgbValue)
 Converts a color from RGB color space to its color in HSV color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T luminosity (vec< 3, T, Q > const &color)
 Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgbColor (vec< 3, T, Q > const &hsvValue)
 Converts a color from HSV color space to its color in RGB color space. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > saturation (T const s)
 Build a saturation matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > saturation (T const s, vec< 3, T, Q > const &color)
 Modify the saturation of a color. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > saturation (T const s, vec< 4, T, Q > const &color)
 Modify the saturation of a color. More...
 
+

Detailed Description

+

Include <glm/gtx/color_space.hpp> to use the features of this extension.

+

Related to RGB to HSV conversions and operations.

+

Function Documentation

+ +

◆ hsvColor()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::hsvColor (vec< 3, T, Q > const & rgbValue)
+
+ +

Converts a color from RGB color space to its color in HSV color space.

+
See also
GLM_GTX_color_space
+ +
+
+ +

◆ luminosity()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::luminosity (vec< 3, T, Q > const & color)
+
+ +

Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.

+
See also
GLM_GTX_color_space
+ +
+
+ +

◆ rgbColor()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rgbColor (vec< 3, T, Q > const & hsvValue)
+
+ +

Converts a color from HSV color space to its color in RGB color space.

+
See also
GLM_GTX_color_space
+ +
+
+ +

◆ saturation() [1/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::saturation (T const s)
+
+ +

Build a saturation matrix.

+
See also
GLM_GTX_color_space
+ +
+
+ +

◆ saturation() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::saturation (T const s,
vec< 3, T, Q > const & color 
)
+
+ +

Modify the saturation of a color.

+
See also
GLM_GTX_color_space
+ +
+
+ +

◆ saturation() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::saturation (T const s,
vec< 4, T, Q > const & color 
)
+
+ +

Modify the saturation of a color.

+
See also
GLM_GTX_color_space
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00931.html b/include/glm/doc/api/a00931.html new file mode 100644 index 0000000..db12f1b --- /dev/null +++ b/include/glm/doc/api/a00931.html @@ -0,0 +1,191 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_color_space_YCoCg + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_color_space_YCoCg
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg (vec< 3, T, Q > const &rgbColor)
 Convert a color from RGB color space to YCoCg color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR (vec< 3, T, Q > const &rgbColor)
 Convert a color from RGB color space to YCoCgR color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb (vec< 3, T, Q > const &YCoCgColor)
 Convert a color from YCoCg color space to RGB color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb (vec< 3, T, Q > const &YCoCgColor)
 Convert a color from YCoCgR color space to RGB color space. More...
 
+

Detailed Description

+

Include <glm/gtx/color_space_YCoCg.hpp> to use the features of this extension.

+

RGB to YCoCg conversions and operations

+

Function Documentation

+ +

◆ rgb2YCoCg()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rgb2YCoCg (vec< 3, T, Q > const & rgbColor)
+
+ +

Convert a color from RGB color space to YCoCg color space.

+
See also
GLM_GTX_color_space_YCoCg
+ +
+
+ +

◆ rgb2YCoCgR()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rgb2YCoCgR (vec< 3, T, Q > const & rgbColor)
+
+ +

Convert a color from RGB color space to YCoCgR color space.

+
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
+
+GLM_GTX_color_space_YCoCg
+ +
+
+ +

◆ YCoCg2rgb()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::YCoCg2rgb (vec< 3, T, Q > const & YCoCgColor)
+
+ +

Convert a color from YCoCg color space to RGB color space.

+
See also
GLM_GTX_color_space_YCoCg
+ +
+
+ +

◆ YCoCgR2rgb()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::YCoCgR2rgb (vec< 3, T, Q > const & YCoCgColor)
+
+ +

Convert a color from YCoCgR color space to RGB color space.

+
See also
"YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range"
+
+GLM_GTX_color_space_YCoCg
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00932.html b/include/glm/doc/api/a00932.html new file mode 100644 index 0000000..b2e37fb --- /dev/null +++ b/include/glm/doc/api/a00932.html @@ -0,0 +1,252 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_common + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ +

Provide functions to increase the compatibility with Cg and HLSL languages. +More...

+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > closeBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmod (vec< L, T, Q > const &v)
 Similar to 'mod' but with a different rounding and integer support. More...
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > openBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
+

Detailed Description

+

Provide functions to increase the compatibility with Cg and HLSL languages.

+

Include <glm/gtx/common.hpp> to use the features of this extension.

+

Function Documentation

+ +

◆ closeBounded()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::closeBounded (vec< L, T, Q > const & Value,
vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
+
+ +

Returns whether vector components values are within an interval.

+

A closed interval includes its endpoints, and is denoted with square brackets.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_relational
+ +
+
+ +

◆ fmod()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fmod (vec< L, T, Q > const & v)
+
+ +

Similar to 'mod' but with a different rounding and integer support.

+

Returns 'x - y * trunc(x/y)' instead of 'x - y * floor(x/y)'

+
See also
GLSL mod vs HLSL fmod
+
+GLSL mod man page
+ +
+
+ +

◆ isdenormal()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::bool_type glm::isdenormal (genType const & x)
+
+ +

Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format.

+

This format is less precise but can represent values closer to zero.

+
Template Parameters
+ + +
genTypeFloating-point scalar or vector types.
+
+
+
See also
GLSL isnan man page
+
+GLSL 4.20.8 specification, section 8.3 Common Functions
+ +
+
+ +

◆ openBounded()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::openBounded (vec< L, T, Q > const & Value,
vec< L, T, Q > const & Min,
vec< L, T, Q > const & Max 
)
+
+ +

Returns whether vector components values are within an interval.

+

A open interval excludes its endpoints, and is denoted with square brackets.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or integer scalar types
QValue from qualifier enum
+
+
+
See also
GLM_EXT_vector_relational
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00933.html b/include/glm/doc/api/a00933.html new file mode 100644 index 0000000..2a52343 --- /dev/null +++ b/include/glm/doc/api/a00933.html @@ -0,0 +1,419 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_compatibility + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_compatibility
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef bool bool1
 boolean type with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef bool bool1x1
 boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, bool, highp > bool2
 boolean type with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, bool, highp > bool2x2
 boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, bool, highp > bool2x3
 boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, bool, highp > bool2x4
 boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, bool, highp > bool3
 boolean type with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, bool, highp > bool3x2
 boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, bool, highp > bool3x3
 boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, bool, highp > bool3x4
 boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, bool, highp > bool4
 boolean type with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, bool, highp > bool4x2
 boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, bool, highp > bool4x3
 boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, bool, highp > bool4x4
 boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef double double1
 double-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef double double1x1
 double-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, double, highp > double2
 double-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, double, highp > double2x2
 double-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, double, highp > double2x3
 double-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, double, highp > double2x4
 double-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, double, highp > double3
 double-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, double, highp > double3x2
 double-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, double, highp > double3x3
 double-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, double, highp > double3x4
 double-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, double, highp > double4
 double-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, double, highp > double4x2
 double-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, double, highp > double4x3
 double-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, double, highp > double4x4
 double-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef float float1
 single-qualifier floating-point vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef float float1x1
 single-qualifier floating-point matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, float, highp > float2
 single-qualifier floating-point vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, float, highp > float2x2
 single-qualifier floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, float, highp > float2x3
 single-qualifier floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, float, highp > float2x4
 single-qualifier floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, float, highp > float3
 single-qualifier floating-point vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, float, highp > float3x2
 single-qualifier floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, float, highp > float3x3
 single-qualifier floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, float, highp > float3x4
 single-qualifier floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, float, highp > float4
 single-qualifier floating-point vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, float, highp > float4x2
 single-qualifier floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, float, highp > float4x3
 single-qualifier floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, float, highp > float4x4
 single-qualifier floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef int int1
 integer vector with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef int int1x1
 integer matrix with 1 component. (From GLM_GTX_compatibility extension)
 
+typedef vec< 2, int, highp > int2
 integer vector with 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 2, int, highp > int2x2
 integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 3, int, highp > int2x3
 integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 2, 4, int, highp > int2x4
 integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 3, int, highp > int3
 integer vector with 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 2, int, highp > int3x2
 integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 3, int, highp > int3x3
 integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 3, 4, int, highp > int3x4
 integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension)
 
+typedef vec< 4, int, highp > int4
 integer vector with 4 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 2, int, highp > int4x2
 integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 3, int, highp > int4x3
 integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension)
 
+typedef mat< 4, 4, int, highp > int4x4
 integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > atan2 (const vec< 2, T, Q > &y, const vec< 2, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > atan2 (const vec< 3, T, Q > &y, const vec< 3, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > atan2 (const vec< 4, T, Q > &y, const vec< 4, T, Q > &x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T atan2 (T y, T x)
 Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isfinite (const qua< T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 1, bool, Q > isfinite (const vec< 1, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, bool, Q > isfinite (const vec< 2, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, bool, Q > isfinite (const vec< 3, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, bool, Q > isfinite (const vec< 4, T, Q > &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename genType >
GLM_FUNC_DECL bool isfinite (genType const &x)
 Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > lerp (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > lerp (const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > lerp (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > lerp (const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > lerp (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)
 Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using vector a. The value for a is not restricted to the range [0, 1]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > lerp (const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T lerp (T x, T y, T a)
 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]. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 2, T, Q > saturate (const vec< 2, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 3, T, Q > saturate (const vec< 3, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER vec< 4, T, Q > saturate (const vec< 4, T, Q > &x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+template<typename T >
GLM_FUNC_QUALIFIER T saturate (T x)
 Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility)
 
+

Detailed Description

+

Include <glm/gtx/compatibility.hpp> to use the features of this extension.

+

Provide functions to increase the compatibility with Cg and HLSL languages

+
+ + + + diff --git a/include/glm/doc/api/a00934.html b/include/glm/doc/api/a00934.html new file mode 100644 index 0000000..3bb5864 --- /dev/null +++ b/include/glm/doc/api/a00934.html @@ -0,0 +1,287 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_component_wise + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_component_wise
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType::value_type compAdd (genType const &v)
 Add all vector components together. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMax (genType const &v)
 Find the maximum value between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMin (genType const &v)
 Find the minimum value between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type compMul (genType const &v)
 Multiply all vector components together. More...
 
template<typename floatType , length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > compNormalize (vec< L, T, Q > const &v)
 Convert an integer vector to a normalized float vector. More...
 
template<length_t L, typename T , typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > compScale (vec< L, floatType, Q > const &v)
 Convert a normalized float vector to an integer vector. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type fcompMax (genType const &v)
 Find the maximum float between single vector components. More...
 
template<typename genType >
GLM_FUNC_DECL genType::value_type fcompMin (genType const &v)
 Find the minimum float between single vector components. More...
 
+

Detailed Description

+

Include <glm/gtx/component_wise.hpp> to use the features of this extension.

+

Operations between components of a type

+

Function Documentation

+ +

◆ compAdd()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compAdd (genType const & v)
+
+ +

Add all vector components together.

+
See also
GLM_GTX_component_wise
+ +
+
+ +

◆ compMax()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMax (genType const & v)
+
+ +

Find the maximum value between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+ +

◆ compMin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMin (genType const & v)
+
+ +

Find the minimum value between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+ +

◆ compMul()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::compMul (genType const & v)
+
+ +

Multiply all vector components together.

+
See also
GLM_GTX_component_wise
+ +
+
+ +

◆ compNormalize()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, floatType, Q> glm::compNormalize (vec< L, T, Q > const & v)
+
+ +

Convert an integer vector to a normalized float vector.

+

If the parameter value type is already a floating qualifier type, the value is passed through.

See also
GLM_GTX_component_wise
+ +
+
+ +

◆ compScale()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::compScale (vec< L, floatType, Q > const & v)
+
+ +

Convert a normalized float vector to an integer vector.

+

If the parameter value type is already a floating qualifier type, the value is passed through.

See also
GLM_GTX_component_wise
+ +
+
+ +

◆ fcompMax()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::fcompMax (genType const & v)
+
+ +

Find the maximum float between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+ +

◆ fcompMin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType::value_type glm::fcompMin (genType const & v)
+
+ +

Find the minimum float between single vector components.

+
See also
GLM_GTX_component_wise
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00935.html b/include/glm/doc/api/a00935.html new file mode 100644 index 0000000..42bbb54 --- /dev/null +++ b/include/glm/doc/api/a00935.html @@ -0,0 +1,571 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_dual_quaternion + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_dual_quaternion
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef highp_ddualquat ddualquat
 Dual-quaternion of default double-qualifier floating-point numbers. More...
 
typedef highp_fdualquat dualquat
 Dual-quaternion of floating-point numbers. More...
 
typedef highp_fdualquat fdualquat
 Dual-quaternion of single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, highp > highp_ddualquat
 Dual-quaternion of high double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, highp > highp_dualquat
 Dual-quaternion of high single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, highp > highp_fdualquat
 Dual-quaternion of high single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, lowp > lowp_ddualquat
 Dual-quaternion of low double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, lowp > lowp_dualquat
 Dual-quaternion of low single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, lowp > lowp_fdualquat
 Dual-quaternion of low single-qualifier floating-point numbers. More...
 
typedef tdualquat< double, mediump > mediump_ddualquat
 Dual-quaternion of medium double-qualifier floating-point numbers. More...
 
typedef tdualquat< float, mediump > mediump_dualquat
 Dual-quaternion of medium single-qualifier floating-point numbers. More...
 
typedef tdualquat< float, mediump > mediump_fdualquat
 Dual-quaternion of medium single-qualifier floating-point numbers. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dual_quat_identity ()
 Creates an identity dual quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast (mat< 2, 4, T, Q > const &x)
 Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > dualquat_cast (mat< 3, 4, T, Q > const &x)
 Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > inverse (tdualquat< T, Q > const &q)
 Returns the q inverse. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > lerp (tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)
 Returns the linear interpolation of two dual quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 4, T, Q > mat2x4_cast (tdualquat< T, Q > const &x)
 Converts a quaternion to a 2 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 4, T, Q > mat3x4_cast (tdualquat< T, Q > const &x)
 Converts a quaternion to a 3 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL tdualquat< T, Q > normalize (tdualquat< T, Q > const &q)
 Returns the normalized quaternion. More...
 
+

Detailed Description

+

Include <glm/gtx/dual_quaternion.hpp> to use the features of this extension.

+

Defines a templated dual-quaternion type and several dual-quaternion operations.

+

Typedef Documentation

+ +

◆ ddualquat

+ +
+
+ + + + +
typedef highp_ddualquat ddualquat
+
+ +

Dual-quaternion of default double-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 258 of file dual_quaternion.hpp.

+ +
+
+ +

◆ dualquat

+ +
+
+ + + + +
typedef highp_fdualquat dualquat
+
+ +

Dual-quaternion of floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 234 of file dual_quaternion.hpp.

+ +
+
+ +

◆ fdualquat

+ +
+
+ + + + +
typedef highp_fdualquat fdualquat
+
+ +

Dual-quaternion of single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 239 of file dual_quaternion.hpp.

+ +
+
+ +

◆ highp_ddualquat

+ +
+
+ + + + +
typedef tdualquat<double, highp> highp_ddualquat
+
+ +

Dual-quaternion of high double-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 227 of file dual_quaternion.hpp.

+ +
+
+ +

◆ highp_dualquat

+ +
+
+ + + + +
typedef tdualquat<float, highp> highp_dualquat
+
+ +

Dual-quaternion of high single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 195 of file dual_quaternion.hpp.

+ +
+
+ +

◆ highp_fdualquat

+ +
+
+ + + + +
typedef tdualquat<float, highp> highp_fdualquat
+
+ +

Dual-quaternion of high single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 211 of file dual_quaternion.hpp.

+ +
+
+ +

◆ lowp_ddualquat

+ +
+
+ + + + +
typedef tdualquat<double, lowp> lowp_ddualquat
+
+ +

Dual-quaternion of low double-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 217 of file dual_quaternion.hpp.

+ +
+
+ +

◆ lowp_dualquat

+ +
+
+ + + + +
typedef tdualquat<float, lowp> lowp_dualquat
+
+ +

Dual-quaternion of low single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 185 of file dual_quaternion.hpp.

+ +
+
+ +

◆ lowp_fdualquat

+ +
+
+ + + + +
typedef tdualquat<float, lowp> lowp_fdualquat
+
+ +

Dual-quaternion of low single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 201 of file dual_quaternion.hpp.

+ +
+
+ +

◆ mediump_ddualquat

+ +
+
+ + + + +
typedef tdualquat<double, mediump> mediump_ddualquat
+
+ +

Dual-quaternion of medium double-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 222 of file dual_quaternion.hpp.

+ +
+
+ +

◆ mediump_dualquat

+ +
+
+ + + + +
typedef tdualquat<float, mediump> mediump_dualquat
+
+ +

Dual-quaternion of medium single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 190 of file dual_quaternion.hpp.

+ +
+
+ +

◆ mediump_fdualquat

+ +
+
+ + + + +
typedef tdualquat<float, mediump> mediump_fdualquat
+
+ +

Dual-quaternion of medium single-qualifier floating-point numbers.

+
See also
GLM_GTX_dual_quaternion
+ +

Definition at line 206 of file dual_quaternion.hpp.

+ +
+
+

Function Documentation

+ +

◆ dual_quat_identity()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::dual_quat_identity ()
+
+ +

Creates an identity dual quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ dualquat_cast() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::dualquat_cast (mat< 2, 4, T, Q > const & x)
+
+ +

Converts a 2 * 4 matrix (matrix which holds real and dual parts) to a quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ dualquat_cast() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::dualquat_cast (mat< 3, 4, T, Q > const & x)
+
+ +

Converts a 3 * 4 matrix (augmented matrix rotation + translation) to a quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ inverse()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::inverse (tdualquat< T, Q > const & q)
+
+ +

Returns the q inverse.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ lerp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::lerp (tdualquat< T, Q > const & x,
tdualquat< T, Q > const & y,
T const & a 
)
+
+ +

Returns the linear interpolation of two dual quaternion.

+
See also
gtc_dual_quaternion
+ +
+
+ +

◆ mat2x4_cast()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 4, T, Q> glm::mat2x4_cast (tdualquat< T, Q > const & x)
+
+ +

Converts a quaternion to a 2 * 4 matrix.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ mat3x4_cast()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 4, T, Q> glm::mat3x4_cast (tdualquat< T, Q > const & x)
+
+ +

Converts a quaternion to a 3 * 4 matrix.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+ +

◆ normalize()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL tdualquat<T, Q> glm::normalize (tdualquat< T, Q > const & q)
+
+ +

Returns the normalized quaternion.

+
See also
GLM_GTX_dual_quaternion
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00936.html b/include/glm/doc/api/a00936.html new file mode 100644 index 0000000..e4811c5 --- /dev/null +++ b/include/glm/doc/api/a00936.html @@ -0,0 +1,942 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_easing + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType backEaseIn (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseIn (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseInOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseInOut (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType backEaseOut (genType const &a, genType const &o)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseIn (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseInOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType bounceEaseOut (genType const &a)
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseIn (genType const &a)
 Modelled after shifted quadrant IV of unit circle. More...
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseInOut (genType const &a)
 Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0, 0.5) y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType circularEaseOut (genType const &a)
 Modelled after shifted quadrant II of unit circle. More...
 
+template<typename genType >
GLM_FUNC_DECL genType cubicEaseIn (genType const &a)
 Modelled after the cubic y = x^3.
 
template<typename genType >
GLM_FUNC_DECL genType cubicEaseInOut (genType const &a)
 Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType cubicEaseOut (genType const &a)
 Modelled after the cubic y = (x - 1)^3 + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseIn (genType const &a)
 Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1)) More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseInOut (genType const &a)
 Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType elasticEaseOut (genType const &a)
 Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseIn (genType const &a)
 Modelled after the exponential function y = 2^(10(x - 1)) More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseInOut (genType const &a)
 Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType exponentialEaseOut (genType const &a)
 Modelled after the exponential function y = -2^(-10x) + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType linearInterpolation (genType const &a)
 Modelled after the line y = x. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseIn (genType const &a)
 Modelled after the parabola y = x^2. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseInOut (genType const &a)
 Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quadraticEaseOut (genType const &a)
 Modelled after the parabola y = -x^2 + 2x. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseIn (genType const &a)
 Modelled after the quartic x^4. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseInOut (genType const &a)
 Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quarticEaseOut (genType const &a)
 Modelled after the quartic y = 1 - (x - 1)^4. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseIn (genType const &a)
 Modelled after the quintic y = x^5. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseInOut (genType const &a)
 Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0.5, 1]. More...
 
template<typename genType >
GLM_FUNC_DECL genType quinticEaseOut (genType const &a)
 Modelled after the quintic y = (x - 1)^5 + 1. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseIn (genType const &a)
 Modelled after quarter-cycle of sine wave. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseInOut (genType const &a)
 Modelled after half sine wave. More...
 
template<typename genType >
GLM_FUNC_DECL genType sineEaseOut (genType const &a)
 Modelled after quarter-cycle of sine wave (different phase) More...
 
+

Detailed Description

+

Include <glm/gtx/easing.hpp> to use the features of this extension.

+

Easing functions for animations and transitions All functions take a parameter x in the range [0.0,1.0]

+

Based on the AHEasing project of Warren Moore (https://github.com/warrenm/AHEasing)

+

Function Documentation

+ +

◆ backEaseIn() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseIn (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ backEaseIn() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseIn (genType const & a,
genType const & o 
)
+
+
Parameters
+ + + +
aparameter
oOptional overshoot modifier
+
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ backEaseInOut() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseInOut (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ backEaseInOut() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseInOut (genType const & a,
genType const & o 
)
+
+
Parameters
+ + + +
aparameter
oOptional overshoot modifier
+
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ backEaseOut() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseOut (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ backEaseOut() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::backEaseOut (genType const & a,
genType const & o 
)
+
+
Parameters
+ + + +
aparameter
oOptional overshoot modifier
+
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ bounceEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::bounceEaseIn (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ bounceEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::bounceEaseInOut (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ bounceEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::bounceEaseOut (genType const & a)
+
+
See also
GLM_GTX_easing
+ +
+
+ +

◆ circularEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::circularEaseIn (genType const & a)
+
+ +

Modelled after shifted quadrant IV of unit circle.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ circularEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::circularEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise circular function y = (1/2)(1 - sqrt(1 - 4x^2)) ; [0, 0.5) y = (1/2)(sqrt(-(2x - 3)*(2x - 1)) + 1) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ circularEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::circularEaseOut (genType const & a)
+
+ +

Modelled after shifted quadrant II of unit circle.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ cubicEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::cubicEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise cubic y = (1/2)((2x)^3) ; [0, 0.5) y = (1/2)((2x-2)^3 + 2) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ cubicEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::cubicEaseOut (genType const & a)
+
+ +

Modelled after the cubic y = (x - 1)^3 + 1.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ elasticEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::elasticEaseIn (genType const & a)
+
+ +

Modelled after the damped sine wave y = sin(13pi/2*x)*pow(2, 10 * (x - 1))

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ elasticEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::elasticEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise exponentially-damped sine wave: y = (1/2)*sin(13pi/2*(2*x))*pow(2, 10 * ((2*x) - 1)) ; [0,0.5) y = (1/2)*(sin(-13pi/2*((2x-1)+1))*pow(2,-10(2*x-1)) + 2) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ elasticEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::elasticEaseOut (genType const & a)
+
+ +

Modelled after the damped sine wave y = sin(-13pi/2*(x + 1))*pow(2, -10x) + 1.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ exponentialEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::exponentialEaseIn (genType const & a)
+
+ +

Modelled after the exponential function y = 2^(10(x - 1))

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ exponentialEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::exponentialEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise exponential y = (1/2)2^(10(2x - 1)) ; [0,0.5) y = -(1/2)*2^(-10(2x - 1))) + 1 ; [0.5,1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ exponentialEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::exponentialEaseOut (genType const & a)
+
+ +

Modelled after the exponential function y = -2^(-10x) + 1.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ linearInterpolation()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::linearInterpolation (genType const & a)
+
+ +

Modelled after the line y = x.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quadraticEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quadraticEaseIn (genType const & a)
+
+ +

Modelled after the parabola y = x^2.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quadraticEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quadraticEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise quadratic y = (1/2)((2x)^2) ; [0, 0.5) y = -(1/2)((2x-1)*(2x-3) - 1) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quadraticEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quadraticEaseOut (genType const & a)
+
+ +

Modelled after the parabola y = -x^2 + 2x.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quarticEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quarticEaseIn (genType const & a)
+
+ +

Modelled after the quartic x^4.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quarticEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quarticEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise quartic y = (1/2)((2x)^4) ; [0, 0.5) y = -(1/2)((2x-2)^4 - 2) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quarticEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quarticEaseOut (genType const & a)
+
+ +

Modelled after the quartic y = 1 - (x - 1)^4.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quinticEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quinticEaseIn (genType const & a)
+
+ +

Modelled after the quintic y = x^5.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quinticEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quinticEaseInOut (genType const & a)
+
+ +

Modelled after the piecewise quintic y = (1/2)((2x)^5) ; [0, 0.5) y = (1/2)((2x-2)^5 + 2) ; [0.5, 1].

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ quinticEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::quinticEaseOut (genType const & a)
+
+ +

Modelled after the quintic y = (x - 1)^5 + 1.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ sineEaseIn()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::sineEaseIn (genType const & a)
+
+ +

Modelled after quarter-cycle of sine wave.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ sineEaseInOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::sineEaseInOut (genType const & a)
+
+ +

Modelled after half sine wave.

+
See also
GLM_GTX_easing
+ +
+
+ +

◆ sineEaseOut()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::sineEaseOut (genType const & a)
+
+ +

Modelled after quarter-cycle of sine wave (different phase)

+
See also
GLM_GTX_easing
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00937.html b/include/glm/doc/api/a00937.html new file mode 100644 index 0000000..5f80271 --- /dev/null +++ b/include/glm/doc/api/a00937.html @@ -0,0 +1,1675 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_euler_angles + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_euler_angles
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleX (T const &angleX, T const &angularVelocityX)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleY (T const &angleY, T const &angularVelocityY)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > derivedEulerAngleZ (T const &angleZ, T const &angularVelocityZ)
 Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleX (T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXY (T const &angleX, T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXYZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZ (T const &angleX, T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleXZY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleY (T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYX (T const &angleY, T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYXZ (T const &yaw, T const &pitch, T const &roll)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZ (T const &angleY, T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleYZY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZ (T const &angleZ)
 Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZX (T const &angle, T const &angleX)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXY (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZXZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZY (T const &angleZ, T const &angleY)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYX (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > eulerAngleZYZ (T const &t1, T const &t2, T const &t3)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z). More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Y * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXYZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Y * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Z * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleXZY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (X * Z * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * X * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYXZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * X * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * Z * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleYZY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Y * Z * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXY (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * X * Y) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZXZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * X * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYX (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * Y * X) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DISCARD_DECL void extractEulerAngleZYZ (mat< 4, 4, T, defaultp > const &M, T &t1, T &t2, T &t3)
 Extracts the (Z * Y * Z) Euler angles from the rotation matrix M. More...
 
template<typename T >
GLM_FUNC_DECL mat< 2, 2, T, defaultp > orientate2 (T const &angle)
 Creates a 2D 2 * 2 rotation matrix from an euler angle. More...
 
template<typename T >
GLM_FUNC_DECL mat< 3, 3, T, defaultp > orientate3 (T const &angle)
 Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > orientate3 (vec< 3, T, Q > const &angles)
 Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > orientate4 (vec< 3, T, Q > const &angles)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > yawPitchRoll (T const &yaw, T const &pitch, T const &roll)
 Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z). More...
 
+

Detailed Description

+

Include <glm/gtx/euler_angles.hpp> to use the features of this extension.

+

Build matrices from Euler angles.

+

Extraction of Euler angles from rotation matrix. Based on the original paper 2014 Mike Day - Extracting Euler Angles from a Rotation Matrix.

+

Function Documentation

+ +

◆ derivedEulerAngleX()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleX (T const & angleX,
T const & angularVelocityX 
)
+
+ +

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about X-axis.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ derivedEulerAngleY()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleY (T const & angleY,
T const & angularVelocityY 
)
+
+ +

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Y-axis.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ derivedEulerAngleZ()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::derivedEulerAngleZ (T const & angleZ,
T const & angularVelocityZ 
)
+
+ +

Creates a 3D 4 * 4 homogeneous derived matrix from the rotation matrix about Z-axis.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleX()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleX (T const & angleX)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle X.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXY()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXY (T const & angleX,
T const & angleY 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXYX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXYX (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXYZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXYZ (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Y * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXZ()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZ (T const & angleX,
T const & angleZ 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXZX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZX (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleXZY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleXZY (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (X * Z * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleY()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleY (T const & angleY)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Y.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYX()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYX (T const & angleY,
T const & angleX 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYXY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYXY (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYXZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYXZ (T const & yaw,
T const & pitch,
T const & roll 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYZ()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZ (T const & angleY,
T const & angleZ 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYZX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZX (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleYZY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleYZY (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * Z * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZ()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZ (T const & angleZ)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from an euler angle Z.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZX()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZX (T const & angle,
T const & angleX 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZXY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZXY (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZXZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZXZ (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZY()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZY (T const & angleZ,
T const & angleY 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZYX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZYX (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * X).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ eulerAngleZYZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::eulerAngleZYZ (T const & t1,
T const & t2,
T const & t3 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Z * Y * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleXYX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleXYX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (X * Y * X) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleXYZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleXYZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (X * Y * Z) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleXZX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleXZX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (X * Z * X) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleXZY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleXZY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (X * Z * Y) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleYXY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleYXY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Y * X * Y) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleYXZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleYXZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Y * X * Z) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleYZX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleYZX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Y * Z * X) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleYZY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleYZY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Y * Z * Y) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleZXY()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleZXY (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Z * X * Y) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleZXZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleZXZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Z * X * Z) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleZYX()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleZYX (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Z * Y * X) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ extractEulerAngleZYZ()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::extractEulerAngleZYZ (mat< 4, 4, T, defaultp > const & M,
T & t1,
T & t2,
T & t3 
)
+
+ +

Extracts the (Z * Y * Z) Euler angles from the rotation matrix M.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ orientate2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, defaultp> glm::orientate2 (T const & angle)
+
+ +

Creates a 2D 2 * 2 rotation matrix from an euler angle.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ orientate3() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, defaultp> glm::orientate3 (T const & angle)
+
+ +

Creates a 2D 4 * 4 homogeneous rotation matrix from an euler angle.

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ orientate3() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::orientate3 (vec< 3, T, Q > const & angles)
+
+ +

Creates a 3D 3 * 3 rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ orientate4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::orientate4 (vec< 3, T, Q > const & angles)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+ +

◆ yawPitchRoll()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, defaultp> glm::yawPitchRoll (T const & yaw,
T const & pitch,
T const & roll 
)
+
+ +

Creates a 3D 4 * 4 homogeneous rotation matrix from euler angles (Y * X * Z).

+
See also
GLM_GTX_euler_angles
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00938.html b/include/glm/doc/api/a00938.html new file mode 100644 index 0000000..823f086 --- /dev/null +++ b/include/glm/doc/api/a00938.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_extend + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType extend (genType const &Origin, genType const &Source, typename genType::value_type const Length)
 Extends of Length the Origin position using the (Source - Origin) direction. More...
 
+

Detailed Description

+

Include <glm/gtx/extend.hpp> to use the features of this extension.

+

Extend a position from a source to a position at a defined length.

+

Function Documentation

+ +

◆ extend()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::extend (genType const & Origin,
genType const & Source,
typename genType::value_type const Length 
)
+
+ +

Extends of Length the Origin position using the (Source - Origin) direction.

+
See also
GLM_GTX_extend
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00939.html b/include/glm/doc/api/a00939.html new file mode 100644 index 0000000..c685795 --- /dev/null +++ b/include/glm/doc/api/a00939.html @@ -0,0 +1,615 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_extended_min_max + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_extended_min_max
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > max (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z)
 Return the maximum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T max (T const &x, T const &y, T const &z, T const &w)
 Return the maximum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T , template< typename > class C>
GLM_FUNC_DECL C< T > min (C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z)
 Return the minimum component-wise values of 3 inputs. More...
 
template<typename T >
GLM_FUNC_DECL T min (T const &x, T const &y, T const &z, T const &w)
 Return the minimum component-wise values of 4 inputs. More...
 
+

Detailed Description

+

Include <glm/gtx/extended_min_max.hpp> to use the features of this extension.

+

Min and max functions for 3 to 4 parameters.

+

Function Documentation

+ +

◆ max() [1/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ max() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ max() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ max() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::max (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ max() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z 
)
+
+ +

Return the maximum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ max() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::max (T const & x,
T const & y,
T const & z,
T const & w 
)
+
+ +

Return the maximum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [1/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
C< T > const & y,
C< T > const & z,
C< T > const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [4/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL C<T> glm::min (C< T > const & x,
typename C< T >::T const & y,
typename C< T >::T const & z,
typename C< T >::T const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z 
)
+
+ +

Return the minimum component-wise values of 3 inputs.

+
See also
gtx_extented_min_max
+ +
+
+ +

◆ min() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::min (T const & x,
T const & y,
T const & z,
T const & w 
)
+
+ +

Return the minimum component-wise values of 4 inputs.

+
See also
gtx_extented_min_max
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00940.html b/include/glm/doc/api/a00940.html new file mode 100644 index 0000000..4fc931e --- /dev/null +++ b/include/glm/doc/api/a00940.html @@ -0,0 +1,132 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_exterior_product + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_exterior_product
+
+
+ +

Allow to perform bit operations on integer values. +More...

+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T cross (vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)
 Returns the cross product of x and y. More...
 
+

Detailed Description

+

Allow to perform bit operations on integer values.

+

Include <glm/gtx/exterior_product.hpp> to use the features of this extension.

+

Function Documentation

+ +

◆ cross()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR T glm::cross (vec< 2, T, Q > const & v,
vec< 2, T, Q > const & u 
)
+
+ +

Returns the cross product of x and y.

+
Template Parameters
+ + + +
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
Exterior product
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00941.html b/include/glm/doc/api/a00941.html new file mode 100644 index 0000000..95cb4d3 --- /dev/null +++ b/include/glm/doc/api/a00941.html @@ -0,0 +1,417 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_fast_exponential + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_fast_exponential
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastExp (T x)
 Faster than the common exp function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastExp (vec< L, T, Q > const &x)
 Faster than the common exp function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastExp2 (T x)
 Faster than the common exp2 function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastExp2 (vec< L, T, Q > const &x)
 Faster than the common exp2 function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastLog (T x)
 Faster than the common log function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastLog (vec< L, T, Q > const &x)
 Faster than the common exp2 function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastLog2 (T x)
 Faster than the common log2 function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastLog2 (vec< L, T, Q > const &x)
 Faster than the common log2 function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastPow (genType x, genType y)
 Faster than the common pow function but less accurate. More...
 
template<typename genTypeT , typename genTypeU >
GLM_FUNC_DECL genTypeT fastPow (genTypeT x, genTypeU y)
 Faster than the common pow function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastPow (vec< L, T, Q > const &x)
 Faster than the common pow function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastPow (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Faster than the common pow function but less accurate. More...
 
+

Detailed Description

+

Include <glm/gtx/fast_exponential.hpp> to use the features of this extension.

+

Fast but less accurate implementations of exponential based functions.

+

Function Documentation

+ +

◆ fastExp() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastExp (x)
+
+ +

Faster than the common exp function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastExp() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastExp (vec< L, T, Q > const & x)
+
+ +

Faster than the common exp function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastExp2() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastExp2 (x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastExp2() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastExp2 (vec< L, T, Q > const & x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastLog() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLog (x)
+
+ +

Faster than the common log function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastLog() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastLog (vec< L, T, Q > const & x)
+
+ +

Faster than the common exp2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastLog2() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLog2 (x)
+
+ +

Faster than the common log2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastLog2() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastLog2 (vec< L, T, Q > const & x)
+
+ +

Faster than the common log2 function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastPow() [1/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fastPow (genType x,
genType y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastPow() [2/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genTypeT glm::fastPow (genTypeT x,
genTypeU y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastPow() [3/4]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastPow (vec< L, T, Q > const & x)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+ +

◆ fastPow() [4/4]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastPow (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Faster than the common pow function but less accurate.

+
See also
GLM_GTX_fast_exponential
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00942.html b/include/glm/doc/api/a00942.html new file mode 100644 index 0000000..679d304 --- /dev/null +++ b/include/glm/doc/api/a00942.html @@ -0,0 +1,359 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_fast_square_root + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_fast_square_root
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType fastDistance (genType x, genType y)
 Faster than the common distance function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastDistance (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Faster than the common distance function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastInverseSqrt (genType x)
 Faster than the common inversesqrt function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastInverseSqrt (vec< L, T, Q > const &x)
 Faster than the common inversesqrt function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastLength (genType x)
 Faster than the common length function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastLength (vec< L, T, Q > const &x)
 Faster than the common length function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastNormalize (genType x)
 Faster than the common normalize function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastNormalize (vec< L, T, Q > const &x)
 Faster than the common normalize function but less accurate. More...
 
template<typename genType >
GLM_FUNC_DECL genType fastSqrt (genType x)
 Faster than the common sqrt function but less accurate. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fastSqrt (vec< L, T, Q > const &x)
 Faster than the common sqrt function but less accurate. More...
 
+

Detailed Description

+

Include <glm/gtx/fast_square_root.hpp> to use the features of this extension.

+

Fast but less accurate implementations of square root based functions.

    +
  • Sqrt optimisation based on Newton's method, www.gamedev.net/community/forums/topic.asp?topic id=139956
  • +
+

Function Documentation

+ +

◆ fastDistance() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::fastDistance (genType x,
genType y 
)
+
+ +

Faster than the common distance function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastDistance() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastDistance (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Faster than the common distance function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastInverseSqrt() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastInverseSqrt (genType x)
+
+ +

Faster than the common inversesqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastInverseSqrt() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastInverseSqrt (vec< L, T, Q > const & x)
+
+ +

Faster than the common inversesqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastLength() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastLength (genType x)
+
+ +

Faster than the common length function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastLength() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastLength (vec< L, T, Q > const & x)
+
+ +

Faster than the common length function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastNormalize() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastNormalize (genType x)
+
+ +

Faster than the common normalize function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastNormalize() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastNormalize (vec< L, T, Q > const & x)
+
+ +

Faster than the common normalize function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastSqrt() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::fastSqrt (genType x)
+
+ +

Faster than the common sqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+ +

◆ fastSqrt() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::fastSqrt (vec< L, T, Q > const & x)
+
+ +

Faster than the common sqrt function but less accurate.

+
See also
GLM_GTX_fast_square_root extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00943.html b/include/glm/doc/api/a00943.html new file mode 100644 index 0000000..fcf36f0 --- /dev/null +++ b/include/glm/doc/api/a00943.html @@ -0,0 +1,277 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_fast_trigonometry + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_fast_trigonometry
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T fastAcos (T angle)
 Faster than the common acos function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAsin (T angle)
 Faster than the common asin function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T angle)
 Faster than the common atan function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastAtan (T y, T x)
 Faster than the common atan function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastCos (T angle)
 Faster than the common cos function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastSin (T angle)
 Faster than the common sin function but less accurate. More...
 
template<typename T >
GLM_FUNC_DECL T fastTan (T angle)
 Faster than the common tan function but less accurate. More...
 
+template<typename T >
GLM_FUNC_DECL T wrapAngle (T angle)
 Wrap an angle to [0 2pi[ From GLM_GTX_fast_trigonometry extension.
 
+

Detailed Description

+

Include <glm/gtx/fast_trigonometry.hpp> to use the features of this extension.

+

Fast but less accurate implementations of trigonometric functions.

+

Function Documentation

+ +

◆ fastAcos()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAcos (angle)
+
+ +

Faster than the common acos function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastAsin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAsin (angle)
+
+ +

Faster than the common asin function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastAtan() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastAtan (angle)
+
+ +

Faster than the common atan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastAtan() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastAtan (y,
x 
)
+
+ +

Faster than the common atan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastCos()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastCos (angle)
+
+ +

Faster than the common cos function but less accurate.

+

From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastSin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastSin (angle)
+
+ +

Faster than the common sin function but less accurate.

+

From GLM_GTX_fast_trigonometry extension.

+ +
+
+ +

◆ fastTan()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::fastTan (angle)
+
+ +

Faster than the common tan function but less accurate.

+

Defined between -2pi and 2pi. From GLM_GTX_fast_trigonometry extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00944.html b/include/glm/doc/api/a00944.html new file mode 100644 index 0000000..daed618 --- /dev/null +++ b/include/glm/doc/api/a00944.html @@ -0,0 +1,169 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_functions
+
+
+ + + + + + + + + + +

+Functions

template<typename T >
GLM_FUNC_DECL T gauss (T x, T ExpectedValue, T StandardDeviation)
 1D gauss function More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T gauss (vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)
 2D gauss function More...
 
+

Detailed Description

+

Include <glm/gtx/functions.hpp> to use the features of this extension.

+

List of useful common functions.

+

Function Documentation

+ +

◆ gauss() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::gauss (x,
ExpectedValue,
StandardDeviation 
)
+
+ +

1D gauss function

+
See also
GLM_GTC_epsilon
+ +
+
+ +

◆ gauss() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::gauss (vec< 2, T, Q > const & Coord,
vec< 2, T, Q > const & ExpectedValue,
vec< 2, T, Q > const & StandardDeviation 
)
+
+ +

2D gauss function

+
See also
GLM_GTC_epsilon
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00945.html b/include/glm/doc/api/a00945.html new file mode 100644 index 0000000..803d2a0 --- /dev/null +++ b/include/glm/doc/api/a00945.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_gradient_paint + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_gradient_paint
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL T linearGradient (vec< 2, T, Q > const &Point0, vec< 2, T, Q > const &Point1, vec< 2, T, Q > const &Position)
 Return a color from a linear gradient. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T radialGradient (vec< 2, T, Q > const &Center, T const &Radius, vec< 2, T, Q > const &Focal, vec< 2, T, Q > const &Position)
 Return a color from a radial gradient. More...
 
+

Detailed Description

+

Include <glm/gtx/gradient_paint.hpp> to use the features of this extension.

+

Functions that return the color of procedural gradient for specific coordinates.

+

Function Documentation

+ +

◆ linearGradient()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::linearGradient (vec< 2, T, Q > const & Point0,
vec< 2, T, Q > const & Point1,
vec< 2, T, Q > const & Position 
)
+
+ +

Return a color from a linear gradient.

+
See also
- GLM_GTX_gradient_paint
+ +
+
+ +

◆ radialGradient()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::radialGradient (vec< 2, T, Q > const & Center,
T const & Radius,
vec< 2, T, Q > const & Focal,
vec< 2, T, Q > const & Position 
)
+
+ +

Return a color from a radial gradient.

+
See also
- GLM_GTX_gradient_paint
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00946.html b/include/glm/doc/api/a00946.html new file mode 100644 index 0000000..c994a17 --- /dev/null +++ b/include/glm/doc/api/a00946.html @@ -0,0 +1,169 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_handed_coordinate_space + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_handed_coordinate_space
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL bool leftHanded (vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
 Return if a trihedron left handed or not. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool rightHanded (vec< 3, T, Q > const &tangent, vec< 3, T, Q > const &binormal, vec< 3, T, Q > const &normal)
 Return if a trihedron right handed or not. More...
 
+

Detailed Description

+

Include <glm/gtx/handed_coordinate_space.hpp> to use the features of this extension.

+

To know if a set of three basis vectors defines a right or left-handed coordinate system.

+

Function Documentation

+ +

◆ leftHanded()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::leftHanded (vec< 3, T, Q > const & tangent,
vec< 3, T, Q > const & binormal,
vec< 3, T, Q > const & normal 
)
+
+ +

Return if a trihedron left handed or not.

+

From GLM_GTX_handed_coordinate_space extension.

+ +
+
+ +

◆ rightHanded()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::rightHanded (vec< 3, T, Q > const & tangent,
vec< 3, T, Q > const & binormal,
vec< 3, T, Q > const & normal 
)
+
+ +

Return if a trihedron right handed or not.

+

From GLM_GTX_handed_coordinate_space extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00947.html b/include/glm/doc/api/a00947.html new file mode 100644 index 0000000..94ee81d --- /dev/null +++ b/include/glm/doc/api/a00947.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_hash + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+

Include <glm/gtx/hash.hpp> to use the features of this extension.

+

Add std::hash support for glm types

+
+ + + + diff --git a/include/glm/doc/api/a00948.html b/include/glm/doc/api/a00948.html new file mode 100644 index 0000000..4a40428 --- /dev/null +++ b/include/glm/doc/api/a00948.html @@ -0,0 +1,351 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_integer + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + +

+Typedefs

typedef signed int sint
 32bit signed integer. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 Returns the floor log2 of x. More...
 
GLM_FUNC_DECL int mod (int x, int y)
 Modulus. More...
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 Modulus. More...
 
GLM_FUNC_DECL uint nlz (uint x)
 Returns the number of leading zeros. More...
 
GLM_FUNC_DECL int pow (int x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL int sqrt (int x)
 Returns the positive square root of x. More...
 
GLM_FUNC_DECL uint sqrt (uint x)
 Returns the positive square root of x. More...
 
+

Detailed Description

+

Include <glm/gtx/integer.hpp> to use the features of this extension.

+

Add support for integer for core functions

+

Typedef Documentation

+ +

◆ sint

+ +
+
+ + + + +
typedef signed int sint
+
+ +

32bit signed integer.

+

From GLM_GTX_integer extension.

+ +

Definition at line 53 of file gtx/integer.hpp.

+ +
+
+

Function Documentation

+ +

◆ floor_log2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL unsigned int glm::floor_log2 (unsigned int x)
+
+ +

Returns the floor log2 of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +

◆ mod() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::mod (int x,
int y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +

◆ mod() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint glm::mod (uint x,
uint y 
)
+
+ +

Modulus.

+

Returns x - y * floor(x / y) for each component in x using the floating point value y. From GLM_GTX_integer extension.

+ +
+
+ +

◆ nlz()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::nlz (uint x)
+
+ +

Returns the number of leading zeros.

+

From GLM_GTX_integer extension.

+ +
+
+ +

◆ pow() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL int glm::pow (int x,
uint y 
)
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +

◆ pow() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL uint glm::pow (uint x,
uint y 
)
+
+ +

Returns x raised to the y power.

+

From GLM_GTX_integer extension.

+ +
+
+ +

◆ sqrt() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::sqrt (int x)
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+ +

◆ sqrt() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::sqrt (uint x)
+
+ +

Returns the positive square root of x.

+

From GLM_GTX_integer extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00949.html b/include/glm/doc/api/a00949.html new file mode 100644 index 0000000..f9a5089 --- /dev/null +++ b/include/glm/doc/api/a00949.html @@ -0,0 +1,447 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_intersect + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_intersect
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL bool intersectLineSphere (genType const &point0, genType const &point1, genType const &sphereCenter, typename genType::value_type sphereRadius, genType &intersectionPosition1, genType &intersectionNormal1, genType &intersectionPosition2=genType(), genType &intersectionNormal2=genType())
 Compute the intersection of a line and a sphere. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectLineTriangle (genType const &orig, genType const &dir, genType const &vert0, genType const &vert1, genType const &vert2, genType &position)
 Compute the intersection of a line and a triangle. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRayPlane (genType const &orig, genType const &dir, genType const &planeOrig, genType const &planeNormal, typename genType::value_type &intersectionDistance)
 Compute the intersection of a ray and a plane. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)
 Compute the intersection of a ray and a sphere. More...
 
template<typename genType >
GLM_FUNC_DECL bool intersectRaySphere (genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)
 Compute the intersection distance of a ray and a sphere. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool intersectRayTriangle (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dir, vec< 3, T, Q > const &v0, vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 2, T, Q > &baryPosition, T &distance)
 Compute the intersection of a ray and a triangle. More...
 
+

Detailed Description

+

Include <glm/gtx/intersect.hpp> to use the features of this extension.

+

Add intersection functions

+

Function Documentation

+ +

◆ intersectLineSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectLineSphere (genType const & point0,
genType const & point1,
genType const & sphereCenter,
typename genType::value_type sphereRadius,
genType & intersectionPosition1,
genType & intersectionNormal1,
genType & intersectionPosition2 = genType(),
genType & intersectionNormal2 = genType() 
)
+
+ +

Compute the intersection of a line and a sphere.

+

From GLM_GTX_intersect extension

+ +
+
+ +

◆ intersectLineTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectLineTriangle (genType const & orig,
genType const & dir,
genType const & vert0,
genType const & vert1,
genType const & vert2,
genType & position 
)
+
+ +

Compute the intersection of a line and a triangle.

+

From GLM_GTX_intersect extension.

+ +
+
+ +

◆ intersectRayPlane()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRayPlane (genType const & orig,
genType const & dir,
genType const & planeOrig,
genType const & planeNormal,
typename genType::value_type & intersectionDistance 
)
+
+ +

Compute the intersection of a ray and a plane.

+

Ray direction and plane normal must be unit length. From GLM_GTX_intersect extension.

+ +
+
+ +

◆ intersectRaySphere() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
const typename genType::value_type sphereRadius,
genType & intersectionPosition,
genType & intersectionNormal 
)
+
+ +

Compute the intersection of a ray and a sphere.

+

From GLM_GTX_intersect extension.

+ +
+
+ +

◆ intersectRaySphere() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRaySphere (genType const & rayStarting,
genType const & rayNormalizedDirection,
genType const & sphereCenter,
typename genType::value_type const sphereRadiusSquared,
typename genType::value_type & intersectionDistance 
)
+
+ +

Compute the intersection distance of a ray and a sphere.

+

The ray direction vector is unit length. From GLM_GTX_intersect extension.

+ +
+
+ +

◆ intersectRayTriangle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::intersectRayTriangle (vec< 3, T, Q > const & orig,
vec< 3, T, Q > const & dir,
vec< 3, T, Q > const & v0,
vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 2, T, Q > & baryPosition,
T & distance 
)
+
+ +

Compute the intersection of a ray and a triangle.

+

Based om Tomas Möller implementation http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/raytri/ From GLM_GTX_intersect extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00950.html b/include/glm/doc/api/a00950.html new file mode 100644 index 0000000..b4b7612 --- /dev/null +++ b/include/glm/doc/api/a00950.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_io + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+

Detailed Description

+

Include <glm/gtx/io.hpp> to use the features of this extension.

+

std::[w]ostream support for glm types

+

std::[w]ostream support for glm types + qualifier/width/etc. manipulators based on howard hinnant's std::chrono io proposal [http://home.roadrunner.com/~hinnant/bloomington/chrono_io.html]

+
+ + + + diff --git a/include/glm/doc/api/a00951.html b/include/glm/doc/api/a00951.html new file mode 100644 index 0000000..b21ca96 --- /dev/null +++ b/include/glm/doc/api/a00951.html @@ -0,0 +1,80 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_iteration + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_iteration
+
+
+

Detailed Description

+

Include <glm/gtx/iteration.hpp> to use the features of this extension.

+

Defines begin and end for vectors, matrices and quaternions useful for range based for loop construct

+
+ + + + diff --git a/include/glm/doc/api/a00952.html b/include/glm/doc/api/a00952.html new file mode 100644 index 0000000..24dc557 --- /dev/null +++ b/include/glm/doc/api/a00952.html @@ -0,0 +1,157 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_log_base + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_log_base
+
+
+ + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType log (genType const &x, genType const &base)
 Logarithm for any base. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sign (vec< L, T, Q > const &x, vec< L, T, Q > const &base)
 Logarithm for any base. More...
 
+

Detailed Description

+

Include <glm/gtx/log_base.hpp> to use the features of this extension.

+

Logarithm for any base. base can be a vector or a scalar.

+

Function Documentation

+ +

◆ log()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::log (genType const & x,
genType const & base 
)
+
+ +

Logarithm for any base.

+

From GLM_GTX_log_base.

+ +
+
+ +

◆ sign()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::sign (vec< L, T, Q > const & x,
vec< L, T, Q > const & base 
)
+
+ +

Logarithm for any base.

+

From GLM_GTX_log_base.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00953.html b/include/glm/doc/api/a00953.html new file mode 100644 index 0000000..93a6ba7 --- /dev/null +++ b/include/glm/doc/api/a00953.html @@ -0,0 +1,137 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_cross_product + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_cross_product
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > matrixCross3 (vec< 3, T, Q > const &x)
 Build a cross product matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > matrixCross4 (vec< 3, T, Q > const &x)
 Build a cross product matrix. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_cross_product.hpp> to use the features of this extension.

+

Build cross product matrices

+

Function Documentation

+ +

◆ matrixCross3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::matrixCross3 (vec< 3, T, Q > const & x)
+
+ +

Build a cross product matrix.

+

From GLM_GTX_matrix_cross_product extension.

+ +
+
+ +

◆ matrixCross4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::matrixCross4 (vec< 3, T, Q > const & x)
+
+ +

Build a cross product matrix.

+

From GLM_GTX_matrix_cross_product extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00954.html b/include/glm/doc/api/a00954.html new file mode 100644 index 0000000..aff4c45 --- /dev/null +++ b/include/glm/doc/api/a00954.html @@ -0,0 +1,146 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_decompose + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_decompose
+
+
+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL bool decompose (mat< 4, 4, T, Q > const &modelMatrix, vec< 3, T, Q > &scale, qua< T, Q > &orientation, vec< 3, T, Q > &translation, vec< 3, T, Q > &skew, vec< 4, T, Q > &perspective)
 Decomposes a model matrix to translations, rotation and scale components. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_decompose.hpp> to use the features of this extension.

+

Decomposes a model matrix to translations, rotation and scale components

+

Function Documentation

+ +

◆ decompose()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL bool glm::decompose (mat< 4, 4, T, Q > const & modelMatrix,
vec< 3, T, Q > & scale,
qua< T, Q > & orientation,
vec< 3, T, Q > & translation,
vec< 3, T, Q > & skew,
vec< 4, T, Q > & perspective 
)
+
+ +

Decomposes a model matrix to translations, rotation and scale components.

+
See also
GLM_GTX_matrix_decompose
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00955.html b/include/glm/doc/api/a00955.html new file mode 100644 index 0000000..135d006 --- /dev/null +++ b/include/glm/doc/api/a00955.html @@ -0,0 +1,221 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_factorisation + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_factorisation
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > fliplr (mat< C, R, T, Q > const &in)
 Flips the matrix columns right and left. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > flipud (mat< C, R, T, Q > const &in)
 Flips the matrix rows up and down. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void qr_decompose (mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &q, mat< C,(C< R ? C :R), T, Q > &r)
 Performs QR factorisation of a matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void rq_decompose (mat< C, R, T, Q > const &in, mat<(C< R ? C :R), R, T, Q > &r, mat< C,(C< R ? C :R), T, Q > &q)
 Performs RQ factorisation of a matrix. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_factorisation.hpp> to use the features of this extension.

+

Functions to factor matrices in various forms

+

Function Documentation

+ +

◆ fliplr()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<C, R, T, Q> glm::fliplr (mat< C, R, T, Q > const & in)
+
+ +

Flips the matrix columns right and left.

+

From GLM_GTX_matrix_factorisation extension.

+ +
+
+ +

◆ flipud()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<C, R, T, Q> glm::flipud (mat< C, R, T, Q > const & in)
+
+ +

Flips the matrix rows up and down.

+

From GLM_GTX_matrix_factorisation extension.

+ +
+
+ +

◆ qr_decompose()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::qr_decompose (mat< C, R, T, Q > const & in,
mat<(C< R ? C :R), R, T, Q > & q,
mat< C,(C< R ? C :R), T, Q > & r 
)
+
+ +

Performs QR factorisation of a matrix.

+

Returns 2 matrices, q and r, such that the columns of q are orthonormal and span the same subspace than those of the input matrix, r is an upper triangular matrix, and q*r=in. Given an n-by-m input matrix, q has dimensions min(n,m)-by-m, and r has dimensions n-by-min(n,m).

+

From GLM_GTX_matrix_factorisation extension.

+ +
+
+ +

◆ rq_decompose()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::rq_decompose (mat< C, R, T, Q > const & in,
mat<(C< R ? C :R), R, T, Q > & r,
mat< C,(C< R ? C :R), T, Q > & q 
)
+
+ +

Performs RQ factorisation of a matrix.

+

Returns 2 matrices, r and q, such that r is an upper triangular matrix, the rows of q are orthonormal and span the same subspace than those of the input matrix, and r*q=in. Note that in the context of RQ factorisation, the diagonal is seen as starting in the lower-right corner of the matrix, instead of the usual upper-left. Given an n-by-m input matrix, r has dimensions min(n,m)-by-m, and q has dimensions n-by-min(n,m).

+

From GLM_GTX_matrix_factorisation extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00956.html b/include/glm/doc/api/a00956.html new file mode 100644 index 0000000..b6ffb96 --- /dev/null +++ b/include/glm/doc/api/a00956.html @@ -0,0 +1,229 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_interpolation + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_interpolation
+
+
+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void axisAngle (mat< 4, 4, T, Q > const &Mat, vec< 3, T, Q > &Axis, T &Angle)
 Get the axis and angle of the rotation from a matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > axisAngleMatrix (vec< 3, T, Q > const &Axis, T const Angle)
 Build a matrix from axis and angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > extractMatrixRotation (mat< 4, 4, T, Q > const &Mat)
 Extracts the rotation part of a matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > interpolate (mat< 4, 4, T, Q > const &m1, mat< 4, 4, T, Q > const &m2, T const Delta)
 Build a interpolation of 4 * 4 matrixes. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_interpolation.hpp> to use the features of this extension.

+

Allows to directly interpolate two matrices.

+

Function Documentation

+ +

◆ axisAngle()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::axisAngle (mat< 4, 4, T, Q > const & Mat,
vec< 3, T, Q > & Axis,
T & Angle 
)
+
+ +

Get the axis and angle of the rotation from a matrix.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +

◆ axisAngleMatrix()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::axisAngleMatrix (vec< 3, T, Q > const & Axis,
T const Angle 
)
+
+ +

Build a matrix from axis and angle.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +

◆ extractMatrixRotation()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::extractMatrixRotation (mat< 4, 4, T, Q > const & Mat)
+
+ +

Extracts the rotation part of a matrix.

+

From GLM_GTX_matrix_interpolation extension.

+ +
+
+ +

◆ interpolate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::interpolate (mat< 4, 4, T, Q > const & m1,
mat< 4, 4, T, Q > const & m2,
T const Delta 
)
+
+ +

Build a interpolation of 4 * 4 matrixes.

+

From GLM_GTX_matrix_interpolation extension. Warning! works only with rotation and/or translation matrixes, scale will generate unexpected results.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00957.html b/include/glm/doc/api/a00957.html new file mode 100644 index 0000000..b3177d4 --- /dev/null +++ b/include/glm/doc/api/a00957.html @@ -0,0 +1,483 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_major_storage + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_major_storage
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2 (mat< 2, 2, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > colMajor2 (vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3 (mat< 3, 3, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > colMajor3 (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4 (mat< 4, 4, T, Q > const &m)
 Build a column major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > colMajor4 (vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)
 Build a column major matrix from column vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2 (mat< 2, 2, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > rowMajor2 (vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)
 Build a row major matrix from row vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3 (mat< 3, 3, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > rowMajor3 (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Build a row major matrix from row vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4 (mat< 4, 4, T, Q > const &m)
 Build a row major matrix from other matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rowMajor4 (vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)
 Build a row major matrix from row vectors. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_major_storage.hpp> to use the features of this extension.

+

Build matrices with specific matrix order, row or column

+

Function Documentation

+ +

◆ colMajor2() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::colMajor2 (mat< 2, 2, T, Q > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ colMajor2() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::colMajor2 (vec< 2, T, Q > const & v1,
vec< 2, T, Q > const & v2 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ colMajor3() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::colMajor3 (mat< 3, 3, T, Q > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ colMajor3() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::colMajor3 (vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 3, T, Q > const & v3 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ colMajor4() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::colMajor4 (mat< 4, 4, T, Q > const & m)
+
+ +

Build a column major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ colMajor4() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::colMajor4 (vec< 4, T, Q > const & v1,
vec< 4, T, Q > const & v2,
vec< 4, T, Q > const & v3,
vec< 4, T, Q > const & v4 
)
+
+ +

Build a column major matrix from column vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor2() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::rowMajor2 (mat< 2, 2, T, Q > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor2() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::rowMajor2 (vec< 2, T, Q > const & v1,
vec< 2, T, Q > const & v2 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor3() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::rowMajor3 (mat< 3, 3, T, Q > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor3() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::rowMajor3 (vec< 3, T, Q > const & v1,
vec< 3, T, Q > const & v2,
vec< 3, T, Q > const & v3 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor4() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rowMajor4 (mat< 4, 4, T, Q > const & m)
+
+ +

Build a row major matrix from other matrix.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+ +

◆ rowMajor4() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rowMajor4 (vec< 4, T, Q > const & v1,
vec< 4, T, Q > const & v2,
vec< 4, T, Q > const & v3,
vec< 4, T, Q > const & v4 
)
+
+ +

Build a row major matrix from row vectors.

+

From GLM_GTX_matrix_major_storage extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00958.html b/include/glm/doc/api/a00958.html new file mode 100644 index 0000000..5f65cb5 --- /dev/null +++ b/include/glm/doc/api/a00958.html @@ -0,0 +1,387 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_operation + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_operation
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > adjugate (mat< 2, 2, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > adjugate (mat< 3, 3, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > adjugate (mat< 4, 4, T, Q > const &m)
 Build an adjugate matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 2, T, Q > diagonal2x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 3, T, Q > diagonal2x3 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 2, 4, T, Q > diagonal2x4 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 2, T, Q > diagonal3x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > diagonal3x3 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 4, T, Q > diagonal3x4 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 2, T, Q > diagonal4x2 (vec< 2, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 3, T, Q > diagonal4x3 (vec< 3, T, Q > const &v)
 Build a diagonal matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > diagonal4x4 (vec< 4, T, Q > const &v)
 Build a diagonal matrix. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_operation.hpp> to use the features of this extension.

+

Build diagonal matrices from vectors.

+

Function Documentation

+ +

◆ adjugate() [1/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::adjugate (mat< 2, 2, T, Q > const & m)
+
+ +

Build an adjugate matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ adjugate() [2/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::adjugate (mat< 3, 3, T, Q > const & m)
+
+ +

Build an adjugate matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ adjugate() [3/3]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::adjugate (mat< 4, 4, T, Q > const & m)
+
+ +

Build an adjugate matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal2x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 2, T, Q> glm::diagonal2x2 (vec< 2, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal2x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 3, T, Q> glm::diagonal2x3 (vec< 2, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal2x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<2, 4, T, Q> glm::diagonal2x4 (vec< 2, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal3x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 2, T, Q> glm::diagonal3x2 (vec< 2, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal3x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::diagonal3x3 (vec< 3, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal3x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 4, T, Q> glm::diagonal3x4 (vec< 3, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal4x2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 2, T, Q> glm::diagonal4x2 (vec< 2, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal4x3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 3, T, Q> glm::diagonal4x3 (vec< 3, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+ +

◆ diagonal4x4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::diagonal4x4 (vec< 4, T, Q > const & v)
+
+ +

Build a diagonal matrix.

+

From GLM_GTX_matrix_operation extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00959.html b/include/glm/doc/api/a00959.html new file mode 100644 index 0000000..4368e24 --- /dev/null +++ b/include/glm/doc/api/a00959.html @@ -0,0 +1,367 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_query + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_query
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q, template< length_t, length_t, typename, qualifier > class matType>
GLM_FUNC_DECL bool isIdentity (matType< C, R, T, Q > const &m, T const &epsilon)
 Return whether a matrix is an identity matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 2, 2, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 3, 3, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (mat< 4, 4, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a normalized matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 2, 2, T, Q > const &m, T const &epsilon)
 Return whether a matrix a null matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 3, 3, T, Q > const &m, T const &epsilon)
 Return whether a matrix a null matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (mat< 4, 4, T, Q > const &m, T const &epsilon)
 Return whether a matrix is a null matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q, template< length_t, length_t, typename, qualifier > class matType>
GLM_FUNC_DECL bool isOrthogonal (matType< C, R, T, Q > const &m, T const &epsilon)
 Return whether a matrix is an orthonormalized matrix. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_query.hpp> to use the features of this extension.

+

Query to evaluate matrix properties

+

Function Documentation

+ +

◆ isIdentity()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isIdentity (matType< C, R, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is an identity matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNormalized() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (mat< 2, 2, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNormalized() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (mat< 3, 3, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNormalized() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (mat< 4, 4, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a normalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNull() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (mat< 2, 2, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNull() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (mat< 3, 3, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isNull() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (mat< 4, 4, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is a null matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+ +

◆ isOrthogonal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isOrthogonal (matType< C, R, T, Q > const & m,
T const & epsilon 
)
+
+ +

Return whether a matrix is an orthonormalized matrix.

+

From GLM_GTX_matrix_query extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00960.html b/include/glm/doc/api/a00960.html new file mode 100644 index 0000000..ec4ffec --- /dev/null +++ b/include/glm/doc/api/a00960.html @@ -0,0 +1,292 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_matrix_transform_2d + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_matrix_transform_2d
+
+
+ + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > rotate (mat< 3, 3, T, Q > const &m, T angle)
 Builds a rotation 3 * 3 matrix created from an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > scale (mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
 Builds a scale 3 * 3 matrix created from a vector of 2 components. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearX (mat< 3, 3, T, Q > const &m, T y)
 Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > shearY (mat< 3, 3, T, Q > const &m, T x)
 Builds a vertical (parallel to the y axis) shear 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > translate (mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)
 Builds a translation 3 * 3 matrix created from a vector of 2 components. More...
 
+

Detailed Description

+

Include <glm/gtx/matrix_transform_2d.hpp> to use the features of this extension.

+

Defines functions that generate common 2d transformation matrices.

+

Function Documentation

+ +

◆ rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::rotate (mat< 3, 3, T, Q > const & m,
angle 
)
+
+ +

Builds a rotation 3 * 3 matrix created from an angle.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
angleRotation angle expressed in radians.
+
+
+ +
+
+ +

◆ scale()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::scale (mat< 3, 3, T, Q > const & m,
vec< 2, T, Q > const & v 
)
+
+ +

Builds a scale 3 * 3 matrix created from a vector of 2 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a scale vector.
+
+
+ +
+
+ +

◆ shearX()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::shearX (mat< 3, 3, T, Q > const & m,
y 
)
+
+ +

Builds an horizontal (parallel to the x axis) shear 3 * 3 matrix.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
yShear factor.
+
+
+ +
+
+ +

◆ shearY()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::shearY (mat< 3, 3, T, Q > const & m,
x 
)
+
+ +

Builds a vertical (parallel to the y axis) shear 3 * 3 matrix.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
xShear factor.
+
+
+ +
+
+ +

◆ translate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::translate (mat< 3, 3, T, Q > const & m,
vec< 2, T, Q > const & v 
)
+
+ +

Builds a translation 3 * 3 matrix created from a vector of 2 components.

+
Parameters
+ + + +
mInput matrix multiplied by this translation matrix.
vCoordinates of a translation vector.
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00961.html b/include/glm/doc/api/a00961.html new file mode 100644 index 0000000..2362a04 --- /dev/null +++ b/include/glm/doc/api/a00961.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_mixed_producte + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_mixed_producte
+
+
+ + + + + + +

+Functions

+template<typename T , qualifier Q>
GLM_FUNC_DECL T mixedProduct (vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)
 Mixed product of 3 vectors (from GLM_GTX_mixed_product extension)
 
+

Detailed Description

+

Include <glm/gtx/mixed_product.hpp> to use the features of this extension.

+

Mixed product of 3 vectors.

+
+ + + + diff --git a/include/glm/doc/api/a00962.html b/include/glm/doc/api/a00962.html new file mode 100644 index 0000000..2c86469 --- /dev/null +++ b/include/glm/doc/api/a00962.html @@ -0,0 +1,403 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_norm + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T distance2 (vec< L, T, Q > const &p0, vec< L, T, Q > const &p1)
 Returns the squared distance between p0 and p1, i.e., length2(p0 - p1). More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l1Norm (vec< 3, T, Q > const &v)
 Returns the L1 norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l1Norm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the L1 norm between x and y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l2Norm (vec< 3, T, Q > const &x)
 Returns the L2 norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T l2Norm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the L2 norm between x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T length2 (vec< L, T, Q > const &x)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lMaxNorm (vec< 3, T, Q > const &x)
 Returns the LMax norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lMaxNorm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Returns the LMax norm between x and y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lxNorm (vec< 3, T, Q > const &x, unsigned int Depth)
 Returns the L norm of v. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T lxNorm (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)
 Returns the L norm between x and y. More...
 
+

Detailed Description

+

Include <glm/gtx/norm.hpp> to use the features of this extension.

+

Various ways to compute vector norms.

+

Function Documentation

+ +

◆ distance2()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::distance2 (vec< L, T, Q > const & p0,
vec< L, T, Q > const & p1 
)
+
+ +

Returns the squared distance between p0 and p1, i.e., length2(p0 - p1).

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ l1Norm() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::l1Norm (vec< 3, T, Q > const & v)
+
+ +

Returns the L1 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ l1Norm() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::l1Norm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
+
+ +

Returns the L1 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ l2Norm() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::l2Norm (vec< 3, T, Q > const & x)
+
+ +

Returns the L2 norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ l2Norm() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::l2Norm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
+
+ +

Returns the L2 norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ length2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::length2 (vec< L, T, Q > const & x)
+
+ +

Returns the squared length of x.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ lMaxNorm() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::lMaxNorm (vec< 3, T, Q > const & x)
+
+ +

Returns the LMax norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ lMaxNorm() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::lMaxNorm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
+
+ +

Returns the LMax norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ lxNorm() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::lxNorm (vec< 3, T, Q > const & x,
unsigned int Depth 
)
+
+ +

Returns the L norm of v.

+

From GLM_GTX_norm extension.

+ +
+
+ +

◆ lxNorm() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::lxNorm (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
unsigned int Depth 
)
+
+ +

Returns the L norm between x and y.

+

From GLM_GTX_norm extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00963.html b/include/glm/doc/api/a00963.html new file mode 100644 index 0000000..2808707 --- /dev/null +++ b/include/glm/doc/api/a00963.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_normal + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > triangleNormal (vec< 3, T, Q > const &p1, vec< 3, T, Q > const &p2, vec< 3, T, Q > const &p3)
 Computes triangle normal from triangle points. More...
 
+

Detailed Description

+

Include <glm/gtx/normal.hpp> to use the features of this extension.

+

Compute the normal of a triangle.

+

Function Documentation

+ +

◆ triangleNormal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::triangleNormal (vec< 3, T, Q > const & p1,
vec< 3, T, Q > const & p2,
vec< 3, T, Q > const & p3 
)
+
+ +

Computes triangle normal from triangle points.

+
See also
GLM_GTX_normal
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00964.html b/include/glm/doc/api/a00964.html new file mode 100644 index 0000000..e9b5506 --- /dev/null +++ b/include/glm/doc/api/a00964.html @@ -0,0 +1,159 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_normalize_dot + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_normalize_dot
+
+
+ + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T fastNormalizeDot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Normalize parameters and returns the dot product of x and y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T normalizeDot (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Normalize parameters and returns the dot product of x and y. More...
 
+

Detailed Description

+

Include <glm/gtx/normalize_dot.hpp> to use the features of this extension.

+

Dot product of vectors that need to be normalize with a single square root.

+

Function Documentation

+ +

◆ fastNormalizeDot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::fastNormalizeDot (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Normalize parameters and returns the dot product of x and y.

+

Faster that dot(fastNormalize(x), fastNormalize(y)).

+
See also
GLM_GTX_normalize_dot extension.
+ +
+
+ +

◆ normalizeDot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::normalizeDot (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Normalize parameters and returns the dot product of x and y.

+

It's faster that dot(normalize(x), normalize(y)).

+
See also
GLM_GTX_normalize_dot extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00965.html b/include/glm/doc/api/a00965.html new file mode 100644 index 0000000..c148eaf --- /dev/null +++ b/include/glm/doc/api/a00965.html @@ -0,0 +1,102 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_number_precision + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_number_precision
+
+
+ + + + + + + + + + + + + + +

+Typedefs

+typedef f32 f32mat1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f32 f32mat1x1
 Single-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f64 f64mat1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+typedef f64 f64mat1x1
 Double-qualifier floating-point scalar. (from GLM_GTX_number_precision extension)
 
+

Detailed Description

+

Include <glm/gtx/number_precision.hpp> to use the features of this extension.

+

Defined size types.

+
+ + + + diff --git a/include/glm/doc/api/a00966.html b/include/glm/doc/api/a00966.html new file mode 100644 index 0000000..e3e8573 --- /dev/null +++ b/include/glm/doc/api/a00966.html @@ -0,0 +1,162 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_optimum_pow + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_optimum_pow
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType pow2 (genType const &x)
 Returns x raised to the power of 2. More...
 
template<typename genType >
GLM_FUNC_DECL genType pow3 (genType const &x)
 Returns x raised to the power of 3. More...
 
template<typename genType >
GLM_FUNC_DECL genType pow4 (genType const &x)
 Returns x raised to the power of 4. More...
 
+

Detailed Description

+

Include <glm/gtx/optimum_pow.hpp> to use the features of this extension.

+

Integer exponentiation of power functions.

+

Function Documentation

+ +

◆ pow2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::pow2 (genType const & x)
+
+ +

Returns x raised to the power of 2.

+
See also
GLM_GTX_optimum_pow
+ +
+
+ +

◆ pow3()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::pow3 (genType const & x)
+
+ +

Returns x raised to the power of 3.

+
See also
GLM_GTX_optimum_pow
+ +
+
+ +

◆ pow4()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL genType glm::pow4 (genType const & x)
+
+ +

Returns x raised to the power of 4.

+
See also
GLM_GTX_optimum_pow
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00967.html b/include/glm/doc/api/a00967.html new file mode 100644 index 0000000..6ef3dde --- /dev/null +++ b/include/glm/doc/api/a00967.html @@ -0,0 +1,147 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_orthonormalize + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_orthonormalize
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > orthonormalize (mat< 3, 3, T, Q > const &m)
 Returns the orthonormalized matrix of m. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > orthonormalize (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)
 Orthonormalizes x according y. More...
 
+

Detailed Description

+

Include <glm/gtx/orthonormalize.hpp> to use the features of this extension.

+

Orthonormalize matrices.

+

Function Documentation

+ +

◆ orthonormalize() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::orthonormalize (mat< 3, 3, T, Q > const & m)
+
+ +

Returns the orthonormalized matrix of m.

+
See also
GLM_GTX_orthonormalize
+ +
+
+ +

◆ orthonormalize() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::orthonormalize (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y 
)
+
+ +

Orthonormalizes x according y.

+
See also
GLM_GTX_orthonormalize
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00968.html b/include/glm/doc/api/a00968.html new file mode 100644 index 0000000..e79c735 --- /dev/null +++ b/include/glm/doc/api/a00968.html @@ -0,0 +1,363 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_pca + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<length_t D, typename T , qualifier Q, typename I >
GLM_FUNC_DECL mat< D, D, T, Q > computeCovarianceMatrix (I const &b, I const &e)
 Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with relative coordinates (e.g., relative to the center of gravity of the object) Dereferencing an iterator of type I must yield a vec<D, T, Qgt;
 
+template<length_t D, typename T , qualifier Q, typename I >
GLM_FUNC_DECL mat< D, D, T, Q > computeCovarianceMatrix (I const &b, I const &e, vec< D, T, Q > const &c)
 Compute a covariance matrix form a pair of iterators b (begin) and e (end) of a container with absolute coordinates and a precomputed center of gravity c Dereferencing an iterator of type I must yield a vec<D, T, Qgt;
 
template<length_t D, typename T , qualifier Q>
GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n)
 Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of gravity of the object) More...
 
template<length_t D, typename T , qualifier Q>
GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix (vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c)
 Compute a covariance matrix form an array of absolute coordinates v and a precomputed center of gravity c More...
 
template<length_t D, typename T , qualifier Q>
GLM_FUNC_DECL unsigned int findEigenvaluesSymReal (mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)
 Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the D Eigenvalues of the matrix, and also provides the corresponding Eigenvectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DISCARD_DECL void sortEigenvalues (vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)
 Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue. More...
 
+

Detailed Description

+

Include <glm/gtx/pca.hpp> to use the features of this extension.

+

Implements functions required for fundamental 'princple component analysis' in 2D, 3D, and 4D: 1) Computing a covariance matrics from a list of relative position vectors 2) Compute the eigenvalues and eigenvectors of the covariance matrics This is useful, e.g., to compute an object-aligned bounding box from vertices of an object. https://en.wikipedia.org/wiki/Principal_component_analysis

+

Example:

std::vector<glm::dvec3> ptData;
+
// ... fill ptData with some point data, e.g. vertices
+
+
glm::dvec3 center = computeCenter(ptData);
+
+
glm::dmat3 covarMat = glm::computeCovarianceMatrix(ptData.data(), ptData.size(), center);
+
+
glm::dvec3 evals;
+
glm::dmat3 evecs;
+
int evcnt = glm::findEigenvaluesSymReal(covarMat, evals, evecs);
+
+
if(evcnt != 3)
+
// ... error handling
+
+
glm::sortEigenvalues(evals, evecs);
+
+
// ... now evecs[0] points in the direction (symmetric) of the largest spatial distribution within ptData
+

Function Documentation

+ +

◆ computeCovarianceMatrix() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix (vec< D, T, Q > const * v,
size_t n 
)
+
+ +

Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of gravity of the object)

+
Parameters
+ + + +
vPoints to a memory holding n times vectors
nNumber of points in v
+
+
+ +
+
+ +

◆ computeCovarianceMatrix() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_INLINE mat<D, D, T, Q> glm::computeCovarianceMatrix (vec< D, T, Q > const * v,
size_t n,
vec< D, T, Q > const & c 
)
+
+ +

Compute a covariance matrix form an array of absolute coordinates v and a precomputed center of gravity c

+
Parameters
+ + + + +
vPoints to a memory holding n times vectors
nNumber of points in v
cPrecomputed center of gravity
+
+
+ +
+
+ +

◆ findEigenvaluesSymReal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL unsigned int glm::findEigenvaluesSymReal (mat< D, D, T, Q > const & covarMat,
vec< D, T, Q > & outEigenvalues,
mat< D, D, T, Q > & outEigenvectors 
)
+
+ +

Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the D Eigenvalues of the matrix, and also provides the corresponding Eigenvectors.

+

Note: the data in outEigenvalues and outEigenvectors are in matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i]. This is a numeric implementation to find the Eigenvalues, using 'QL decomposition` (variant of QR decomposition: https://en.wikipedia.org/wiki/QR_decomposition).

+
Parameters
+ + + + +
[in]covarMatA symmetric, real-valued covariance matrix, e.g. computed from computeCovarianceMatrix
[out]outEigenvaluesVector to receive the found eigenvalues
[out]outEigenvectorsMatrix to receive the found eigenvectors corresponding to the found eigenvalues, as column vectors
+
+
+
Returns
The number of eigenvalues found, usually D if the precondition of the covariance matrix is met.
+ +
+
+ +

◆ sortEigenvalues() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues (vec< 2, T, Q > & eigenvalues,
mat< 2, 2, T, Q > & eigenvectors 
)
+
+ +

Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.

+

The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].

+ +
+
+ +

◆ sortEigenvalues() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues (vec< 3, T, Q > & eigenvalues,
mat< 3, 3, T, Q > & eigenvectors 
)
+
+ +

Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.

+

The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].

+ +
+
+ +

◆ sortEigenvalues() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::sortEigenvalues (vec< 4, T, Q > & eigenvalues,
mat< 4, 4, T, Q > & eigenvectors 
)
+
+ +

Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.

+

The data in outEigenvalues and outEigenvectors are assumed to be matching order, i.e. outEigenvector[i] is the Eigenvector of the Eigenvalue outEigenvalue[i].

+ +
+
+
+
GLM_FUNC_DISCARD_DECL void sortEigenvalues(vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)
Sorts a group of Eigenvalues&Eigenvectors, for largest Eigenvalue to smallest Eigenvalue.
+
GLM_INLINE mat< D, D, T, Q > computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n)
Compute a covariance matrix form an array of relative coordinates v (e.g., relative to the center of ...
+
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
+
mat< 3, 3, double, defaultp > dmat3
3 columns of 3 components matrix of double-precision floating-point numbers.
+
GLM_FUNC_DECL unsigned int findEigenvaluesSymReal(mat< D, D, T, Q > const &covarMat, vec< D, T, Q > &outEigenvalues, mat< D, D, T, Q > &outEigenvectors)
Assuming the provided covariance matrix covarMat is symmetric and real-valued, this function find the...
+ + + + diff --git a/include/glm/doc/api/a00969.html b/include/glm/doc/api/a00969.html new file mode 100644 index 0000000..9c00fb6 --- /dev/null +++ b/include/glm/doc/api/a00969.html @@ -0,0 +1,122 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_perpendicular + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_perpendicular
+
+
+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType perp (genType const &x, genType const &Normal)
 Projects x a perpendicular axis of Normal. More...
 
+

Detailed Description

+

Include <glm/gtx/perpendicular.hpp> to use the features of this extension.

+

Perpendicular of a vector from other one

+

Function Documentation

+ +

◆ perp()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::perp (genType const & x,
genType const & Normal 
)
+
+ +

Projects x a perpendicular axis of Normal.

+

From GLM_GTX_perpendicular extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00970.html b/include/glm/doc/api/a00970.html new file mode 100644 index 0000000..efdfb43 --- /dev/null +++ b/include/glm/doc/api/a00970.html @@ -0,0 +1,137 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_polar_coordinates + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_polar_coordinates
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > euclidean (vec< 2, T, Q > const &polar)
 Convert Polar to Euclidean coordinates. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > polar (vec< 3, T, Q > const &euclidean)
 Convert Euclidean to Polar coordinates, x is the latitude, y the longitude and z the xz distance. More...
 
+

Detailed Description

+

Include <glm/gtx/polar_coordinates.hpp> to use the features of this extension.

+

Conversion from Euclidean space to polar space and revert.

+

Function Documentation

+ +

◆ euclidean()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::euclidean (vec< 2, T, Q > const & polar)
+
+ +

Convert Polar to Euclidean coordinates.

+
See also
GLM_GTX_polar_coordinates
+ +
+
+ +

◆ polar()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::polar (vec< 3, T, Q > const & euclidean)
+
+ +

Convert Euclidean to Polar coordinates, x is the latitude, y the longitude and z the xz distance.

+
See also
GLM_GTX_polar_coordinates
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00971.html b/include/glm/doc/api/a00971.html new file mode 100644 index 0000000..e3b3f90 --- /dev/null +++ b/include/glm/doc/api/a00971.html @@ -0,0 +1,129 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_projection + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_projection
+
+
+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType proj (genType const &x, genType const &Normal)
 Projects x on Normal. More...
 
+

Detailed Description

+

Include <glm/gtx/projection.hpp> to use the features of this extension.

+

Projection of a vector to other one

+

Function Documentation

+ +

◆ proj()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::proj (genType const & x,
genType const & Normal 
)
+
+ +

Projects x on Normal.

+
Parameters
+ + + +
[in]xA vector to project
[in]NormalA normal that doesn't need to be of unit length.
+
+
+
See also
GLM_GTX_projection
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00972.html b/include/glm/doc/api/a00972.html new file mode 100644 index 0000000..5fcdf29 --- /dev/null +++ b/include/glm/doc/api/a00972.html @@ -0,0 +1,638 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_quaternion + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_quaternion
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Compute a cross product between a quaternion and a vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (vec< 3, T, Q > const &v, qua< T, Q > const &q)
 Compute a cross product between a vector and a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T extractRealComponent (qua< T, Q > const &q)
 Extract the real component of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > fastMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion normalized linear interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > intermediate (qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
 Returns an intermediate control point for squad interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T length2 (qua< T, Q > const &q)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > quat_identity ()
 Create an identity quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Returns quarternion square root. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (qua< T, Q > const &q, vec< 4, T, Q > const &v)
 Rotates a 4 components vector by a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotation (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
 Compute the rotation between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > shortMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion interpolation using the rotation short path. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > squad (qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
 Compute a point on a path according squad equation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > toMat3 (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > toMat4 (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER qua< T, Q > toQuat (mat< 3, 3, T, Q > const &x)
 Converts a 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER qua< T, Q > toQuat (mat< 4, 4, T, Q > const &x)
 Converts a 4 * 4 matrix to a quaternion. More...
 
+

Detailed Description

+

Include <glm/gtx/quaternion.hpp> to use the features of this extension.

+

Extended quaternion types and functions

+

Function Documentation

+ +

◆ cross() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> glm::cross (qua< T, Q > const & q,
vec< 3, T, Q > const & v 
)
+
+ +

Compute a cross product between a quaternion and a vector.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ cross() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> glm::cross (vec< 3, T, Q > const & v,
qua< T, Q > const & q 
)
+
+ +

Compute a cross product between a vector and a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ extractRealComponent()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL T glm::extractRealComponent (qua< T, Q > const & q)
+
+ +

Extract the real component of a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ fastMix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::fastMix (qua< T, Q > const & x,
qua< T, Q > const & y,
T const & a 
)
+
+ +

Quaternion normalized linear interpolation.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ intermediate()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::intermediate (qua< T, Q > const & prev,
qua< T, Q > const & curr,
qua< T, Q > const & next 
)
+
+ +

Returns an intermediate control point for squad interpolation.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ length2()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR T glm::length2 (qua< T, Q > const & q)
+
+ +

Returns the squared length of x.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ quat_identity()

+ +
+
+ + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> glm::quat_identity ()
+
+ +

Create an identity quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ rotate() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rotate (qua< T, Q > const & q,
vec< 3, T, Q > const & v 
)
+
+ +

Returns quarternion square root.

+
See also
GLM_GTX_quaternion Rotates a 3 components vector by a quaternion.
+
+GLM_GTX_quaternion
+ +
+
+ +

◆ rotate() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::rotate (qua< T, Q > const & q,
vec< 4, T, Q > const & v 
)
+
+ +

Rotates a 4 components vector by a quaternion.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ rotation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::rotation (vec< 3, T, Q > const & orig,
vec< 3, T, Q > const & dest 
)
+
+ +

Compute the rotation between two vectors.

+
Parameters
+ + + +
origvector, needs to be normalized
destvector, needs to be normalized
+
+
+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ shortMix()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::shortMix (qua< T, Q > const & x,
qua< T, Q > const & y,
T const & a 
)
+
+ +

Quaternion interpolation using the rotation short path.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ squad()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::squad (qua< T, Q > const & q1,
qua< T, Q > const & q2,
qua< T, Q > const & s1,
qua< T, Q > const & s2,
T const & h 
)
+
+ +

Compute a point on a path according squad equation.

+

q1 and q2 are control points; s1 and s2 are intermediate control points.

+
See also
GLM_GTX_quaternion
+ +
+
+ +

◆ toMat3()

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER mat<3, 3, T, Q> glm::toMat3 (qua< T, Q > const & x)
+
+ +

Converts a quaternion to a 3 * 3 matrix.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 111 of file gtx/quaternion.hpp.

+ +

References glm::mat3_cast().

+ +
+
+ +

◆ toMat4()

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER mat<4, 4, T, Q> glm::toMat4 (qua< T, Q > const & x)
+
+ +

Converts a quaternion to a 4 * 4 matrix.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 118 of file gtx/quaternion.hpp.

+ +

References glm::mat4_cast().

+ +
+
+ +

◆ toQuat() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER qua<T, Q> glm::toQuat (mat< 3, 3, T, Q > const & x)
+
+ +

Converts a 3 * 3 matrix to a quaternion.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 125 of file gtx/quaternion.hpp.

+ +

References glm::quat_cast().

+ +
+
+ +

◆ toQuat() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_QUALIFIER qua<T, Q> glm::toQuat (mat< 4, 4, T, Q > const & x)
+
+ +

Converts a 4 * 4 matrix to a quaternion.

+
See also
GLM_GTX_quaternion
+ +

Definition at line 132 of file gtx/quaternion.hpp.

+ +

References glm::quat_cast().

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00973.html b/include/glm/doc/api/a00973.html new file mode 100644 index 0000000..5249291 --- /dev/null +++ b/include/glm/doc/api/a00973.html @@ -0,0 +1,80 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_range + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
+
+
+

Detailed Description

+

Include <glm/gtx/range.hpp> to use the features of this extension.

+

Defines begin and end for vectors and matrices. Useful for range-based for loop. The range is defined over the elements, not over columns or rows (e.g. mat4 has 16 elements).

+
+ + + + diff --git a/include/glm/doc/api/a00974.html b/include/glm/doc/api/a00974.html new file mode 100644 index 0000000..e69b3cc --- /dev/null +++ b/include/glm/doc/api/a00974.html @@ -0,0 +1,175 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_raw_data + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_raw_data
+
+
+ + + + + + + + + + + + + + +

+Typedefs

typedef detail::uint8 byte
 Type for byte numbers. More...
 
typedef detail::uint32 dword
 Type for dword numbers. More...
 
typedef detail::uint64 qword
 Type for qword numbers. More...
 
typedef detail::uint16 word
 Type for word numbers. More...
 
+

Detailed Description

+

Include <glm/gtx/raw_data.hpp> to use the features of this extension.

+

Projection of a vector to other one

+

Typedef Documentation

+ +

◆ byte

+ +
+
+ + + + +
typedef detail::uint8 byte
+
+ +

Type for byte numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 32 of file raw_data.hpp.

+ +
+
+ +

◆ dword

+ +
+
+ + + + +
typedef detail::uint32 dword
+
+ +

Type for dword numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 40 of file raw_data.hpp.

+ +
+
+ +

◆ qword

+ +
+
+ + + + +
typedef detail::uint64 qword
+
+ +

Type for qword numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 44 of file raw_data.hpp.

+ +
+
+ +

◆ word

+ +
+
+ + + + +
typedef detail::uint16 word
+
+ +

Type for word numbers.

+

From GLM_GTX_raw_data extension.

+ +

Definition at line 36 of file raw_data.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00975.html b/include/glm/doc/api/a00975.html new file mode 100644 index 0000000..4c0e092 --- /dev/null +++ b/include/glm/doc/api/a00975.html @@ -0,0 +1,197 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_rotate_normalized_axis + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_rotate_normalized_axis
+
+
+ + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotateNormalizedAxis (mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from a normalized axis and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotateNormalizedAxis (qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)
 Rotates a quaternion from a vector of 3 components normalized axis and an angle. More...
 
+

Detailed Description

+

Include <glm/gtx/rotate_normalized_axis.hpp> to use the features of this extension.

+

Quaternions and matrices rotations around normalized axis.

+

Function Documentation

+ +

◆ rotateNormalizedAxis() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotateNormalizedAxis (mat< 4, 4, T, Q > const & m,
T const & angle,
vec< 3, T, Q > const & axis 
)
+
+ +

Builds a rotation 4 * 4 matrix created from a normalized axis and an angle.

+
Parameters
+ + + + +
mInput matrix multiplied by this rotation matrix.
angleRotation angle expressed in radians.
axisRotation axis, must be normalized.
+
+
+
Template Parameters
+ + +
TValue type used to build the matrix. Currently supported: half (not recommended), float or double.
+
+
+
See also
GLM_GTX_rotate_normalized_axis
+
+- rotate(T angle, T x, T y, T z)
+
+- rotate(mat<4, 4, T, Q> const& m, T angle, T x, T y, T z)
+
+- rotate(T angle, vec<3, T, Q> const& v)
+ +
+
+ +

◆ rotateNormalizedAxis() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL qua<T, Q> glm::rotateNormalizedAxis (qua< T, Q > const & q,
T const & angle,
vec< 3, T, Q > const & axis 
)
+
+ +

Rotates a quaternion from a vector of 3 components normalized axis and an angle.

+
Parameters
+ + + + +
qSource orientation
angleAngle expressed in radians.
axisNormalized axis of the rotation, must be normalized.
+
+
+
See also
GLM_GTX_rotate_normalized_axis
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00976.html b/include/glm/doc/api/a00976.html new file mode 100644 index 0000000..e1ab85a --- /dev/null +++ b/include/glm/doc/api/a00976.html @@ -0,0 +1,498 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_rotate_vector + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_rotate_vector
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > orientation (vec< 3, T, Q > const &Normal, vec< 3, T, Q > const &Up)
 Build a rotation matrix from a normal and a up vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 2, T, Q > rotate (vec< 2, T, Q > const &v, T const &angle)
 Rotate a two dimensional vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
 Rotate a three dimensional vector around an axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)
 Rotate a four dimensional vector around an axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateX (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the X axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateX (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the X axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateY (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateY (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotateZ (vec< 3, T, Q > const &v, T const &angle)
 Rotate a three dimensional vector around the Z axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotateZ (vec< 4, T, Q > const &v, T const &angle)
 Rotate a four dimensional vector around the Z axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > slerp (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)
 Returns Spherical interpolation between two vectors. More...
 
+

Detailed Description

+

Include <glm/gtx/rotate_vector.hpp> to use the features of this extension.

+

Function to directly rotate a vector

+

Function Documentation

+ +

◆ orientation()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::orientation (vec< 3, T, Q > const & Normal,
vec< 3, T, Q > const & Up 
)
+
+ +

Build a rotation matrix from a normal and a up vector.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotate() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<2, T, Q> glm::rotate (vec< 2, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a two dimensional vector.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotate() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rotate (vec< 3, T, Q > const & v,
T const & angle,
vec< 3, T, Q > const & normal 
)
+
+ +

Rotate a three dimensional vector around an axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotate() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::rotate (vec< 4, T, Q > const & v,
T const & angle,
vec< 3, T, Q > const & normal 
)
+
+ +

Rotate a four dimensional vector around an axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateX() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rotateX (vec< 3, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateX() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::rotateX (vec< 4, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a four dimensional vector around the X axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateY() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rotateY (vec< 3, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the Y axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateY() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::rotateY (vec< 4, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a four dimensional vector around the Y axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateZ() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::rotateZ (vec< 3, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a three dimensional vector around the Z axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ rotateZ() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<4, T, Q> glm::rotateZ (vec< 4, T, Q > const & v,
T const & angle 
)
+
+ +

Rotate a four dimensional vector around the Z axis.

+

From GLM_GTX_rotate_vector extension.

+ +
+
+ +

◆ slerp()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<3, T, Q> glm::slerp (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
T const & a 
)
+
+ +

Returns Spherical interpolation between two vectors.

+
Parameters
+ + + + +
xA first vector
yA second vector
aInterpolation factor. The interpolation is defined beyond the range [0, 1].
+
+
+
See also
GLM_GTX_rotate_vector
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00977.html b/include/glm/doc/api/a00977.html new file mode 100644 index 0000000..ad8f5d9 --- /dev/null +++ b/include/glm/doc/api/a00977.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_scalar_multiplication + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_scalar_multiplication
+
+
+

Detailed Description

+

Include <glm/gtx/scalar_multiplication.hpp> to use the features of this extension.

+

Enables scalar multiplication for all types

+

Since GLSL is very strict about types, the following (often used) combinations do not work: double * vec4 int * vec4 vec4 / int So we'll fix that! Of course "float * vec4" should remain the same (hence the enable_if magic)

+
+ + + + diff --git a/include/glm/doc/api/a00978.html b/include/glm/doc/api/a00978.html new file mode 100644 index 0000000..695c1e0 --- /dev/null +++ b/include/glm/doc/api/a00978.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_scalar_relational + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_scalar_relational
+
+
+

Include <glm/gtx/scalar_relational.hpp> to use the features of this extension.

+

Extend a position from a source to a position at a defined length.

+
+ + + + diff --git a/include/glm/doc/api/a00979.html b/include/glm/doc/api/a00979.html new file mode 100644 index 0000000..cec2c50 --- /dev/null +++ b/include/glm/doc/api/a00979.html @@ -0,0 +1,246 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_spline + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL genType catmullRom (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 Return a point from a catmull rom curve. More...
 
template<typename genType >
GLM_FUNC_DECL genType cubic (genType const &v1, genType const &v2, genType const &v3, genType const &v4, typename genType::value_type const &s)
 Return a point from a cubic curve. More...
 
template<typename genType >
GLM_FUNC_DECL genType hermite (genType const &v1, genType const &t1, genType const &v2, genType const &t2, typename genType::value_type const &s)
 Return a point from a hermite curve. More...
 
+

Detailed Description

+

Include <glm/gtx/spline.hpp> to use the features of this extension.

+

Spline functions

+

Function Documentation

+ +

◆ catmullRom()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::catmullRom (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
+
+ +

Return a point from a catmull rom curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+ +

◆ cubic()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::cubic (genType const & v1,
genType const & v2,
genType const & v3,
genType const & v4,
typename genType::value_type const & s 
)
+
+ +

Return a point from a cubic curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+ +

◆ hermite()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL genType glm::hermite (genType const & v1,
genType const & t1,
genType const & v2,
genType const & t2,
typename genType::value_type const & s 
)
+
+ +

Return a point from a hermite curve.

+
See also
GLM_GTX_spline extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00980.html b/include/glm/doc/api/a00980.html new file mode 100644 index 0000000..a7918af --- /dev/null +++ b/include/glm/doc/api/a00980.html @@ -0,0 +1,263 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_std_based_type + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_std_based_type
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef vec< 1, std::size_t, defaultp > size1
 Vector type based of one std::size_t component. More...
 
typedef vec< 1, std::size_t, defaultp > size1_t
 Vector type based of one std::size_t component. More...
 
typedef vec< 2, std::size_t, defaultp > size2
 Vector type based of two std::size_t components. More...
 
typedef vec< 2, std::size_t, defaultp > size2_t
 Vector type based of two std::size_t components. More...
 
typedef vec< 3, std::size_t, defaultp > size3
 Vector type based of three std::size_t components. More...
 
typedef vec< 3, std::size_t, defaultp > size3_t
 Vector type based of three std::size_t components. More...
 
typedef vec< 4, std::size_t, defaultp > size4
 Vector type based of four std::size_t components. More...
 
typedef vec< 4, std::size_t, defaultp > size4_t
 Vector type based of four std::size_t components. More...
 
+

Detailed Description

+

Include <glm/gtx/std_based_type.hpp> to use the features of this extension.

+

Adds vector types based on STL value types.

+

Typedef Documentation

+ +

◆ size1

+ +
+
+ + + + +
typedef vec<1, std::size_t, defaultp> size1
+
+ +

Vector type based of one std::size_t component.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 33 of file std_based_type.hpp.

+ +
+
+ +

◆ size1_t

+ +
+
+ + + + +
typedef vec<1, std::size_t, defaultp> size1_t
+
+ +

Vector type based of one std::size_t component.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 49 of file std_based_type.hpp.

+ +
+
+ +

◆ size2

+ +
+
+ + + + +
typedef vec<2, std::size_t, defaultp> size2
+
+ +

Vector type based of two std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 37 of file std_based_type.hpp.

+ +
+
+ +

◆ size2_t

+ +
+
+ + + + +
typedef vec<2, std::size_t, defaultp> size2_t
+
+ +

Vector type based of two std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 53 of file std_based_type.hpp.

+ +
+
+ +

◆ size3

+ +
+
+ + + + +
typedef vec<3, std::size_t, defaultp> size3
+
+ +

Vector type based of three std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 41 of file std_based_type.hpp.

+ +
+
+ +

◆ size3_t

+ +
+
+ + + + +
typedef vec<3, std::size_t, defaultp> size3_t
+
+ +

Vector type based of three std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 57 of file std_based_type.hpp.

+ +
+
+ +

◆ size4

+ +
+
+ + + + +
typedef vec<4, std::size_t, defaultp> size4
+
+ +

Vector type based of four std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 45 of file std_based_type.hpp.

+ +
+
+ +

◆ size4_t

+ +
+
+ + + + +
typedef vec<4, std::size_t, defaultp> size4_t
+
+ +

Vector type based of four std::size_t components.

+
See also
GLM_GTX_std_based_type
+ +

Definition at line 61 of file std_based_type.hpp.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00981.html b/include/glm/doc/api/a00981.html new file mode 100644 index 0000000..c044079 --- /dev/null +++ b/include/glm/doc/api/a00981.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_string_cast + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_string_cast
+
+
+ + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL std::string to_string (genType const &x)
 Create a string from a GLM vector or matrix typed variable. More...
 
+

Detailed Description

+

Include <glm/gtx/string_cast.hpp> to use the features of this extension.

+

Setup strings for GLM type values

+

Function Documentation

+ +

◆ to_string()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL std::string glm::to_string (genType const & x)
+
+ +

Create a string from a GLM vector or matrix typed variable.

+
See also
GLM_GTX_string_cast extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00982.html b/include/glm/doc/api/a00982.html new file mode 100644 index 0000000..a3f2df2 --- /dev/null +++ b/include/glm/doc/api/a00982.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_structured_bindings + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_structured_bindings
+
+
+

Detailed Description

+

Include <glm/gtx/structured_bindings.hpp> to use the features of this extension.

+
+ + + + diff --git a/include/glm/doc/api/a00983.html b/include/glm/doc/api/a00983.html new file mode 100644 index 0000000..242915b --- /dev/null +++ b/include/glm/doc/api/a00983.html @@ -0,0 +1,125 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_texture + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+
+
+ + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
levels (vec< L, T, Q > const &Extent)
 Compute the number of mipmaps levels necessary to create a mipmap complete texture. More...
 
+

Detailed Description

+

Include <glm/gtx/texture.hpp> to use the features of this extension.

+

Wrapping mode of texture coordinates.

+

Function Documentation

+ +

◆ levels()

+ +
+
+ + + + + + + + +
T glm::levels (vec< L, T, Q > const & Extent)
+
+ +

Compute the number of mipmaps levels necessary to create a mipmap complete texture.

+
Parameters
+ + +
ExtentExtent of the texture base level mipmap
+
+
+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point or signed integer scalar types
QValue from qualifier enum
+
+
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00984.html b/include/glm/doc/api/a00984.html new file mode 100644 index 0000000..4c20173 --- /dev/null +++ b/include/glm/doc/api/a00984.html @@ -0,0 +1,178 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_transform + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_transform
+
+
+ + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (T angle, vec< 3, T, Q > const &v)
 Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (vec< 3, T, Q > const &v)
 Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > translate (vec< 3, T, Q > const &v)
 Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars. More...
 
+

Detailed Description

+

Include <glm/gtx/transform.hpp> to use the features of this extension.

+

Add transformation matrices

+

Function Documentation

+ +

◆ rotate()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::rotate (angle,
vec< 3, T, Q > const & v 
)
+
+ +

Builds a rotation 4 * 4 matrix created from an axis of 3 scalars and an angle expressed in radians.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+ +

◆ scale()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scale (vec< 3, T, Q > const & v)
+
+ +

Transforms a matrix with a scale 4 * 4 matrix created from a vector of 3 components.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+ +

◆ translate()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::translate (vec< 3, T, Q > const & v)
+
+ +

Transforms a matrix with a translation 4 * 4 matrix created from 3 scalars.

+
See also
GLM_GTC_matrix_transform
+
+GLM_GTX_transform
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00985.html b/include/glm/doc/api/a00985.html new file mode 100644 index 0000000..8f56729 --- /dev/null +++ b/include/glm/doc/api/a00985.html @@ -0,0 +1,390 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_transform2 + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_transform2
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > proj2D (mat< 3, 3, T, Q > const &m, vec< 3, T, Q > const &normal)
 Build planar projection matrix along normal axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > proj3D (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &normal)
 Build planar projection matrix along normal axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias (mat< 4, 4, T, Q > const &m, T scale, T bias)
 Build a scale bias matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scaleBias (T scale, T bias)
 Build a scale bias matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > shearX2D (mat< 3, 3, T, Q > const &m, T y)
 Transforms a matrix with a shearing on X axis. More...
 
+template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearX3D (mat< 4, 4, T, Q > const &m, T y, T z)
 Transforms a matrix with a shearing on X axis From GLM_GTX_transform2 extension.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > shearY2D (mat< 3, 3, T, Q > const &m, T x)
 Transforms a matrix with a shearing on Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearY3D (mat< 4, 4, T, Q > const &m, T x, T z)
 Transforms a matrix with a shearing on Y axis. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > shearZ3D (mat< 4, 4, T, Q > const &m, T x, T y)
 Transforms a matrix with a shearing on Z axis. More...
 
+

Detailed Description

+

Include <glm/gtx/transform2.hpp> to use the features of this extension.

+

Add extra transformation matrices

+

Function Documentation

+ +

◆ proj2D()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::proj2D (mat< 3, 3, T, Q > const & m,
vec< 3, T, Q > const & normal 
)
+
+ +

Build planar projection matrix along normal axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ proj3D()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::proj3D (mat< 4, 4, T, Q > const & m,
vec< 3, T, Q > const & normal 
)
+
+ +

Build planar projection matrix along normal axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ scaleBias() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scaleBias (mat< 4, 4, T, Q > const & m,
scale,
bias 
)
+
+ +

Build a scale bias matrix.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ scaleBias() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::scaleBias (scale,
bias 
)
+
+ +

Build a scale bias matrix.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ shearX2D()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::shearX2D (mat< 3, 3, T, Q > const & m,
y 
)
+
+ +

Transforms a matrix with a shearing on X axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ shearY2D()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<3, 3, T, Q> glm::shearY2D (mat< 3, 3, T, Q > const & m,
x 
)
+
+ +

Transforms a matrix with a shearing on Y axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ shearY3D()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::shearY3D (mat< 4, 4, T, Q > const & m,
x,
z 
)
+
+ +

Transforms a matrix with a shearing on Y axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+ +

◆ shearZ3D()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL mat<4, 4, T, Q> glm::shearZ3D (mat< 4, 4, T, Q > const & m,
x,
y 
)
+
+ +

Transforms a matrix with a shearing on Z axis.

+

From GLM_GTX_transform2 extension.

+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00986.html b/include/glm/doc/api/a00986.html new file mode 100644 index 0000000..2134c2c --- /dev/null +++ b/include/glm/doc/api/a00986.html @@ -0,0 +1,8341 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_type_aligned + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_type_aligned
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 Double-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 Double-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 Double-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 Double-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 Double-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 Double-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 Default qualifier 16 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 Default qualifier 16 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 Default qualifier 16 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 Default qualifier 64 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 Default qualifier 64 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 Default qualifier 64 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 Default qualifier 8 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 Default qualifier 8 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 Default qualifier 8 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_fquat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 Default qualifier 16 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 Default qualifier 64 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 Default qualifier 8 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
+

Detailed Description

+

Include <glm/gtx/type_aligned.hpp> to use the features of this extension.

+

Defines aligned types.

+

Function Documentation

+ +

◆ GLM_ALIGNED_TYPEDEF() [1/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dquat ,
aligned_dquat ,
32  
)
+
+ +

Double-qualifier floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [2/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec1 ,
aligned_dvec1 ,
 
)
+
+ +

Double-qualifier floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [3/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec2 ,
aligned_dvec2 ,
16  
)
+
+ +

Double-qualifier floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [4/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec3 ,
aligned_dvec3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [5/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (dvec4 ,
aligned_dvec4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [6/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [7/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x2 ,
aligned_f32mat2x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [8/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x3 ,
aligned_f32mat2x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [9/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat2x4 ,
aligned_f32mat2x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [10/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x2 ,
aligned_f32mat3x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [11/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [12/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x3 ,
aligned_f32mat3x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [13/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat3x4 ,
aligned_f32mat3x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [14/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x2 ,
aligned_f32mat4x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [15/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x3 ,
aligned_f32mat4x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [16/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [17/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32mat4x4 ,
aligned_f32mat4x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [18/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32quat ,
aligned_f32quat ,
16  
)
+
+ +

Single-qualifier floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [19/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec1 ,
aligned_f32vec1 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [20/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec2 ,
aligned_f32vec2 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [21/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec3 ,
aligned_f32vec3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [22/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f32vec4 ,
aligned_f32vec4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [23/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Double-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [24/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x2 ,
aligned_f64mat2x2 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Double-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [25/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x3 ,
aligned_f64mat2x3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [26/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat2x4 ,
aligned_f64mat2x4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [27/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x2 ,
aligned_f64mat3x2 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [28/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [29/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x3 ,
aligned_f64mat3x3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [30/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat3x4 ,
aligned_f64mat3x4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [31/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x2 ,
aligned_f64mat4x2 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [32/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x3 ,
aligned_f64mat4x3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [33/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [34/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64mat4x4 ,
aligned_f64mat4x4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [35/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64quat ,
aligned_f64quat ,
32  
)
+
+ +

Double-qualifier floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [36/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec1 ,
aligned_f64vec1 ,
 
)
+
+ +

Double-qualifier floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [37/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec2 ,
aligned_f64vec2 ,
16  
)
+
+ +

Double-qualifier floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [38/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec3 ,
aligned_f64vec3 ,
32  
)
+
+ +

Double-qualifier floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [39/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (f64vec4 ,
aligned_f64vec4 ,
32  
)
+
+ +

Double-qualifier floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [40/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_f32 ,
 
)
+
+ +

32 bit single-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [41/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32 ,
aligned_float32 ,
 
)
+
+ +

32 bit single-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [42/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float32_t ,
aligned_float32_t ,
 
)
+
+ +

32 bit single-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [43/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_f64 ,
 
)
+
+ +

64 bit double-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [44/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64 ,
aligned_float64 ,
 
)
+
+ +

64 bit double-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [45/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (float64_t ,
aligned_float64_t ,
 
)
+
+ +

64 bit double-qualifier floating-point aligned scalar.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [46/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [47/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x2 ,
aligned_fmat2x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [48/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x3 ,
aligned_fmat2x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 2x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [49/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat2x4 ,
aligned_fmat2x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 2x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [50/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x2 ,
aligned_fmat3x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [51/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [52/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x3 ,
aligned_fmat3x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [53/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat3x4 ,
aligned_fmat3x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [54/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x2 ,
aligned_fmat4x2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x2 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [55/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x3 ,
aligned_fmat4x3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [56/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [57/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fmat4x4 ,
aligned_fmat4x4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [58/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec1 ,
aligned_fvec1 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [59/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec2 ,
aligned_fvec2 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [60/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec3 ,
aligned_fvec3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [61/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (fvec4 ,
aligned_fvec4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [62/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i16 ,
aligned_highp_i16 ,
 
)
+
+ +

High qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [63/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i32 ,
aligned_highp_i32 ,
 
)
+
+ +

High qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [64/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i64 ,
aligned_highp_i64 ,
 
)
+
+ +

High qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [65/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_i8 ,
aligned_highp_i8 ,
 
)
+
+ +

High qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [66/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int16 ,
aligned_highp_int16 ,
 
)
+
+ +

High qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [67/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int16_t ,
aligned_highp_int16_t ,
 
)
+
+ +

High qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [68/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int32 ,
aligned_highp_int32 ,
 
)
+
+ +

High qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [69/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int32_t ,
aligned_highp_int32_t ,
 
)
+
+ +

High qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [70/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int64 ,
aligned_highp_int64 ,
 
)
+
+ +

High qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [71/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int64_t ,
aligned_highp_int64_t ,
 
)
+
+ +

High qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [72/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int8 ,
aligned_highp_int8 ,
 
)
+
+ +

High qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [73/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_int8_t ,
aligned_highp_int8_t ,
 
)
+
+ +

High qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [74/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u16 ,
aligned_highp_u16 ,
 
)
+
+ +

High qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [75/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u32 ,
aligned_highp_u32 ,
 
)
+
+ +

High qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [76/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u64 ,
aligned_highp_u64 ,
 
)
+
+ +

High qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [77/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_u8 ,
aligned_highp_u8 ,
 
)
+
+ +

High qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [78/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint16 ,
aligned_highp_uint16 ,
 
)
+
+ +

High qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [79/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint16_t ,
aligned_highp_uint16_t ,
 
)
+
+ +

High qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [80/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint32 ,
aligned_highp_uint32 ,
 
)
+
+ +

High qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [81/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint32_t ,
aligned_highp_uint32_t ,
 
)
+
+ +

High qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [82/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint64 ,
aligned_highp_uint64 ,
 
)
+
+ +

High qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [83/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint64_t ,
aligned_highp_uint64_t ,
 
)
+
+ +

High qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [84/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint8 ,
aligned_highp_uint8 ,
 
)
+
+ +

High qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [85/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (highp_uint8_t ,
aligned_highp_uint8_t ,
 
)
+
+ +

High qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [86/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16 ,
aligned_i16 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [87/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec1 ,
aligned_i16vec1 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [88/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec2 ,
aligned_i16vec2 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [89/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec3 ,
aligned_i16vec3 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [90/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i16vec4 ,
aligned_i16vec4 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [91/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32 ,
aligned_i32 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [92/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec1 ,
aligned_i32vec1 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [93/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec2 ,
aligned_i32vec2 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [94/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec3 ,
aligned_i32vec3 ,
16  
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [95/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i32vec4 ,
aligned_i32vec4 ,
16  
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [96/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64 ,
aligned_i64 ,
 
)
+
+ +

Default qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [97/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec1 ,
aligned_i64vec1 ,
 
)
+
+ +

Default qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [98/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec2 ,
aligned_i64vec2 ,
16  
)
+
+ +

Default qualifier 64 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [99/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec3 ,
aligned_i64vec3 ,
32  
)
+
+ +

Default qualifier 64 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [100/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i64vec4 ,
aligned_i64vec4 ,
32  
)
+
+ +

Default qualifier 64 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [101/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8 ,
aligned_i8 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [102/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec1 ,
aligned_i8vec1 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [103/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec2 ,
aligned_i8vec2 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [104/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec3 ,
aligned_i8vec3 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [105/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (i8vec4 ,
aligned_i8vec4 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [106/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int16 ,
aligned_int16 ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [107/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int16_t ,
aligned_int16_t ,
 
)
+
+ +

Default qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [108/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int32 ,
aligned_int32 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [109/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int32_t ,
aligned_int32_t ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [110/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int64 ,
aligned_int64 ,
 
)
+
+ +

Default qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [111/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int64_t ,
aligned_int64_t ,
 
)
+
+ +

Default qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [112/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int8 ,
aligned_int8 ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [113/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (int8_t ,
aligned_int8_t ,
 
)
+
+ +

Default qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [114/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec1 ,
aligned_ivec1 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [115/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec2 ,
aligned_ivec2 ,
 
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [116/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec3 ,
aligned_ivec3 ,
16  
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [117/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (ivec4 ,
aligned_ivec4 ,
16  
)
+
+ +

Default qualifier 32 bit signed integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [118/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i16 ,
aligned_lowp_i16 ,
 
)
+
+ +

Low qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [119/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i32 ,
aligned_lowp_i32 ,
 
)
+
+ +

Low qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [120/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i64 ,
aligned_lowp_i64 ,
 
)
+
+ +

Low qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [121/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_i8 ,
aligned_lowp_i8 ,
 
)
+
+ +

Low qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [122/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int16 ,
aligned_lowp_int16 ,
 
)
+
+ +

Low qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [123/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int16_t ,
aligned_lowp_int16_t ,
 
)
+
+ +

Low qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [124/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int32 ,
aligned_lowp_int32 ,
 
)
+
+ +

Low qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [125/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int32_t ,
aligned_lowp_int32_t ,
 
)
+
+ +

Low qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [126/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int64 ,
aligned_lowp_int64 ,
 
)
+
+ +

Low qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [127/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int64_t ,
aligned_lowp_int64_t ,
 
)
+
+ +

Low qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [128/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int8 ,
aligned_lowp_int8 ,
 
)
+
+ +

Low qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [129/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_int8_t ,
aligned_lowp_int8_t ,
 
)
+
+ +

Low qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [130/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u16 ,
aligned_lowp_u16 ,
 
)
+
+ +

Low qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [131/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u32 ,
aligned_lowp_u32 ,
 
)
+
+ +

Low qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [132/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u64 ,
aligned_lowp_u64 ,
 
)
+
+ +

Low qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [133/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_u8 ,
aligned_lowp_u8 ,
 
)
+
+ +

Low qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [134/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16 ,
aligned_lowp_uint16 ,
 
)
+
+ +

Low qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [135/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint16_t ,
aligned_lowp_uint16_t ,
 
)
+
+ +

Low qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [136/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32 ,
aligned_lowp_uint32 ,
 
)
+
+ +

Low qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [137/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint32_t ,
aligned_lowp_uint32_t ,
 
)
+
+ +

Low qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [138/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64 ,
aligned_lowp_uint64 ,
 
)
+
+ +

Low qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [139/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint64_t ,
aligned_lowp_uint64_t ,
 
)
+
+ +

Low qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [140/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8 ,
aligned_lowp_uint8 ,
 
)
+
+ +

Low qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [141/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (lowp_uint8_t ,
aligned_lowp_uint8_t ,
 
)
+
+ +

Low qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [142/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_ALIGNED_TYPEDEF (mat2 ,
aligned_mat2 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 1x1 matrix.

+
See also
GLM_GTX_type_aligned Single-qualifier floating-point aligned 2x2 matrix.
+
+GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [143/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_ALIGNED_TYPEDEF (mat3 ,
aligned_mat3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 3x3 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [144/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_ALIGNED_TYPEDEF (mat4 ,
aligned_mat4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned 4x4 matrix.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [145/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i16 ,
aligned_mediump_i16 ,
 
)
+
+ +

Medium qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [146/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i32 ,
aligned_mediump_i32 ,
 
)
+
+ +

Medium qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [147/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i64 ,
aligned_mediump_i64 ,
 
)
+
+ +

Medium qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [148/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_i8 ,
aligned_mediump_i8 ,
 
)
+
+ +

Medium qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [149/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int16 ,
aligned_mediump_int16 ,
 
)
+
+ +

Medium qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [150/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int16_t ,
aligned_mediump_int16_t ,
 
)
+
+ +

Medium qualifier 16 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [151/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int32 ,
aligned_mediump_int32 ,
 
)
+
+ +

Medium qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [152/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int32_t ,
aligned_mediump_int32_t ,
 
)
+
+ +

Medium qualifier 32 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [153/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int64 ,
aligned_mediump_int64 ,
 
)
+
+ +

Medium qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [154/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int64_t ,
aligned_mediump_int64_t ,
 
)
+
+ +

Medium qualifier 64 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [155/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int8 ,
aligned_mediump_int8 ,
 
)
+
+ +

Medium qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [156/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_int8_t ,
aligned_mediump_int8_t ,
 
)
+
+ +

Medium qualifier 8 bit signed integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [157/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u16 ,
aligned_mediump_u16 ,
 
)
+
+ +

Medium qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [158/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u32 ,
aligned_mediump_u32 ,
 
)
+
+ +

Medium qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [159/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u64 ,
aligned_mediump_u64 ,
 
)
+
+ +

Medium qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [160/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_u8 ,
aligned_mediump_u8 ,
 
)
+
+ +

Medium qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [161/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16 ,
aligned_mediump_uint16 ,
 
)
+
+ +

Medium qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [162/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint16_t ,
aligned_mediump_uint16_t ,
 
)
+
+ +

Medium qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [163/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32 ,
aligned_mediump_uint32 ,
 
)
+
+ +

Medium qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [164/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint32_t ,
aligned_mediump_uint32_t ,
 
)
+
+ +

Medium qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [165/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64 ,
aligned_mediump_uint64 ,
 
)
+
+ +

Medium qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [166/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint64_t ,
aligned_mediump_uint64_t ,
 
)
+
+ +

Medium qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [167/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8 ,
aligned_mediump_uint8 ,
 
)
+
+ +

Medium qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [168/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (mediump_uint8_t ,
aligned_mediump_uint8_t ,
 
)
+
+ +

Medium qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [169/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (quat ,
aligned_fquat ,
16  
)
+
+ +

Single-qualifier floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [170/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (quat ,
aligned_quat ,
16  
)
+
+ +

Single-qualifier floating-point aligned quaternion.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [171/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16 ,
aligned_u16 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [172/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec1 ,
aligned_u16vec1 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [173/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec2 ,
aligned_u16vec2 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [174/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec3 ,
aligned_u16vec3 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [175/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u16vec4 ,
aligned_u16vec4 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [176/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32 ,
aligned_u32 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [177/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec1 ,
aligned_u32vec1 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [178/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec2 ,
aligned_u32vec2 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [179/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec3 ,
aligned_u32vec3 ,
16  
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [180/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u32vec4 ,
aligned_u32vec4 ,
16  
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [181/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64 ,
aligned_u64 ,
 
)
+
+ +

Default qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [182/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec1 ,
aligned_u64vec1 ,
 
)
+
+ +

Default qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [183/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec2 ,
aligned_u64vec2 ,
16  
)
+
+ +

Default qualifier 64 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [184/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec3 ,
aligned_u64vec3 ,
32  
)
+
+ +

Default qualifier 64 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [185/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u64vec4 ,
aligned_u64vec4 ,
32  
)
+
+ +

Default qualifier 64 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [186/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8 ,
aligned_u8 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [187/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec1 ,
aligned_u8vec1 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [188/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec2 ,
aligned_u8vec2 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [189/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec3 ,
aligned_u8vec3 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [190/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (u8vec4 ,
aligned_u8vec4 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [191/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint16 ,
aligned_uint16 ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [192/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint16_t ,
aligned_uint16_t ,
 
)
+
+ +

Default qualifier 16 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [193/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint32 ,
aligned_uint32 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [194/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint32_t ,
aligned_uint32_t ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [195/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint64 ,
aligned_uint64 ,
 
)
+
+ +

Default qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [196/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint64_t ,
aligned_uint64_t ,
 
)
+
+ +

Default qualifier 64 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [197/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint8 ,
aligned_uint8 ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [198/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uint8_t ,
aligned_uint8_t ,
 
)
+
+ +

Default qualifier 8 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [199/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec1 ,
aligned_uvec1 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned scalar type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [200/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec2 ,
aligned_uvec2 ,
 
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 2 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [201/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec3 ,
aligned_uvec3 ,
16  
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 3 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [202/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (uvec4 ,
aligned_uvec4 ,
16  
)
+
+ +

Default qualifier 32 bit unsigned integer aligned vector of 4 components type.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [203/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec1 ,
aligned_vec1 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 1 component.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [204/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec2 ,
aligned_vec2 ,
 
)
+
+ +

Single-qualifier floating-point aligned vector of 2 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [205/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec3 ,
aligned_vec3 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 3 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+ +

◆ GLM_ALIGNED_TYPEDEF() [206/206]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
glm::GLM_ALIGNED_TYPEDEF (vec4 ,
aligned_vec4 ,
16  
)
+
+ +

Single-qualifier floating-point aligned vector of 4 components.

+
See also
GLM_GTX_type_aligned
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00987.html b/include/glm/doc/api/a00987.html new file mode 100644 index 0000000..a061094 --- /dev/null +++ b/include/glm/doc/api/a00987.html @@ -0,0 +1,80 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_type_trait + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_type_trait
+
+
+

Detailed Description

+

Include <glm/gtx/type_trait.hpp> to use the features of this extension.

+

Defines traits for each type.

+
+ + + + diff --git a/include/glm/doc/api/a00988.html b/include/glm/doc/api/a00988.html new file mode 100644 index 0000000..aa5adb7 --- /dev/null +++ b/include/glm/doc/api/a00988.html @@ -0,0 +1,80 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_vec_swizzle + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
GLM_GTX_vec_swizzle
+
+
+

Detailed Description

+

Include <glm/gtx/vec_swizzle.hpp> to use the features of this extension.

+

Functions to perform swizzle operation.

+
+ + + + diff --git a/include/glm/doc/api/a00989.html b/include/glm/doc/api/a00989.html new file mode 100644 index 0000000..a2336ed --- /dev/null +++ b/include/glm/doc/api/a00989.html @@ -0,0 +1,198 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_vector_angle + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_vector_angle
+
+
+ + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL T angle (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the absolute angle between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T orientedAngle (vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)
 Returns the oriented angle between two 2d vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T orientedAngle (vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)
 Returns the oriented angle between two 3d vectors based from a reference axis. More...
 
+

Detailed Description

+

Include <glm/gtx/vector_angle.hpp> to use the features of this extension.

+

Compute angle between vectors

+

Function Documentation

+ +

◆ angle()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::angle (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the absolute angle between two vectors.

+

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
+ +
+
+ +

◆ orientedAngle() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::orientedAngle (vec< 2, T, Q > const & x,
vec< 2, T, Q > const & y 
)
+
+ +

Returns the oriented angle between two 2d vectors.

+

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
+ +
+
+ +

◆ orientedAngle() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL T glm::orientedAngle (vec< 3, T, Q > const & x,
vec< 3, T, Q > const & y,
vec< 3, T, Q > const & ref 
)
+
+ +

Returns the oriented angle between two 3d vectors based from a reference axis.

+

Parameters need to be normalized.

See also
GLM_GTX_vector_angle extension.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00990.html b/include/glm/doc/api/a00990.html new file mode 100644 index 0000000..ca14cb4 --- /dev/null +++ b/include/glm/doc/api/a00990.html @@ -0,0 +1,315 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_vector_query + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
GLM_GTX_vector_query
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areCollinear (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are collinears. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areOrthogonal (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are orthogonals. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool areOrthonormal (vec< L, T, Q > const &v0, vec< L, T, Q > const &v1, T const &epsilon)
 Check whether two vectors are orthonormal. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > isCompNull (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a each component of a vector is null. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool isNormalized (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a vector is normalized. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL bool isNull (vec< L, T, Q > const &v, T const &epsilon)
 Check whether a vector is null. More...
 
+

Detailed Description

+

Include <glm/gtx/vector_query.hpp> to use the features of this extension.

+

Query information of vector types

+

Function Documentation

+ +

◆ areCollinear()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areCollinear (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are collinears.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +

◆ areOrthogonal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areOrthogonal (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are orthogonals.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +

◆ areOrthonormal()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::areOrthonormal (vec< L, T, Q > const & v0,
vec< L, T, Q > const & v1,
T const & epsilon 
)
+
+ +

Check whether two vectors are orthonormal.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +

◆ isCompNull()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, bool, Q> glm::isCompNull (vec< L, T, Q > const & v,
T const & epsilon 
)
+
+ +

Check whether a each component of a vector is null.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +

◆ isNormalized()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNormalized (vec< L, T, Q > const & v,
T const & epsilon 
)
+
+ +

Check whether a vector is normalized.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+ +

◆ isNull()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL bool glm::isNull (vec< L, T, Q > const & v,
T const & epsilon 
)
+
+ +

Check whether a vector is null.

+
See also
GLM_GTX_vector_query extensions.
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00991.html b/include/glm/doc/api/a00991.html new file mode 100644 index 0000000..bc0eda2 --- /dev/null +++ b/include/glm/doc/api/a00991.html @@ -0,0 +1,79 @@ + + + + + + + +1.0.2 API documentation: GLM_GTX_wrap + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
+

Include <glm/gtx/wrap.hpp> to use the features of this extension.

+

Wrapping mode of texture coordinates.

+
+ + + + diff --git a/include/glm/doc/api/a00992.html b/include/glm/doc/api/a00992.html new file mode 100644 index 0000000..6963c8a --- /dev/null +++ b/include/glm/doc/api/a00992.html @@ -0,0 +1,649 @@ + + + + + + + +1.0.2 API documentation: Integer functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Integer functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL int bitCount (genType v)
 Returns the number of bits set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > bitCount (vec< L, T, Q > const &v)
 Returns the number of bits set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldExtract (vec< L, T, Q > const &Value, int Offset, int Bits)
 Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldInsert (vec< L, T, Q > const &Base, vec< L, T, Q > const &Insert, int Offset, int Bits)
 Returns the insertion the bits least-significant bits of insert into base. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > bitfieldReverse (vec< L, T, Q > const &v)
 Returns the reversal of the bits of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL int findLSB (genIUType x)
 Returns the bit number of the least significant bit set to 1 in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findLSB (vec< L, T, Q > const &v)
 Returns the bit number of the least significant bit set to 1 in the binary representation of value. More...
 
template<typename genIUType >
GLM_FUNC_DECL int findMSB (genIUType x)
 Returns the bit number of the most significant bit in the binary representation of value. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, int, Q > findMSB (vec< L, T, Q > const &v)
 Returns the bit number of the most significant bit in the binary representation of value. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DISCARD_DECL void imulExtended (vec< L, int, Q > const &x, vec< L, int, Q > const &y, vec< L, int, Q > &msb, vec< L, int, Q > &lsb)
 Multiplies 32-bit integers x and y, producing a 64-bit result. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > uaddCarry (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &carry)
 Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32). More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DISCARD_DECL void umulExtended (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &msb, vec< L, uint, Q > &lsb)
 Multiplies 32-bit integers x and y, producing a 64-bit result. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint, Q > usubBorrow (vec< L, uint, Q > const &x, vec< L, uint, Q > const &y, vec< L, uint, Q > &borrow)
 Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise. More...
 
+

Detailed Description

+

Provides GLSL functions on integer types

+

These all operate component-wise. The description is per component. The notation [a, b] means the set of bits from bit-number a through bit-number b, inclusive. The lowest-order bit is bit 0.

+

Include <glm/integer.hpp> to use these core features.

+

Function Documentation

+ +

◆ bitCount() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::bitCount (genType v)
+
+ +

Returns the number of bits set to 1 in the binary representation of value.

+
Template Parameters
+ + +
genTypeSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitCount man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ bitCount() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::bitCount (vec< L, T, Q > const & v)
+
+ +

Returns the number of bits set to 1 in the binary representation of value.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitCount man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ bitfieldExtract()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldExtract (vec< L, T, Q > const & Value,
int Offset,
int Bits 
)
+
+ +

Extracts bits [offset, offset + bits - 1] from value, returning them in the least significant bits of the result.

+

For unsigned data types, the most significant bits of the result will be set to zero. For signed data types, the most significant bits will be set to the value of bit offset + base - 1.

+

If bits is zero, the result will be zero. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL bitfieldExtract man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ bitfieldInsert()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldInsert (vec< L, T, Q > const & Base,
vec< L, T, Q > const & Insert,
int Offset,
int Bits 
)
+
+ +

Returns the insertion the bits least-significant bits of insert into base.

+

The result will have bits [offset, offset + bits - 1] taken from bits [0, bits - 1] of insert, and all other bits taken directly from the corresponding bits of base. If bits is zero, the result will simply be base. The result will be undefined if offset or bits is negative, or if the sum of offset and bits is greater than the number of bits used to store the operand.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitfieldInsert man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ bitfieldReverse()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldReverse (vec< L, T, Q > const & v)
+
+ +

Returns the reversal of the bits of value.

+

The bit numbered n of the result will be taken from bit (bits - 1) - n of value, where bits is the total number of bits used to represent value.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar or vector types.
+
+
+
See also
GLSL bitfieldReverse man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ findLSB() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::findLSB (genIUType x)
+
+ +

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

+

If value is zero, -1 will be returned.

+
Template Parameters
+ + +
genIUTypeSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findLSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ findLSB() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::findLSB (vec< L, T, Q > const & v)
+
+ +

Returns the bit number of the least significant bit set to 1 in the binary representation of value.

+

If value is zero, -1 will be returned.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findLSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ findMSB() [1/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL int glm::findMSB (genIUType x)
+
+ +

Returns the bit number of the most significant bit in the binary representation of value.

+

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

+
Template Parameters
+ + +
genIUTypeSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findMSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ findMSB() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, int, Q> glm::findMSB (vec< L, T, Q > const & v)
+
+ +

Returns the bit number of the most significant bit in the binary representation of value.

+

For positive integers, the result will be the bit number of the most significant bit set to 1. For negative integers, the result will be the bit number of the most significant bit set to 0. For a value of zero or negative one, -1 will be returned.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TSigned or unsigned integer scalar types.
+
+
+
See also
GLSL findMSB man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ imulExtended()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::imulExtended (vec< L, int, Q > const & x,
vec< L, int, Q > const & y,
vec< L, int, Q > & msb,
vec< L, int, Q > & lsb 
)
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL imulExtended man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ uaddCarry()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, uint, Q> glm::uaddCarry (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & carry 
)
+
+ +

Adds 32-bit unsigned integer x and y, returning the sum modulo pow(2, 32).

+

The value carry is set to 0 if the sum was less than pow(2, 32), or to 1 otherwise.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL uaddCarry man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ umulExtended()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DISCARD_DECL void glm::umulExtended (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & msb,
vec< L, uint, Q > & lsb 
)
+
+ +

Multiplies 32-bit integers x and y, producing a 64-bit result.

+

The 32 least-significant bits are returned in lsb. The 32 most-significant bits are returned in msb.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL umulExtended man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+ +

◆ usubBorrow()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, uint, Q> glm::usubBorrow (vec< L, uint, Q > const & x,
vec< L, uint, Q > const & y,
vec< L, uint, Q > & borrow 
)
+
+ +

Subtracts the 32-bit unsigned integer y from x, returning the difference if non-negative, or pow(2, 32) plus the difference otherwise.

+

The value borrow is set to 0 if x >= y, or to 1 otherwise.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL usubBorrow man page
+
+GLSL 4.20.8 specification, section 8.8 Integer Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00993.html b/include/glm/doc/api/a00993.html new file mode 100644 index 0000000..d963ae2 --- /dev/null +++ b/include/glm/doc/api/a00993.html @@ -0,0 +1,123 @@ + + + + + + + +1.0.2 API documentation: Matrix functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Matrix functions
+
+
+ + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > inverse (mat< C, R, T, Q > const &m)
 Return the inverse of a squared matrix. More...
 
+

Detailed Description

+

Provides GLSL matrix functions.

+

Include <glm/matrix.hpp> to use these core features.

+

Function Documentation

+ +

◆ inverse()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL mat<C, R, T, Q> glm::inverse (mat< C, R, T, Q > const & m)
+
+ +

Return the inverse of a squared matrix.

+
Template Parameters
+ + + + + +
CInteger between 1 and 4 included that qualify the number a column
RInteger between 1 and 4 included that qualify the number a row
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL inverse man page
+
+GLSL 4.20.8 specification, section 8.6 Matrix Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00994.html b/include/glm/doc/api/a00994.html new file mode 100644 index 0000000..a40ce9b --- /dev/null +++ b/include/glm/doc/api/a00994.html @@ -0,0 +1,428 @@ + + + + + + + +1.0.2 API documentation: Floating-Point Pack and Unpack Functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Floating-Point Pack and Unpack Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL double packDouble2x32 (uvec2 const &v)
 Returns a double-qualifier value obtained by packing the components of v into a 64-bit value. More...
 
GLM_FUNC_DECL uint packHalf2x16 (vec2 const &v)
 Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packSnorm2x16 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packSnorm4x8 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packUnorm2x16 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uint packUnorm4x8 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values. More...
 
GLM_FUNC_DECL uvec2 unpackDouble2x32 (double v)
 Returns a two-component unsigned integer vector representation of v. More...
 
GLM_FUNC_DECL vec2 unpackHalf2x16 (uint v)
 Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x16 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x8 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x16 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x8 (uint p)
 First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers. More...
 
+

Detailed Description

+

Provides GLSL functions to pack and unpack half, single and double-precision floating point values into more compact integer types.

+

These functions do not operate component-wise, rather as described in each case.

+

Include <glm/packing.hpp> to use these core features.

+

Function Documentation

+ +

◆ packDouble2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL double glm::packDouble2x32 (uvec2 const & v)
+
+ +

Returns a double-qualifier value obtained by packing the components of v into a 64-bit value.

+

If an IEEE 754 Inf or NaN is created, it will not signal, and the resulting floating point value is unspecified. Otherwise, the bit- level representation of v is preserved. The first vector component specifies the 32 least significant bits; the second component specifies the 32 most significant bits.

+
See also
GLSL packDouble2x32 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packHalf2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packHalf2x16 (vec2 const & v)
+
+ +

Returns an unsigned integer obtained by converting the components of a two-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these two 16- bit integers into a 32-bit unsigned integer.

+

The first vector component specifies the 16 least-significant bits of the result; the second component specifies the 16 most-significant bits.

+
See also
GLSL packHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packSnorm2x16 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm2x16: round(clamp(v, -1, +1) * 32767.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packSnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packSnorm4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packSnorm4x8 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packSnorm4x8: round(clamp(c, -1, +1) * 127.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packUnorm2x16 (vec2 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm2x16: round(clamp(c, 0, +1) * 65535.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ packUnorm4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uint glm::packUnorm4x8 (vec4 const & v)
+
+ +

First, converts each component of the normalized floating-point value v into 8- or 16-bit integer values.

+

Then, the results are packed into the returned 32-bit unsigned integer.

+

The conversion for component c of v to fixed point is done as follows: packUnorm4x8: round(clamp(c, 0, +1) * 255.0)

+

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

+
See also
GLSL packUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackDouble2x32()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL uvec2 glm::unpackDouble2x32 (double v)
+
+ +

Returns a two-component unsigned integer vector representation of v.

+

The bit-level representation of v is preserved. The first component of the vector contains the 32 least significant bits of the double; the second component consists the 32 most significant bits.

+
See also
GLSL unpackDouble2x32 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackHalf2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackHalf2x16 (uint v)
+
+ +

Returns a two-component floating-point vector with components obtained by unpacking a 32-bit unsigned integer into a pair of 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values.

+

The first component of the vector is obtained from the 16 least-significant bits of v; the second component is obtained from the 16 most-significant bits of v.

+
See also
GLSL unpackHalf2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackSnorm2x16 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm2x16: clamp(f / 32767.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackSnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackSnorm4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackSnorm4x8 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackSnorm4x8: clamp(f / 127.0, -1, +1)

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackSnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm2x16()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec2 glm::unpackUnorm2x16 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm2x16: f / 65535.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackUnorm2x16 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+ +

◆ unpackUnorm4x8()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec4 glm::unpackUnorm4x8 (uint p)
+
+ +

First, unpacks a single 32-bit unsigned integer p into a pair of 16-bit unsigned integers, four 8-bit unsigned integers, or four 8-bit signed integers.

+

Then, each component is converted to a normalized floating-point value to generate the returned two- or four-component vector.

+

The conversion for unpacked fixed-point value f to floating point is done as follows: unpackUnorm4x8: f / 255.0

+

The first component of the returned vector will be extracted from the least significant bits of the input; the last component will be extracted from the most significant bits.

+
See also
GLSL unpackUnorm4x8 man page
+
+GLSL 4.20.8 specification, section 8.4 Floating-Point Pack and Unpack Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00995.html b/include/glm/doc/api/a00995.html new file mode 100644 index 0000000..236aa0e --- /dev/null +++ b/include/glm/doc/api/a00995.html @@ -0,0 +1,634 @@ + + + + + + + +1.0.2 API documentation: Angle and Trigonometry Functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Angle and Trigonometry Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > acos (vec< L, T, Q > const &x)
 Arc cosine. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > acosh (vec< L, T, Q > const &x)
 Arc hyperbolic cosine; returns the non-negative inverse of cosh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > asin (vec< L, T, Q > const &x)
 Arc sine. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > asinh (vec< L, T, Q > const &x)
 Arc hyperbolic sine; returns the inverse of sinh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atan (vec< L, T, Q > const &y, vec< L, T, Q > const &x)
 Arc tangent. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atan (vec< L, T, Q > const &y_over_x)
 Arc tangent. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > atanh (vec< L, T, Q > const &x)
 Arc hyperbolic tangent; returns the inverse of tanh. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > cos (vec< L, T, Q > const &angle)
 The standard trigonometric cosine function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > cosh (vec< L, T, Q > const &angle)
 Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > degrees (vec< L, T, Q > const &radians)
 Converts radians to degrees and returns the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > radians (vec< L, T, Q > const &degrees)
 Converts degrees to radians and returns the result. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sin (vec< L, T, Q > const &angle)
 The standard trigonometric sine function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > sinh (vec< L, T, Q > const &angle)
 Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > tan (vec< L, T, Q > const &angle)
 The standard trigonometric tangent function. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > tanh (vec< L, T, Q > const &angle)
 Returns the hyperbolic tangent function, sinh(angle) / cosh(angle) More...
 
+

Detailed Description

+

Function parameters specified as angle are assumed to be in units of radians. In no case will any of these functions result in a divide by zero error. If the divisor of a ratio is 0, then results will be undefined.

+

These all operate component-wise. The description is per component.

+

Include <glm/trigonometric.hpp> to use these core features.

+
See also
ext_vector_trigonometric
+

Function Documentation

+ +

◆ acos()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::acos (vec< L, T, Q > const & x)
+
+ +

Arc cosine.

+

Returns an angle whose cosine is x. The range of values returned by this function is [0, PI]. Results are undefined if |x| > 1.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL acos man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ acosh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::acosh (vec< L, T, Q > const & x)
+
+ +

Arc hyperbolic cosine; returns the non-negative inverse of cosh.

+

Results are undefined if x < 1.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL acosh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ asin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::asin (vec< L, T, Q > const & x)
+
+ +

Arc sine.

+

Returns an angle whose sine is x. The range of values returned by this function is [-PI/2, PI/2]. Results are undefined if |x| > 1.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL asin man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ asinh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::asinh (vec< L, T, Q > const & x)
+
+ +

Arc hyperbolic sine; returns the inverse of sinh.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL asinh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ atan() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::atan (vec< L, T, Q > const & y,
vec< L, T, Q > const & x 
)
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y/x. The signs of x and y are used to determine what quadrant the angle is in. The range of values returned by this function is [-PI, PI]. Results are undefined if x and y are both 0.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL atan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +

Referenced by glm::atan2().

+ +
+
+ +

◆ atan() [2/2]

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::atan (vec< L, T, Q > const & y_over_x)
+
+ +

Arc tangent.

+

Returns an angle whose tangent is y_over_x. The range of values returned by this function is [-PI/2, PI/2].

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL atan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ atanh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::atanh (vec< L, T, Q > const & x)
+
+ +

Arc hyperbolic tangent; returns the inverse of tanh.

+

Results are undefined if abs(x) >= 1.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL atanh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ cos()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::cos (vec< L, T, Q > const & angle)
+
+ +

The standard trigonometric cosine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL cos man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ cosh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::cosh (vec< L, T, Q > const & angle)
+
+ +

Returns the hyperbolic cosine function, (exp(x) + exp(-x)) / 2.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL cosh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ degrees()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::degrees (vec< L, T, Q > const & radians)
+
+ +

Converts radians to degrees and returns the result.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL degrees man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ radians()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> glm::radians (vec< L, T, Q > const & degrees)
+
+ +

Converts degrees to radians and returns the result.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL radians man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ sin()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::sin (vec< L, T, Q > const & angle)
+
+ +

The standard trigonometric sine function.

+

The values returned by this function will range from [-1, 1].

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL sin man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ sinh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::sinh (vec< L, T, Q > const & angle)
+
+ +

Returns the hyperbolic sine function, (exp(x) - exp(-x)) / 2.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL sinh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ tan()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::tan (vec< L, T, Q > const & angle)
+
+ +

The standard trigonometric tangent function.

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL tan man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+ +

◆ tanh()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL vec<L, T, Q> glm::tanh (vec< L, T, Q > const & angle)
+
+ +

Returns the hyperbolic tangent function, sinh(angle) / cosh(angle)

+
Template Parameters
+ + + + +
LInteger between 1 and 4 included that qualify the dimension of the vector
TFloating-point scalar types
QValue from qualifier enum
+
+
+
See also
GLSL tanh man page
+
+GLSL 4.20.8 specification, section 8.1 Angle and Trigonometry Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a00996.html b/include/glm/doc/api/a00996.html new file mode 100644 index 0000000..6db7afe --- /dev/null +++ b/include/glm/doc/api/a00996.html @@ -0,0 +1,453 @@ + + + + + + + +1.0.2 API documentation: Vector Relational Functions + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+ +
+
Vector Relational Functions
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR bool all (vec< L, bool, Q > const &v)
 Returns true if all components of x are true. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR bool any (vec< L, bool, Q > const &v)
 Returns true if any component of x is true. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x == y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThan (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > greaterThanEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThan (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > lessThanEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > not_ (vec< L, bool, Q > const &v)
 Returns the component-wise logical complement of x. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y)
 Returns the component-wise comparison of result x != y. More...
 
+

Detailed Description

+

Relational and equality operators (<, <=, >, >=, ==, !=) are defined to operate on scalars and produce scalar Boolean results. For vector results, use the following built-in functions.

+

In all cases, the sizes of all the input and return vectors for any particular call must match.

+

Include <glm/vector_relational.hpp> to use these core features.

+
See also
GLM_EXT_vector_relational
+

Function Documentation

+ +

◆ all()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::all (vec< L, bool, Q > const & v)
+
+ +

Returns true if all components of x are true.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL all man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ any()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR bool glm::any (vec< L, bool, Q > const & v)
+
+ +

Returns true if any component of x is true.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL any man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ equal()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::equal (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x == y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point, integer or bool scalar type.
+
+
+
See also
GLSL equal man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ greaterThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::greaterThan (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x > y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
+
+
+
See also
GLSL greaterThan man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ greaterThanEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::greaterThanEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x >= y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
+
+
+
See also
GLSL greaterThanEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ lessThan()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::lessThan (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison result of x < y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
+
+
+
See also
GLSL lessThan man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ lessThanEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::lessThanEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x <= y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point or integer scalar type.
+
+
+
See also
GLSL lessThanEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ not_()

+ +
+
+ + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::not_ (vec< L, bool, Q > const & v)
+
+ +

Returns the component-wise logical complement of x.

+

/!\ Because of language incompatibilities between C++ and GLSL, GLM defines the function not but not_ instead.

+
Template Parameters
+ + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
+
+
+
See also
GLSL not man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+ +

◆ notEqual()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> glm::notEqual (vec< L, T, Q > const & x,
vec< L, T, Q > const & y 
)
+
+ +

Returns the component-wise comparison of result x != y.

+
Template Parameters
+ + + +
LAn integer between 1 and 4 included that qualify the dimension of the vector.
TA floating-point, integer or bool scalar type.
+
+
+
See also
GLSL notEqual man page
+
+GLSL 4.20.8 specification, section 8.7 Vector Relational Functions
+ +
+
+
+ + + + diff --git a/include/glm/doc/api/a01681.html b/include/glm/doc/api/a01681.html new file mode 100644 index 0000000..440239c --- /dev/null +++ b/include/glm/doc/api/a01681.html @@ -0,0 +1,116 @@ + + + + + + + +1.0.2 API documentation: color_space.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/color_space.hpp File Reference
+
+
+ +

GLM_GTC_color_space +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear)
 Convert a linear color to sRGB color using a standard gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB (vec< L, T, Q > const &ColorLinear, T Gamma)
 Convert a linear color to sRGB color using a custom gamma correction. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB)
 Convert a sRGB color to linear color using a standard gamma correction. More...
 
+template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear (vec< L, T, Q > const &ColorSRGB, T Gamma)
 Convert a sRGB color to linear color using a custom gamma correction.
 
+

Detailed Description

+

GLM_GTC_color_space

+
See also
Core features (dependence)
+
+GLM_GTC_color_space (dependence)
+ +

Definition in file gtc/color_space.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01681_source.html b/include/glm/doc/api/a01681_source.html new file mode 100644 index 0000000..73a73b5 --- /dev/null +++ b/include/glm/doc/api/a01681_source.html @@ -0,0 +1,117 @@ + + + + + + + +1.0.2 API documentation: color_space.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/color_space.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 #include "../exponential.hpp"
+
20 #include "../vec3.hpp"
+
21 #include "../vec4.hpp"
+
22 #include <limits>
+
23 
+
24 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
25 # pragma message("GLM: GLM_GTC_color_space extension included")
+
26 #endif
+
27 
+
28 namespace glm
+
29 {
+
32 
+
35  template<length_t L, typename T, qualifier Q>
+
36  GLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear);
+
37 
+
40  template<length_t L, typename T, qualifier Q>
+
41  GLM_FUNC_DECL vec<L, T, Q> convertLinearToSRGB(vec<L, T, Q> const& ColorLinear, T Gamma);
+
42 
+
45  template<length_t L, typename T, qualifier Q>
+
46  GLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB);
+
47 
+
49  // IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb
+
50  template<length_t L, typename T, qualifier Q>
+
51  GLM_FUNC_DECL vec<L, T, Q> convertSRGBToLinear(vec<L, T, Q> const& ColorSRGB, T Gamma);
+
52 
+
54 } //namespace glm
+
55 
+
56 #include "color_space.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)
Convert a linear color to sRGB color using a custom gamma correction.
+
GLM_FUNC_DECL vec< L, T, Q > convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)
Convert a sRGB color to linear color using a custom gamma correction.
+ + + + diff --git a/include/glm/doc/api/a01684.html b/include/glm/doc/api/a01684.html new file mode 100644 index 0000000..84758d7 --- /dev/null +++ b/include/glm/doc/api/a01684.html @@ -0,0 +1,121 @@ + + + + + + + +1.0.2 API documentation: color_space.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtx/color_space.hpp File Reference
+
+
+ +

GLM_GTX_color_space +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > hsvColor (vec< 3, T, Q > const &rgbValue)
 Converts a color from RGB color space to its color in HSV color space. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T luminosity (vec< 3, T, Q > const &color)
 Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rgbColor (vec< 3, T, Q > const &hsvValue)
 Converts a color from HSV color space to its color in RGB color space. More...
 
template<typename T >
GLM_FUNC_DECL mat< 4, 4, T, defaultp > saturation (T const s)
 Build a saturation matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > saturation (T const s, vec< 3, T, Q > const &color)
 Modify the saturation of a color. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > saturation (T const s, vec< 4, T, Q > const &color)
 Modify the saturation of a color. More...
 
+

Detailed Description

+

GLM_GTX_color_space

+
See also
Core features (dependence)
+ +

Definition in file gtx/color_space.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01684_source.html b/include/glm/doc/api/a01684_source.html new file mode 100644 index 0000000..b68eea3 --- /dev/null +++ b/include/glm/doc/api/a01684_source.html @@ -0,0 +1,129 @@ + + + + + + + +1.0.2 API documentation: color_space.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/color_space.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_color_space extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
31  template<typename T, qualifier Q>
+
32  GLM_FUNC_DECL vec<3, T, Q> rgbColor(
+
33  vec<3, T, Q> const& hsvValue);
+
34 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL vec<3, T, Q> hsvColor(
+
39  vec<3, T, Q> const& rgbValue);
+
40 
+
43  template<typename T>
+
44  GLM_FUNC_DECL mat<4, 4, T, defaultp> saturation(
+
45  T const s);
+
46 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL vec<3, T, Q> saturation(
+
51  T const s,
+
52  vec<3, T, Q> const& color);
+
53 
+
56  template<typename T, qualifier Q>
+
57  GLM_FUNC_DECL vec<4, T, Q> saturation(
+
58  T const s,
+
59  vec<4, T, Q> const& color);
+
60 
+
63  template<typename T, qualifier Q>
+
64  GLM_FUNC_DECL T luminosity(
+
65  vec<3, T, Q> const& color);
+
66 
+
68 }//namespace glm
+
69 
+
70 #include "color_space.inl"
+
+
GLM_FUNC_DECL vec< 3, T, Q > hsvColor(vec< 3, T, Q > const &rgbValue)
Converts a color from RGB color space to its color in HSV color space.
+
GLM_FUNC_DECL vec< 4, T, Q > saturation(T const s, vec< 4, T, Q > const &color)
Modify the saturation of a color.
+
GLM_FUNC_DECL T luminosity(vec< 3, T, Q > const &color)
Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals.
+
GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)
Converts a color from HSV color space to its color in RGB color space.
+ + + + diff --git a/include/glm/doc/api/a01687.html b/include/glm/doc/api/a01687.html new file mode 100644 index 0000000..d2afe6e --- /dev/null +++ b/include/glm/doc/api/a01687.html @@ -0,0 +1,113 @@ + + + + + + + +1.0.2 API documentation: common.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtx/common.hpp File Reference
+
+
+ +

GLM_GTX_common +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > closeBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > fmod (vec< L, T, Q > const &v)
 Similar to 'mod' but with a different rounding and integer support. More...
 
template<typename genType >
GLM_FUNC_DECL genType::bool_type isdenormal (genType const &x)
 Returns true if x is a denormalized number Numbers whose absolute value is too small to be represented in the normal format are represented in an alternate, denormalized format. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, bool, Q > openBounded (vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
 Returns whether vector components values are within an interval. More...
 
+

Detailed Description

+

GLM_GTX_common

+
See also
Core features (dependence)
+ +

Definition in file gtx/common.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01687_source.html b/include/glm/doc/api/a01687_source.html new file mode 100644 index 0000000..6d0aa93 --- /dev/null +++ b/include/glm/doc/api/a01687_source.html @@ -0,0 +1,118 @@ + + + + + + + +1.0.2 API documentation: common.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/common.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependencies:
+
16 #include "../vec2.hpp"
+
17 #include "../vec3.hpp"
+
18 #include "../vec4.hpp"
+
19 #include "../gtc/vec1.hpp"
+
20 
+
21 #ifndef GLM_ENABLE_EXPERIMENTAL
+
22 # error "GLM: GLM_GTX_common is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
23 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_GTX_common extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
40  template<typename genType>
+
41  GLM_FUNC_DECL typename genType::bool_type isdenormal(genType const& x);
+
42 
+
48  template<length_t L, typename T, qualifier Q>
+
49  GLM_FUNC_DECL vec<L, T, Q> fmod(vec<L, T, Q> const& v);
+
50 
+
58  template <length_t L, typename T, qualifier Q>
+
59  GLM_FUNC_DECL vec<L, bool, Q> openBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);
+
60 
+
68  template <length_t L, typename T, qualifier Q>
+
69  GLM_FUNC_DECL vec<L, bool, Q> closeBounded(vec<L, T, Q> const& Value, vec<L, T, Q> const& Min, vec<L, T, Q> const& Max);
+
70 
+
72 }//namespace glm
+
73 
+
74 #include "common.inl"
+
+
GLM_FUNC_DECL vec< L, bool, Q > openBounded(vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
Returns whether vector components values are within an interval.
+
GLM_FUNC_DECL genType::bool_type isdenormal(genType const &x)
Returns true if x is a denormalized number Numbers whose absolute value is too small to be represente...
+
GLM_FUNC_DECL vec< L, T, Q > fmod(vec< L, T, Q > const &v)
Similar to 'mod' but with a different rounding and integer support.
+
GLM_FUNC_DECL vec< L, bool, Q > closeBounded(vec< L, T, Q > const &Value, vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)
Returns whether vector components values are within an interval.
+ + + + diff --git a/include/glm/doc/api/a01690.html b/include/glm/doc/api/a01690.html new file mode 100644 index 0000000..cf10cdd --- /dev/null +++ b/include/glm/doc/api/a01690.html @@ -0,0 +1,103 @@ + + + + + + + +1.0.2 API documentation: integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/integer.hpp File Reference
+
+
+ +

GLM_GTC_integer +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > log2 (vec< L, T, Q > const &v)
 Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y. More...
 
+

Detailed Description

+

GLM_GTC_integer

+
See also
Core features (dependence)
+
+GLM_GTC_integer (dependence)
+ +

Definition in file gtc/integer.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01690_source.html b/include/glm/doc/api/a01690_source.html new file mode 100644 index 0000000..ef68967 --- /dev/null +++ b/include/glm/doc/api/a01690_source.html @@ -0,0 +1,108 @@ + + + + + + + +1.0.2 API documentation: integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/integer.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependencies
+
17 #include "../detail/setup.hpp"
+
18 #include "../detail/qualifier.hpp"
+
19 #include "../common.hpp"
+
20 #include "../integer.hpp"
+
21 #include "../exponential.hpp"
+
22 #include "../ext/scalar_common.hpp"
+
23 #include "../ext/vector_common.hpp"
+
24 #include <limits>
+
25 
+
26 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
27 # pragma message("GLM: GLM_GTC_integer extension included")
+
28 #endif
+
29 
+
30 namespace glm
+
31 {
+
34 
+
37  template<length_t L, typename T, qualifier Q>
+
38  GLM_FUNC_DECL vec<L, T, Q> log2(vec<L, T, Q> const& v);
+
39 
+
41 } //namespace glm
+
42 
+
43 #include "integer.inl"
+
+
GLM_FUNC_DECL vec< L, T, Q > log2(vec< L, T, Q > const &v)
Returns the base 2 log of x, i.e., returns the value y, which satisfies the equation x = 2 ^ y.
+ + + + diff --git a/include/glm/doc/api/a01693.html b/include/glm/doc/api/a01693.html new file mode 100644 index 0000000..bdb3268 --- /dev/null +++ b/include/glm/doc/api/a01693.html @@ -0,0 +1,133 @@ + + + + + + + +1.0.2 API documentation: integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtx/integer.hpp File Reference
+
+
+ +

GLM_GTX_integer +More...

+ +

Go to the source code of this file.

+ + + + + +

+Typedefs

typedef signed int sint
 32bit signed integer. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL genType factorial (genType const &x)
 Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.
 
GLM_FUNC_DECL unsigned int floor_log2 (unsigned int x)
 Returns the floor log2 of x. More...
 
GLM_FUNC_DECL int mod (int x, int y)
 Modulus. More...
 
GLM_FUNC_DECL uint mod (uint x, uint y)
 Modulus. More...
 
GLM_FUNC_DECL uint nlz (uint x)
 Returns the number of leading zeros. More...
 
GLM_FUNC_DECL int pow (int x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL uint pow (uint x, uint y)
 Returns x raised to the y power. More...
 
GLM_FUNC_DECL int sqrt (int x)
 Returns the positive square root of x. More...
 
GLM_FUNC_DECL uint sqrt (uint x)
 Returns the positive square root of x. More...
 
+

Detailed Description

+

GLM_GTX_integer

+
See also
Core features (dependence)
+ +

Definition in file gtx/integer.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01693_source.html b/include/glm/doc/api/a01693_source.html new file mode 100644 index 0000000..67386c6 --- /dev/null +++ b/include/glm/doc/api/a01693_source.html @@ -0,0 +1,128 @@ + + + + + + + +1.0.2 API documentation: integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/integer.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 #include "../gtc/integer.hpp"
+
18 
+
19 #ifndef GLM_ENABLE_EXPERIMENTAL
+
20 # error "GLM: GLM_GTX_integer is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
21 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
22 # pragma message("GLM: GLM_GTX_integer extension included")
+
23 #endif
+
24 
+
25 namespace glm
+
26 {
+
29 
+
32  GLM_FUNC_DECL int pow(int x, uint y);
+
33 
+
36  GLM_FUNC_DECL int sqrt(int x);
+
37 
+
40  GLM_FUNC_DECL unsigned int floor_log2(unsigned int x);
+
41 
+
44  GLM_FUNC_DECL int mod(int x, int y);
+
45 
+
48  template<typename genType>
+
49  GLM_FUNC_DECL genType factorial(genType const& x);
+
50 
+
53  typedef signed int sint;
+
54 
+
57  GLM_FUNC_DECL uint pow(uint x, uint y);
+
58 
+
61  GLM_FUNC_DECL uint sqrt(uint x);
+
62 
+
65  GLM_FUNC_DECL uint mod(uint x, uint y);
+
66 
+
69  GLM_FUNC_DECL uint nlz(uint x);
+
70 
+
72 }//namespace glm
+
73 
+
74 #include "integer.inl"
+
+
GLM_FUNC_DECL unsigned int floor_log2(unsigned int x)
Returns the floor log2 of x.
+
GLM_FUNC_DECL uint mod(uint x, uint y)
Modulus.
+
GLM_FUNC_DECL uint nlz(uint x)
Returns the number of leading zeros.
+
signed int sint
32bit signed integer.
Definition: gtx/integer.hpp:53
+
GLM_FUNC_DECL uint sqrt(uint x)
Returns the positive square root of x.
+
GLM_FUNC_DECL uint pow(uint x, uint y)
Returns x raised to the y power.
+
GLM_FUNC_DECL genType factorial(genType const &x)
Return the factorial value of a number (!12 max, integer only) From GLM_GTX_integer extension.
+ + + + diff --git a/include/glm/doc/api/a01696.html b/include/glm/doc/api/a01696.html new file mode 100644 index 0000000..1c56f52 --- /dev/null +++ b/include/glm/doc/api/a01696.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: matrix_integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ext/matrix_integer.hpp File Reference
+
+
+ +

GLM_EXT_matrix_integer +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL T determinant (mat< C, R, T, Q > const &m)
 Return the determinant of a squared matrix. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult (mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
 Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and y[i][j]. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct (vec< C, T, Q > const &c, vec< R, T, Q > const &r)
 Treats the first parameter c as a column vector and the second parameter r as a row vector and does a linear algebraic matrix multiply c * r. More...
 
template<length_t C, length_t R, typename T , qualifier Q>
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose (mat< C, R, T, Q > const &x)
 Returns the transposed matrix of x. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a01696_source.html b/include/glm/doc/api/a01696_source.html new file mode 100644 index 0000000..7f6ab89 --- /dev/null +++ b/include/glm/doc/api/a01696_source.html @@ -0,0 +1,116 @@ + + + + + + + +1.0.2 API documentation: matrix_integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext/matrix_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependencies
+
23 #include "../gtc/constants.hpp"
+
24 #include "../geometric.hpp"
+
25 #include "../trigonometric.hpp"
+
26 #include "../matrix.hpp"
+
27 
+
28 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
29 # pragma message("GLM: GLM_EXT_matrix_integer extension included")
+
30 #endif
+
31 
+
32 namespace glm
+
33 {
+
36 
+
47  template<length_t C, length_t R, typename T, qualifier Q>
+
48  GLM_FUNC_DECL mat<C, R, T, Q> matrixCompMult(mat<C, R, T, Q> const& x, mat<C, R, T, Q> const& y);
+
49 
+
61  template<length_t C, length_t R, typename T, qualifier Q>
+
62  GLM_FUNC_DECL typename detail::outerProduct_trait<C, R, T, Q>::type outerProduct(vec<C, T, Q> const& c, vec<R, T, Q> const& r);
+
63 
+
73  template<length_t C, length_t R, typename T, qualifier Q>
+
74  GLM_FUNC_DECL typename mat<C, R, T, Q>::transpose_type transpose(mat<C, R, T, Q> const& x);
+
75 
+
85  template<length_t C, length_t R, typename T, qualifier Q>
+
86  GLM_FUNC_DECL T determinant(mat<C, R, T, Q> const& m);
+
87 
+
89 }//namespace glm
+
90 
+
91 #include "matrix_integer.inl"
+
+
GLM_FUNC_DECL T determinant(mat< C, R, T, Q > const &m)
Return the determinant of a squared matrix.
+
GLM_FUNC_DECL detail::outerProduct_trait< C, R, T, Q >::type outerProduct(vec< C, T, Q > const &c, vec< R, T, Q > const &r)
Treats the first parameter c as a column vector and the second parameter r as a row vector and does a...
+
GLM_FUNC_DECL mat< C, R, T, Q >::transpose_type transpose(mat< C, R, T, Q > const &x)
Returns the transposed matrix of x.
+
GLM_FUNC_DECL mat< C, R, T, Q > matrixCompMult(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)
Multiply matrix x by matrix y component-wise, i.e., result[i][j] is the scalar product of x[i][j] and...
+ + + + diff --git a/include/glm/doc/api/a01699.html b/include/glm/doc/api/a01699.html new file mode 100644 index 0000000..c856c36 --- /dev/null +++ b/include/glm/doc/api/a01699.html @@ -0,0 +1,151 @@ + + + + + + + +1.0.2 API documentation: matrix_integer.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/matrix_integer.hpp File Reference
+
+
+ +

GLM_GTC_matrix_integer +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef mat< 2, 2, int, highp > highp_imat2
 High-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 3, 3, int, highp > highp_imat3
 High-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 4, 4, int, highp > highp_imat4
 High-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, highp > highp_umat2
 High-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 3, 3, uint, highp > highp_umat3
 High-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 4, 4, uint, highp > highp_umat4
 High-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, lowp > lowp_imat2
 Low-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 3, 3, int, lowp > lowp_imat3
 Low-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 4, 4, int, lowp > lowp_imat4
 Low-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, lowp > lowp_umat2
 Low-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 3, 3, uint, lowp > lowp_umat3
 Low-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 4, 4, uint, lowp > lowp_umat4
 Low-qualifier unsigned integer 4x4 matrix. More...
 
typedef mat< 2, 2, int, mediump > mediump_imat2
 Medium-qualifier signed integer 2x2 matrix. More...
 
typedef mat< 3, 3, int, mediump > mediump_imat3
 Medium-qualifier signed integer 3x3 matrix. More...
 
typedef mat< 4, 4, int, mediump > mediump_imat4
 Medium-qualifier signed integer 4x4 matrix. More...
 
typedef mat< 2, 2, uint, mediump > mediump_umat2
 Medium-qualifier unsigned integer 2x2 matrix. More...
 
typedef mat< 3, 3, uint, mediump > mediump_umat3
 Medium-qualifier unsigned integer 3x3 matrix. More...
 
typedef mat< 4, 4, uint, mediump > mediump_umat4
 Medium-qualifier unsigned integer 4x4 matrix. More...
 
+

Detailed Description

+

GLM_GTC_matrix_integer

+
See also
Core features (dependence)
+ +

Definition in file gtc/matrix_integer.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01699_source.html b/include/glm/doc/api/a01699_source.html new file mode 100644 index 0000000..9f55ec2 --- /dev/null +++ b/include/glm/doc/api/a01699_source.html @@ -0,0 +1,404 @@ + + + + + + + +1.0.2 API documentation: matrix_integer.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/matrix_integer.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../mat2x2.hpp"
+
17 #include "../mat2x3.hpp"
+
18 #include "../mat2x4.hpp"
+
19 #include "../mat3x2.hpp"
+
20 #include "../mat3x3.hpp"
+
21 #include "../mat3x4.hpp"
+
22 #include "../mat4x2.hpp"
+
23 #include "../mat4x3.hpp"
+
24 #include "../mat4x4.hpp"
+
25 
+
26 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
27 # pragma message("GLM: GLM_GTC_matrix_integer extension included")
+
28 #endif
+
29 
+
30 namespace glm
+
31 {
+
34 
+
37  typedef mat<2, 2, int, highp> highp_imat2;
+
38 
+
41  typedef mat<3, 3, int, highp> highp_imat3;
+
42 
+
45  typedef mat<4, 4, int, highp> highp_imat4;
+
46 
+
49  typedef mat<2, 2, int, highp> highp_imat2x2;
+
50 
+
53  typedef mat<2, 3, int, highp> highp_imat2x3;
+
54 
+
57  typedef mat<2, 4, int, highp> highp_imat2x4;
+
58 
+
61  typedef mat<3, 2, int, highp> highp_imat3x2;
+
62 
+
65  typedef mat<3, 3, int, highp> highp_imat3x3;
+
66 
+
69  typedef mat<3, 4, int, highp> highp_imat3x4;
+
70 
+
73  typedef mat<4, 2, int, highp> highp_imat4x2;
+
74 
+
77  typedef mat<4, 3, int, highp> highp_imat4x3;
+
78 
+
81  typedef mat<4, 4, int, highp> highp_imat4x4;
+
82 
+
83 
+
86  typedef mat<2, 2, int, mediump> mediump_imat2;
+
87 
+
90  typedef mat<3, 3, int, mediump> mediump_imat3;
+
91 
+
94  typedef mat<4, 4, int, mediump> mediump_imat4;
+
95 
+
96 
+
99  typedef mat<2, 2, int, mediump> mediump_imat2x2;
+
100 
+
103  typedef mat<2, 3, int, mediump> mediump_imat2x3;
+
104 
+
107  typedef mat<2, 4, int, mediump> mediump_imat2x4;
+
108 
+
111  typedef mat<3, 2, int, mediump> mediump_imat3x2;
+
112 
+
115  typedef mat<3, 3, int, mediump> mediump_imat3x3;
+
116 
+
119  typedef mat<3, 4, int, mediump> mediump_imat3x4;
+
120 
+
123  typedef mat<4, 2, int, mediump> mediump_imat4x2;
+
124 
+
127  typedef mat<4, 3, int, mediump> mediump_imat4x3;
+
128 
+
131  typedef mat<4, 4, int, mediump> mediump_imat4x4;
+
132 
+
133 
+
136  typedef mat<2, 2, int, lowp> lowp_imat2;
+
137 
+
140  typedef mat<3, 3, int, lowp> lowp_imat3;
+
141 
+
144  typedef mat<4, 4, int, lowp> lowp_imat4;
+
145 
+
146 
+
149  typedef mat<2, 2, int, lowp> lowp_imat2x2;
+
150 
+
153  typedef mat<2, 3, int, lowp> lowp_imat2x3;
+
154 
+
157  typedef mat<2, 4, int, lowp> lowp_imat2x4;
+
158 
+
161  typedef mat<3, 2, int, lowp> lowp_imat3x2;
+
162 
+
165  typedef mat<3, 3, int, lowp> lowp_imat3x3;
+
166 
+
169  typedef mat<3, 4, int, lowp> lowp_imat3x4;
+
170 
+
173  typedef mat<4, 2, int, lowp> lowp_imat4x2;
+
174 
+
177  typedef mat<4, 3, int, lowp> lowp_imat4x3;
+
178 
+
181  typedef mat<4, 4, int, lowp> lowp_imat4x4;
+
182 
+
183 
+
186  typedef mat<2, 2, uint, highp> highp_umat2;
+
187 
+
190  typedef mat<3, 3, uint, highp> highp_umat3;
+
191 
+
194  typedef mat<4, 4, uint, highp> highp_umat4;
+
195 
+
198  typedef mat<2, 2, uint, highp> highp_umat2x2;
+
199 
+
202  typedef mat<2, 3, uint, highp> highp_umat2x3;
+
203 
+
206  typedef mat<2, 4, uint, highp> highp_umat2x4;
+
207 
+
210  typedef mat<3, 2, uint, highp> highp_umat3x2;
+
211 
+
214  typedef mat<3, 3, uint, highp> highp_umat3x3;
+
215 
+
218  typedef mat<3, 4, uint, highp> highp_umat3x4;
+
219 
+
222  typedef mat<4, 2, uint, highp> highp_umat4x2;
+
223 
+
226  typedef mat<4, 3, uint, highp> highp_umat4x3;
+
227 
+
230  typedef mat<4, 4, uint, highp> highp_umat4x4;
+
231 
+
232 
+
235  typedef mat<2, 2, uint, mediump> mediump_umat2;
+
236 
+
239  typedef mat<3, 3, uint, mediump> mediump_umat3;
+
240 
+
243  typedef mat<4, 4, uint, mediump> mediump_umat4;
+
244 
+
245 
+
248  typedef mat<2, 2, uint, mediump> mediump_umat2x2;
+
249 
+
252  typedef mat<2, 3, uint, mediump> mediump_umat2x3;
+
253 
+
256  typedef mat<2, 4, uint, mediump> mediump_umat2x4;
+
257 
+
260  typedef mat<3, 2, uint, mediump> mediump_umat3x2;
+
261 
+
264  typedef mat<3, 3, uint, mediump> mediump_umat3x3;
+
265 
+
268  typedef mat<3, 4, uint, mediump> mediump_umat3x4;
+
269 
+
272  typedef mat<4, 2, uint, mediump> mediump_umat4x2;
+
273 
+
276  typedef mat<4, 3, uint, mediump> mediump_umat4x3;
+
277 
+
280  typedef mat<4, 4, uint, mediump> mediump_umat4x4;
+
281 
+
282 
+
285  typedef mat<2, 2, uint, lowp> lowp_umat2;
+
286 
+
289  typedef mat<3, 3, uint, lowp> lowp_umat3;
+
290 
+
293  typedef mat<4, 4, uint, lowp> lowp_umat4;
+
294 
+
295 
+
298  typedef mat<2, 2, uint, lowp> lowp_umat2x2;
+
299 
+
302  typedef mat<2, 3, uint, lowp> lowp_umat2x3;
+
303 
+
306  typedef mat<2, 4, uint, lowp> lowp_umat2x4;
+
307 
+
310  typedef mat<3, 2, uint, lowp> lowp_umat3x2;
+
311 
+
314  typedef mat<3, 3, uint, lowp> lowp_umat3x3;
+
315 
+
318  typedef mat<3, 4, uint, lowp> lowp_umat3x4;
+
319 
+
322  typedef mat<4, 2, uint, lowp> lowp_umat4x2;
+
323 
+
326  typedef mat<4, 3, uint, lowp> lowp_umat4x3;
+
327 
+
330  typedef mat<4, 4, uint, lowp> lowp_umat4x4;
+
331 
+
332 
+
333 
+
336  typedef mat<2, 2, int, defaultp> imat2;
+
337 
+
340  typedef mat<3, 3, int, defaultp> imat3;
+
341 
+
344  typedef mat<4, 4, int, defaultp> imat4;
+
345 
+
348  typedef mat<2, 2, int, defaultp> imat2x2;
+
349 
+
352  typedef mat<2, 3, int, defaultp> imat2x3;
+
353 
+
356  typedef mat<2, 4, int, defaultp> imat2x4;
+
357 
+
360  typedef mat<3, 2, int, defaultp> imat3x2;
+
361 
+
364  typedef mat<3, 3, int, defaultp> imat3x3;
+
365 
+
368  typedef mat<3, 4, int, defaultp> imat3x4;
+
369 
+
372  typedef mat<4, 2, int, defaultp> imat4x2;
+
373 
+
376  typedef mat<4, 3, int, defaultp> imat4x3;
+
377 
+
380  typedef mat<4, 4, int, defaultp> imat4x4;
+
381 
+
382 
+
383 
+
386  typedef mat<2, 2, uint, defaultp> umat2;
+
387 
+
390  typedef mat<3, 3, uint, defaultp> umat3;
+
391 
+
394  typedef mat<4, 4, uint, defaultp> umat4;
+
395 
+
398  typedef mat<2, 2, uint, defaultp> umat2x2;
+
399 
+
402  typedef mat<2, 3, uint, defaultp> umat2x3;
+
403 
+
406  typedef mat<2, 4, uint, defaultp> umat2x4;
+
407 
+
410  typedef mat<3, 2, uint, defaultp> umat3x2;
+
411 
+
414  typedef mat<3, 3, uint, defaultp> umat3x3;
+
415 
+
418  typedef mat<3, 4, uint, defaultp> umat3x4;
+
419 
+
422  typedef mat<4, 2, uint, defaultp> umat4x2;
+
423 
+
426  typedef mat<4, 3, uint, defaultp> umat4x3;
+
427 
+
430  typedef mat<4, 4, uint, defaultp> umat4x4;
+
431 
+
433 }//namespace glm
+
+
mat< 3, 4, uint, highp > highp_umat3x4
High-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1026
+
mat< 3, 2, int, highp > highp_imat3x2
High-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:817
+
mat< 3, 4, int, highp > highp_imat3x4
High-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:819
+
mat< 3, 2, int, defaultp > imat3x2
Signed integer 3x2 matrix.
+
mat< 3, 3, int, defaultp > imat3
Signed integer 3x3 matrix.
+
mat< 3, 4, int, lowp > lowp_imat3x4
Low-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:799
+
mat< 4, 3, int, lowp > lowp_imat4x3
Low-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:801
+
mat< 2, 4, int, defaultp > imat2x4
Signed integer 2x4 matrix.
+
mat< 4, 4, uint, highp > highp_umat4
High-qualifier unsigned integer 4x4 matrix.
+
mat< 2, 3, int, highp > highp_imat2x3
High-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:815
+
mat< 4, 4, int, defaultp > imat4
Signed integer 4x4 matrix.
+
mat< 4, 3, int, mediump > mediump_imat4x3
Medium-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:811
+
mat< 4, 4, uint, lowp > lowp_umat4x4
Low-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1009
+
mat< 2, 2, uint, defaultp > umat2
Unsigned integer 2x2 matrix.
+
mat< 3, 4, uint, mediump > mediump_umat3x4
Medium-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1016
+
mat< 4, 3, int, highp > highp_imat4x3
High-qualifier signed integer 4x3 matrix.
Definition: fwd.hpp:821
+
mat< 4, 4, uint, defaultp > umat4
Unsigned integer 4x4 matrix.
+
mat< 2, 2, uint, highp > highp_umat2
High-qualifier unsigned integer 2x2 matrix.
+
mat< 2, 2, uint, mediump > mediump_umat2
Medium-qualifier unsigned integer 2x2 matrix.
+
mat< 4, 4, int, defaultp > imat4x4
Signed integer 4x4 matrix.
+
mat< 2, 2, int, defaultp > imat2x2
Signed integer 2x2 matrix.
+
mat< 4, 3, int, defaultp > imat4x3
Signed integer 4x3 matrix.
+
mat< 4, 4, int, lowp > lowp_imat4x4
Low-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:802
+
mat< 3, 2, uint, defaultp > umat3x2
Unsigned integer 3x2 matrix.
+
mat< 3, 3, uint, mediump > mediump_umat3x3
Medium-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1015
+
mat< 2, 4, uint, lowp > lowp_umat2x4
Low-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1003
+
mat< 4, 2, uint, mediump > mediump_umat4x2
Medium-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1017
+
mat< 4, 2, int, mediump > mediump_imat4x2
Medium-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:810
+
mat< 4, 4, uint, lowp > lowp_umat4
Low-qualifier unsigned integer 4x4 matrix.
+
mat< 2, 2, int, mediump > mediump_imat2
Medium-qualifier signed integer 2x2 matrix.
+
mat< 3, 4, uint, defaultp > umat3x4
Signed integer 3x4 matrix.
+
mat< 2, 4, uint, defaultp > umat2x4
Unsigned integer 2x4 matrix.
+
mat< 3, 4, int, defaultp > imat3x4
Signed integer 3x4 matrix.
+
mat< 4, 4, uint, mediump > mediump_umat4x4
Medium-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1019
+
mat< 4, 4, uint, highp > highp_umat4x4
High-qualifier unsigned integer 4x4 matrix.
Definition: fwd.hpp:1029
+
mat< 3, 4, int, mediump > mediump_imat3x4
Medium-qualifier signed integer 3x4 matrix.
Definition: fwd.hpp:809
+
mat< 3, 2, uint, lowp > lowp_umat3x2
Low-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1004
+
mat< 2, 2, int, highp > highp_imat2x2
High-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:814
+
mat< 3, 3, int, lowp > lowp_imat3
Low-qualifier signed integer 3x3 matrix.
+
mat< 3, 3, uint, mediump > mediump_umat3
Medium-qualifier unsigned integer 3x3 matrix.
+
mat< 4, 2, uint, lowp > lowp_umat4x2
Low-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1007
+
mat< 3, 4, uint, lowp > lowp_umat3x4
Low-qualifier unsigned integer 3x4 matrix.
Definition: fwd.hpp:1006
+
mat< 2, 2, int, lowp > lowp_imat2
Low-qualifier signed integer 2x2 matrix.
+
mat< 2, 3, uint, defaultp > umat2x3
Unsigned integer 2x3 matrix.
+
mat< 2, 2, int, mediump > mediump_imat2x2
Medium-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:804
+
mat< 2, 2, uint, highp > highp_umat2x2
High-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1021
+
mat< 3, 3, uint, highp > highp_umat3
High-qualifier unsigned integer 3x3 matrix.
+
mat< 2, 4, int, mediump > mediump_imat2x4
Medium-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:806
+
mat< 2, 4, uint, mediump > mediump_umat2x4
Medium-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1013
+
mat< 4, 2, uint, highp > highp_umat4x2
High-qualifier unsigned integer 4x2 matrix.
Definition: fwd.hpp:1027
+
mat< 2, 2, uint, lowp > lowp_umat2
Low-qualifier unsigned integer 2x2 matrix.
+
mat< 4, 2, uint, defaultp > umat4x2
Unsigned integer 4x2 matrix.
+
mat< 2, 2, int, highp > highp_imat2
High-qualifier signed integer 2x2 matrix.
+
mat< 3, 3, uint, lowp > lowp_umat3x3
Low-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1005
+
mat< 3, 2, int, lowp > lowp_imat3x2
Low-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:797
+
mat< 2, 3, uint, lowp > lowp_umat2x3
Low-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1002
+
mat< 3, 3, int, mediump > mediump_imat3
Medium-qualifier signed integer 3x3 matrix.
+
mat< 2, 3, uint, highp > highp_umat2x3
High-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1022
+
mat< 2, 2, uint, lowp > lowp_umat2x2
Low-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1001
+
mat< 3, 2, uint, mediump > mediump_umat3x2
Medium-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1014
+
mat< 4, 3, uint, lowp > lowp_umat4x3
Low-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1008
+
mat< 2, 3, uint, mediump > mediump_umat2x3
Medium-qualifier unsigned integer 2x3 matrix.
Definition: fwd.hpp:1012
+
mat< 4, 4, int, highp > highp_imat4
High-qualifier signed integer 4x4 matrix.
+
mat< 4, 2, int, highp > highp_imat4x2
High-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:820
+
mat< 2, 2, uint, defaultp > umat2x2
Unsigned integer 2x2 matrix.
+
mat< 2, 2, int, defaultp > imat2
Signed integer 2x2 matrix.
+
mat< 2, 3, int, defaultp > imat2x3
Signed integer 2x3 matrix.
+
mat< 4, 2, int, defaultp > imat4x2
Signed integer 4x2 matrix.
+
mat< 3, 2, uint, highp > highp_umat3x2
High-qualifier unsigned integer 3x2 matrix.
Definition: fwd.hpp:1024
+
mat< 4, 2, int, lowp > lowp_imat4x2
Low-qualifier signed integer 4x2 matrix.
Definition: fwd.hpp:800
+
mat< 4, 4, int, lowp > lowp_imat4
Low-qualifier signed integer 4x4 matrix.
+
mat< 4, 4, int, highp > highp_imat4x4
High-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:822
+
mat< 2, 3, int, lowp > lowp_imat2x3
Low-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:795
+
mat< 3, 3, int, lowp > lowp_imat3x3
Low-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:798
+
mat< 3, 3, uint, defaultp > umat3
Unsigned integer 3x3 matrix.
+
mat< 3, 3, uint, lowp > lowp_umat3
Low-qualifier unsigned integer 3x3 matrix.
+
mat< 3, 3, uint, highp > highp_umat3x3
High-qualifier unsigned integer 3x3 matrix.
Definition: fwd.hpp:1025
+
mat< 3, 2, int, mediump > mediump_imat3x2
Medium-qualifier signed integer 3x2 matrix.
Definition: fwd.hpp:807
+
mat< 4, 4, uint, defaultp > umat4x4
Unsigned integer 4x4 matrix.
+
mat< 2, 3, int, mediump > mediump_imat2x3
Medium-qualifier signed integer 2x3 matrix.
Definition: fwd.hpp:805
+
mat< 2, 4, int, lowp > lowp_imat2x4
Low-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:796
+
mat< 2, 2, int, lowp > lowp_imat2x2
Low-qualifier signed integer 2x2 matrix.
Definition: fwd.hpp:794
+
mat< 3, 3, uint, defaultp > umat3x3
Unsigned integer 3x3 matrix.
+
mat< 2, 2, uint, mediump > mediump_umat2x2
Medium-qualifier unsigned integer 2x2 matrix.
Definition: fwd.hpp:1011
+
mat< 4, 4, int, mediump > mediump_imat4x4
Medium-qualifier signed integer 4x4 matrix.
Definition: fwd.hpp:812
+
mat< 2, 4, int, highp > highp_imat2x4
High-qualifier signed integer 2x4 matrix.
Definition: fwd.hpp:816
+
mat< 3, 3, int, highp > highp_imat3
High-qualifier signed integer 3x3 matrix.
+
mat< 2, 4, uint, highp > highp_umat2x4
High-qualifier unsigned integer 2x4 matrix.
Definition: fwd.hpp:1023
+
mat< 4, 4, int, mediump > mediump_imat4
Medium-qualifier signed integer 4x4 matrix.
+
mat< 3, 3, int, mediump > mediump_imat3x3
Medium-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:808
+
mat< 4, 3, uint, highp > highp_umat4x3
High-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1028
+
mat< 3, 3, int, highp > highp_imat3x3
High-qualifier signed integer 3x3 matrix.
Definition: fwd.hpp:818
+
mat< 4, 3, uint, mediump > mediump_umat4x3
Medium-qualifier unsigned integer 4x3 matrix.
Definition: fwd.hpp:1018
+
mat< 4, 3, uint, defaultp > umat4x3
Unsigned integer 4x3 matrix.
+
mat< 3, 3, int, defaultp > imat3x3
Signed integer 3x3 matrix.
+
mat< 4, 4, uint, mediump > mediump_umat4
Medium-qualifier unsigned integer 4x4 matrix.
+ + + + diff --git a/include/glm/doc/api/a01702.html b/include/glm/doc/api/a01702.html new file mode 100644 index 0000000..4b1f4fd --- /dev/null +++ b/include/glm/doc/api/a01702.html @@ -0,0 +1,129 @@ + + + + + + + +1.0.2 API documentation: matrix_transform.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ext/matrix_transform.hpp File Reference
+
+
+ +

GLM_EXT_matrix_transform +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR genType identity ()
 Builds an identity matrix.
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a look at view matrix based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a left handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH (vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
 Build a right handed look at view matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate (mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
 Builds a rotation 4 * 4 matrix created from an axis vector and an angle. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > scale (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a scale 4 * 4 matrix created from 3 scalars. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > shear (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &p, vec< 2, T, Q > const &l_x, vec< 2, T, Q > const &l_y, vec< 2, T, Q > const &l_z)
 Builds a scale 4 * 4 matrix created from point referent 3 shearers. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR mat< 4, 4, T, Q > translate (mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
 Builds a translation 4 * 4 matrix created from a vector of 3 components. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a01702_source.html b/include/glm/doc/api/a01702_source.html new file mode 100644 index 0000000..09a98e9 --- /dev/null +++ b/include/glm/doc/api/a01702_source.html @@ -0,0 +1,141 @@ + + + + + + + +1.0.2 API documentation: matrix_transform.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext/matrix_transform.hpp
+
+
+Go to the documentation of this file.
1 
+
20 #pragma once
+
21 
+
22 // Dependencies
+
23 #include "../gtc/constants.hpp"
+
24 #include "../geometric.hpp"
+
25 #include "../trigonometric.hpp"
+
26 #include "../matrix.hpp"
+
27 
+
28 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
29 # pragma message("GLM: GLM_EXT_matrix_transform extension included")
+
30 #endif
+
31 
+
32 namespace glm
+
33 {
+
36 
+
38  template<typename genType>
+
39  GLM_FUNC_DECL GLM_CONSTEXPR genType identity();
+
40 
+
63  template<typename T, qualifier Q>
+
64  GLM_FUNC_DECL GLM_CONSTEXPR mat<4, 4, T, Q> translate(
+
65  mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);
+
66 
+
79  template<typename T, qualifier Q>
+
80  GLM_FUNC_DECL mat<4, 4, T, Q> rotate(
+
81  mat<4, 4, T, Q> const& m, T angle, vec<3, T, Q> const& axis);
+
82 
+
94  template<typename T, qualifier Q>
+
95  GLM_FUNC_DECL mat<4, 4, T, Q> scale(
+
96  mat<4, 4, T, Q> const& m, vec<3, T, Q> const& v);
+
97 
+
121  template <typename T, qualifier Q>
+
122  GLM_FUNC_QUALIFIER mat<4, 4, T, Q> shear(
+
123  mat<4, 4, T, Q> const &m, vec<3, T, Q> const& p, vec<2, T, Q> const &l_x, vec<2, T, Q> const &l_y, vec<2, T, Q> const &l_z);
+
124 
+
135  template<typename T, qualifier Q>
+
136  GLM_FUNC_DECL mat<4, 4, T, Q> lookAtRH(
+
137  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
+
138 
+
149  template<typename T, qualifier Q>
+
150  GLM_FUNC_DECL mat<4, 4, T, Q> lookAtLH(
+
151  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
+
152 
+
164  template<typename T, qualifier Q>
+
165  GLM_FUNC_DECL mat<4, 4, T, Q> lookAt(
+
166  vec<3, T, Q> const& eye, vec<3, T, Q> const& center, vec<3, T, Q> const& up);
+
167 
+
169 }//namespace glm
+
170 
+
171 #include "matrix_transform.inl"
+
+
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAt(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a look at view matrix based on the default handedness.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)
Builds a rotation 4 * 4 matrix created from an axis vector and an angle.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a scale 4 * 4 matrix created from 3 scalars.
+
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > shear(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &p, vec< 2, T, Q > const &l_x, vec< 2, T, Q > const &l_y, vec< 2, T, Q > const &l_z)
Builds a scale 4 * 4 matrix created from point referent 3 shearers.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtLH(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a left handed look at view matrix.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType identity()
Builds an identity matrix.
+
GLM_FUNC_DECL T angle(qua< T, Q > const &x)
Returns the quaternion rotation angle.
+
GLM_FUNC_DECL GLM_CONSTEXPR mat< 4, 4, T, Q > translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)
Builds a translation 4 * 4 matrix created from a vector of 3 components.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > lookAtRH(vec< 3, T, Q > const &eye, vec< 3, T, Q > const &center, vec< 3, T, Q > const &up)
Build a right handed look at view matrix.
+
GLM_FUNC_DECL vec< 3, T, Q > axis(qua< T, Q > const &x)
Returns the q rotation axis.
+ + + + diff --git a/include/glm/doc/api/a01705.html b/include/glm/doc/api/a01705.html new file mode 100644 index 0000000..302bfc7 --- /dev/null +++ b/include/glm/doc/api/a01705.html @@ -0,0 +1,95 @@ + + + + + + + +1.0.2 API documentation: matrix_transform.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/matrix_transform.hpp File Reference
+
+ + + + + diff --git a/include/glm/doc/api/a01705_source.html b/include/glm/doc/api/a01705_source.html new file mode 100644 index 0000000..b523fd5 --- /dev/null +++ b/include/glm/doc/api/a01705_source.html @@ -0,0 +1,98 @@ + + + + + + + +1.0.2 API documentation: matrix_transform.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/matrix_transform.hpp
+
+
+Go to the documentation of this file.
1 
+
21 #pragma once
+
22 
+
23 // Dependencies
+
24 #include "../mat4x4.hpp"
+
25 #include "../vec2.hpp"
+
26 #include "../vec3.hpp"
+
27 #include "../vec4.hpp"
+
28 #include "../ext/matrix_projection.hpp"
+
29 #include "../ext/matrix_clip_space.hpp"
+
30 #include "../ext/matrix_transform.hpp"
+
31 
+
32 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
33 # pragma message("GLM: GLM_GTC_matrix_transform extension included")
+
34 #endif
+
35 
+
36 #include "matrix_transform.inl"
+
+ + + + diff --git a/include/glm/doc/api/a01708.html b/include/glm/doc/api/a01708.html new file mode 100644 index 0000000..c20d760 --- /dev/null +++ b/include/glm/doc/api/a01708.html @@ -0,0 +1,315 @@ + + + + + + + +1.0.2 API documentation: packing.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/packing.hpp File Reference
+
+
+ +

GLM_GTC_packing +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GLM_FUNC_DECL uint32 packF2x11_1x10 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
GLM_FUNC_DECL uint32 packF3x9_E1x5 (vec3 const &v)
 First, converts the first two components of the normalized floating-point value v into 11-bit signless floating-point values. More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, uint16, Q > packHalf (vec< L, float, Q > const &v)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
GLM_FUNC_DECL uint16 packHalf1x16 (float v)
 Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 16-bit floating-point representation found in the OpenGL Specification, and then packing this 16-bit value into a 16-bit unsigned integer. More...
 
GLM_FUNC_DECL uint64 packHalf4x16 (vec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification, and then packing these four 16-bit values into a 64-bit unsigned integer. More...
 
GLM_FUNC_DECL uint32 packI3x10_1x2 (ivec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component signed integer vector to the 10-10-10-2-bit signed integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL int packInt2x16 (i16vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt2x32 (i32vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int16 packInt2x8 (i8vec2 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int64 packInt4x16 (i16vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
GLM_FUNC_DECL int32 packInt4x8 (i8vec4 const &v)
 Convert each component from an integer vector into a packed integer. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > packRGBM (vec< 3, T, Q > const &rgb)
 Returns an unsigned integer vector obtained by converting the components of a floating-point vector to the 16-bit floating-point representation found in the OpenGL Specification. More...
 
template<typename intType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, intType, Q > packSnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into signed integer values. More...
 
GLM_FUNC_DECL uint16 packSnorm1x16 (float v)
 First, converts the normalized floating-point value v into 16-bit integer value. More...
 
GLM_FUNC_DECL uint8 packSnorm1x8 (float s)
 First, converts the normalized floating-point value v into 8-bit integer value. More...
 
GLM_FUNC_DECL uint16 packSnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packSnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit signed integer values. More...
 
GLM_FUNC_DECL uint64 packSnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint32 packU3x10_1x2 (uvec4 const &v)
 Returns an unsigned integer obtained by converting the components of a four-component unsigned integer vector to the 10-10-10-2-bit unsigned integer representation found in the OpenGL Specification, and then packing these four values into a 32-bit unsigned integer. More...
 
GLM_FUNC_DECL uint packUint2x16 (u16vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint2x32 (u32vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint16 packUint2x8 (u8vec2 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint64 packUint4x16 (u16vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
GLM_FUNC_DECL uint32 packUint4x8 (u8vec4 const &v)
 Convert each component from an integer vector into a packed unsigned integer. More...
 
template<typename uintType , length_t L, typename floatType , qualifier Q>
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm (vec< L, floatType, Q > const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm1x16 (float v)
 First, converts the normalized floating-point value v into a 16-bit integer value. More...
 
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm1x8 (float v)
 First, converts the normalized floating-point value v into a 8-bit integer value. More...
 
GLM_FUNC_DECL uint8 packUnorm2x3_1x2 (vec3 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint8 packUnorm2x4 (vec2 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm2x8 (vec2 const &v)
 First, converts each component of the normalized floating-point value v into 8-bit integer values. More...
 
GLM_FUNC_DECL uint32 packUnorm3x10_1x2 (vec4 const &v)
 First, converts the first three components of the normalized floating-point value v into 10-bit unsigned integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm3x5_1x1 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL uint64 packUnorm4x16 (vec4 const &v)
 First, converts each component of the normalized floating-point value v into 16-bit integer values. More...
 
GLM_FUNC_DECL uint16 packUnorm4x4 (vec4 const &v)
 Convert each component of the normalized floating-point vector into unsigned integer values. More...
 
GLM_FUNC_DECL vec3 unpackF2x11_1x10 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
GLM_FUNC_DECL vec3 unpackF3x9_E1x5 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and one 10-bit signless floating-point value . More...
 
template<length_t L, qualifier Q>
GLM_FUNC_DECL vec< L, float, Q > unpackHalf (vec< L, uint16, Q > const &p)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL float unpackHalf1x16 (uint16 v)
 Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into a 16-bit value, interpreted as a 16-bit floating-point number according to the OpenGL Specification, and converting it to 32-bit floating-point values. More...
 
GLM_FUNC_DECL vec4 unpackHalf4x16 (uint64 p)
 Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigned integer into four 16-bit values, interpreting those values as 16-bit floating-point numbers according to the OpenGL Specification, and converting them to 32-bit floating-point values. More...
 
GLM_FUNC_DECL ivec4 unpackI3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers. More...
 
GLM_FUNC_DECL i16vec2 unpackInt2x16 (int p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i32vec2 unpackInt2x32 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec2 unpackInt2x8 (int16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i16vec4 unpackInt4x16 (int64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL i8vec4 unpackInt4x8 (int32 p)
 Convert a packed integer into an integer vector. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM (vec< 4, T, Q > const &rgbm)
 Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bit floating-point numbers and converting them to 32-bit floating-point values. More...
 
template<typename floatType , length_t L, typename intType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm (vec< L, intType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackSnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers. More...
 
GLM_FUNC_DECL float unpackSnorm1x8 (uint8 p)
 First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers. More...
 
GLM_FUNC_DECL vec2 unpackSnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackSnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL uvec4 unpackU3x10_1x2 (uint32 p)
 Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers. More...
 
GLM_FUNC_DECL u16vec2 unpackUint2x16 (uint p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u32vec2 unpackUint2x32 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec2 unpackUint2x8 (uint16 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u16vec4 unpackUint4x16 (uint64 p)
 Convert a packed integer into an integer vector. More...
 
GLM_FUNC_DECL u8vec4 unpackUint4x8 (uint32 p)
 Convert a packed integer into an integer vector. More...
 
template<typename floatType , length_t L, typename uintType , qualifier Q>
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm (vec< L, uintType, Q > const &v)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x16 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL float unpackUnorm1x8 (uint8 p)
 Convert a single 8-bit integer to a normalized floating-point value. More...
 
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x4 (uint8 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec2 unpackUnorm2x8 (uint16 p)
 First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2 (uint32 p)
 First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x16 (uint64 p)
 First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers. More...
 
GLM_FUNC_DECL vec4 unpackUnorm4x4 (uint16 p)
 Convert a packed integer to a normalized floating-point vector. More...
 
+

Detailed Description

+

GLM_GTC_packing

+
See also
Core features (dependence)
+ +

Definition in file gtc/packing.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01708_source.html b/include/glm/doc/api/a01708_source.html new file mode 100644 index 0000000..ace8479 --- /dev/null +++ b/include/glm/doc/api/a01708_source.html @@ -0,0 +1,342 @@ + + + + + + + +1.0.2 API documentation: packing.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/packing.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "type_precision.hpp"
+
18 #include "../ext/vector_packing.hpp"
+
19 
+
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTC_packing extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
40  GLM_FUNC_DECL uint8 packUnorm1x8(float v);
+
41 
+
52  GLM_FUNC_DECL float unpackUnorm1x8(uint8 p);
+
53 
+
68  GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const& v);
+
69 
+
84  GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p);
+
85 
+
97  GLM_FUNC_DECL uint8 packSnorm1x8(float s);
+
98 
+
110  GLM_FUNC_DECL float unpackSnorm1x8(uint8 p);
+
111 
+
126  GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const& v);
+
127 
+
142  GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p);
+
143 
+
155  GLM_FUNC_DECL uint16 packUnorm1x16(float v);
+
156 
+
168  GLM_FUNC_DECL float unpackUnorm1x16(uint16 p);
+
169 
+
184  GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const& v);
+
185 
+
200  GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p);
+
201 
+
213  GLM_FUNC_DECL uint16 packSnorm1x16(float v);
+
214 
+
226  GLM_FUNC_DECL float unpackSnorm1x16(uint16 p);
+
227 
+
242  GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const& v);
+
243 
+
258  GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p);
+
259 
+
269  GLM_FUNC_DECL uint16 packHalf1x16(float v);
+
270 
+
280  GLM_FUNC_DECL float unpackHalf1x16(uint16 v);
+
281 
+
293  GLM_FUNC_DECL uint64 packHalf4x16(vec4 const& v);
+
294 
+
306  GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p);
+
307 
+
319  GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const& v);
+
320 
+
330  GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p);
+
331 
+
343  GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const& v);
+
344 
+
354  GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p);
+
355 
+
372  GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const& v);
+
373 
+
389  GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p);
+
390 
+
407  GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const& v);
+
408 
+
424  GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p);
+
425 
+
435  GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const& v);
+
436 
+
445  GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p);
+
446 
+
447 
+
459  GLM_FUNC_DECL uint32 packF3x9_E1x5(vec3 const& v);
+
460 
+
471  GLM_FUNC_DECL vec3 unpackF3x9_E1x5(uint32 p);
+
472 
+
481  template<length_t L, typename T, qualifier Q>
+
482  GLM_FUNC_DECL vec<4, T, Q> packRGBM(vec<3, T, Q> const& rgb);
+
483 
+
491  template<length_t L, typename T, qualifier Q>
+
492  GLM_FUNC_DECL vec<3, T, Q> unpackRGBM(vec<4, T, Q> const& rgbm);
+
493 
+
502  template<length_t L, qualifier Q>
+
503  GLM_FUNC_DECL vec<L, uint16, Q> packHalf(vec<L, float, Q> const& v);
+
504 
+
512  template<length_t L, qualifier Q>
+
513  GLM_FUNC_DECL vec<L, float, Q> unpackHalf(vec<L, uint16, Q> const& p);
+
514 
+
519  template<typename uintType, length_t L, typename floatType, qualifier Q>
+
520  GLM_FUNC_DECL vec<L, uintType, Q> packUnorm(vec<L, floatType, Q> const& v);
+
521 
+
526  template<typename floatType, length_t L, typename uintType, qualifier Q>
+
527  GLM_FUNC_DECL vec<L, floatType, Q> unpackUnorm(vec<L, uintType, Q> const& v);
+
528 
+
533  template<typename intType, length_t L, typename floatType, qualifier Q>
+
534  GLM_FUNC_DECL vec<L, intType, Q> packSnorm(vec<L, floatType, Q> const& v);
+
535 
+
540  template<typename floatType, length_t L, typename intType, qualifier Q>
+
541  GLM_FUNC_DECL vec<L, floatType, Q> unpackSnorm(vec<L, intType, Q> const& v);
+
542 
+
547  GLM_FUNC_DECL uint8 packUnorm2x4(vec2 const& v);
+
548 
+
553  GLM_FUNC_DECL vec2 unpackUnorm2x4(uint8 p);
+
554 
+
559  GLM_FUNC_DECL uint16 packUnorm4x4(vec4 const& v);
+
560 
+
565  GLM_FUNC_DECL vec4 unpackUnorm4x4(uint16 p);
+
566 
+
571  GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5(vec3 const& v);
+
572 
+ +
578 
+
583  GLM_FUNC_DECL uint16 packUnorm3x5_1x1(vec4 const& v);
+
584 
+
589  GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1(uint16 p);
+
590 
+
595  GLM_FUNC_DECL uint8 packUnorm2x3_1x2(vec3 const& v);
+
596 
+
601  GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2(uint8 p);
+
602 
+
603 
+
604 
+
609  GLM_FUNC_DECL int16 packInt2x8(i8vec2 const& v);
+
610 
+
615  GLM_FUNC_DECL i8vec2 unpackInt2x8(int16 p);
+
616 
+
621  GLM_FUNC_DECL uint16 packUint2x8(u8vec2 const& v);
+
622 
+
627  GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p);
+
628 
+
633  GLM_FUNC_DECL int32 packInt4x8(i8vec4 const& v);
+
634 
+
639  GLM_FUNC_DECL i8vec4 unpackInt4x8(int32 p);
+
640 
+
645  GLM_FUNC_DECL uint32 packUint4x8(u8vec4 const& v);
+
646 
+
651  GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p);
+
652 
+
657  GLM_FUNC_DECL int packInt2x16(i16vec2 const& v);
+
658 
+
663  GLM_FUNC_DECL i16vec2 unpackInt2x16(int p);
+
664 
+
669  GLM_FUNC_DECL int64 packInt4x16(i16vec4 const& v);
+
670 
+
675  GLM_FUNC_DECL i16vec4 unpackInt4x16(int64 p);
+
676 
+
681  GLM_FUNC_DECL uint packUint2x16(u16vec2 const& v);
+
682 
+
687  GLM_FUNC_DECL u16vec2 unpackUint2x16(uint p);
+
688 
+
693  GLM_FUNC_DECL uint64 packUint4x16(u16vec4 const& v);
+
694 
+
699  GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p);
+
700 
+
705  GLM_FUNC_DECL int64 packInt2x32(i32vec2 const& v);
+
706 
+
711  GLM_FUNC_DECL i32vec2 unpackInt2x32(int64 p);
+
712 
+
717  GLM_FUNC_DECL uint64 packUint2x32(u32vec2 const& v);
+
718 
+
723  GLM_FUNC_DECL u32vec2 unpackUint2x32(uint64 p);
+
724 
+
726 }// namespace glm
+
727 
+
728 #include "packing.inl"
+
+
vec< 2, int16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
+
GLM_FUNC_DECL i32vec2 unpackInt2x32(int64 p)
Convert a packed integer into an integer vector.
+
detail::uint32 uint32
32 bit unsigned integer type.
+
GLM_FUNC_DECL i8vec4 unpackInt4x8(int32 p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL vec< 4, T, Q > packRGBM(vec< 3, T, Q > const &rgb)
Returns an unsigned integer vector obtained by converting the components of a floating-point vector t...
+
GLM_FUNC_DECL uint16 packUnorm3x5_1x1(vec4 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
GLM_FUNC_DECL u8vec2 unpackUint2x8(uint16 p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL uint32 packI3x10_1x2(ivec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component signed integer ...
+
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
+
GLM_FUNC_DECL uint32 packUnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit unsig...
+
GLM_FUNC_DECL vec< L, floatType, Q > unpackSnorm(vec< L, intType, Q > const &v)
Convert a packed integer to a normalized floating-point vector.
+
vec< 2, uint16, defaultp > u16vec2
16 bit unsigned integer vector of 2 components type.
+
vec< 4, uint8, defaultp > u8vec4
8 bit unsigned integer vector of 4 components type.
+
GLM_FUNC_DECL uint32 packU3x10_1x2(uvec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component unsigned intege...
+
GLM_FUNC_DECL vec3 unpackF2x11_1x10(uint32 p)
First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and ...
+
GLM_FUNC_DECL i16vec2 unpackInt2x16(int p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL float unpackUnorm1x8(uint8 p)
Convert a single 8-bit integer to a normalized floating-point value.
+
GLM_FUNC_DECL vec< L, float, Q > unpackHalf(vec< L, uint16, Q > const &p)
Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bi...
+
vec< 2, int32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
+
GLM_FUNC_DECL uint8 packUnorm1x8(float v)
First, converts the normalized floating-point value v into a 8-bit integer value.
+
GLM_FUNC_DECL vec4 unpackUnorm3x5_1x1(uint16 p)
Convert a packed integer to a normalized floating-point vector.
+
GLM_FUNC_DECL uint32 packF2x11_1x10(vec3 const &v)
First, converts the first two components of the normalized floating-point value v into 11-bit signles...
+
GLM_FUNC_DECL int64 packInt2x32(i32vec2 const &v)
Convert each component from an integer vector into a packed integer.
+
GLM_FUNC_DECL u16vec4 unpackUint4x16(uint64 p)
Convert a packed integer into an integer vector.
+
detail::int16 int16
16 bit signed integer type.
+
GLM_FUNC_DECL float unpackSnorm1x8(uint8 p)
First, unpacks a single 8-bit unsigned integer p into a single 8-bit signed integers.
+
detail::uint64 uint64
64 bit unsigned integer type.
+
GLM_FUNC_DECL vec4 unpackHalf4x16(uint64 p)
Returns a four-component floating-point vector with components obtained by unpacking a 64-bit unsigne...
+
GLM_FUNC_DECL vec2 unpackUnorm2x4(uint8 p)
Convert a packed integer to a normalized floating-point vector.
+
vec< 2, int8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+
GLM_GTC_type_precision
+
GLM_FUNC_DECL vec4 unpackUnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
+
GLM_FUNC_DECL vec2 unpackSnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit signed integers.
+
GLM_FUNC_DECL uint8 packUnorm2x4(vec2 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
+
GLM_FUNC_DECL uint16 packUnorm1x5_1x6_1x5(vec3 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
GLM_FUNC_DECL vec< L, uint16, Q > packHalf(vec< L, float, Q > const &v)
Returns an unsigned integer vector obtained by converting the components of a floating-point vector t...
+
GLM_FUNC_DECL float unpackUnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a of 16-bit unsigned integers.
+
GLM_FUNC_DECL int16 packInt2x8(i8vec2 const &v)
Convert each component from an integer vector into a packed integer.
+
GLM_FUNC_DECL vec4 unpackUnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit unsigned integers.
+
vec< 4, int16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
+
GLM_FUNC_DECL uint64 packUnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values.
+
detail::uint8 uint8
8 bit unsigned integer type.
+
GLM_FUNC_DECL uint64 packUint2x32(u32vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
+
GLM_FUNC_DECL vec4 unpackUnorm4x4(uint16 p)
Convert a packed integer to a normalized floating-point vector.
+
vec< 4, uint16, defaultp > u16vec4
16 bit unsigned integer vector of 4 components type.
+
GLM_FUNC_DECL vec< L, intType, Q > packSnorm(vec< L, floatType, Q > const &v)
Convert each component of the normalized floating-point vector into signed integer values.
+
GLM_FUNC_DECL vec4 unpackSnorm3x10_1x2(uint32 p)
First, unpacks a single 32-bit unsigned integer p into four 16-bit signed integers.
+
GLM_FUNC_DECL uint32 packF3x9_E1x5(vec3 const &v)
First, converts the first two components of the normalized floating-point value v into 11-bit signles...
+
GLM_FUNC_DECL u16vec2 unpackUint2x16(uint p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL float unpackSnorm1x16(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a single 16-bit signed integers.
+
GLM_FUNC_DECL vec< L, floatType, Q > unpackUnorm(vec< L, uintType, Q > const &v)
Convert a packed integer to a normalized floating-point vector.
+
GLM_FUNC_DECL vec< L, uintType, Q > packUnorm(vec< L, floatType, Q > const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
GLM_FUNC_DECL int packInt2x16(i16vec2 const &v)
Convert each component from an integer vector into a packed integer.
+
GLM_FUNC_DECL uint64 packUint4x16(u16vec4 const &v)
Convert each component from an integer vector into a packed unsigned integer.
+
GLM_FUNC_DECL uint8 packUnorm2x3_1x2(vec3 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
GLM_FUNC_DECL vec3 unpackUnorm2x3_1x2(uint8 p)
Convert a packed integer to a normalized floating-point vector.
+
GLM_FUNC_DECL uint16 packHalf1x16(float v)
Returns an unsigned integer obtained by converting the components of a floating-point scalar to the 1...
+
GLM_FUNC_DECL i16vec4 unpackInt4x16(int64 p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL uint16 packUnorm4x4(vec4 const &v)
Convert each component of the normalized floating-point vector into unsigned integer values.
+
GLM_FUNC_DECL uint16 packSnorm1x16(float v)
First, converts the normalized floating-point value v into 16-bit integer value.
+
GLM_FUNC_DECL u8vec4 unpackUint4x8(uint32 p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL uint32 packSnorm3x10_1x2(vec4 const &v)
First, converts the first three components of the normalized floating-point value v into 10-bit signe...
+
GLM_FUNC_DECL u32vec2 unpackUint2x32(uint64 p)
Convert a packed integer into an integer vector.
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
GLM_FUNC_DECL uint16 packUint2x8(u8vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
+
GLM_FUNC_DECL int64 packInt4x16(i16vec4 const &v)
Convert each component from an integer vector into a packed integer.
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+
GLM_FUNC_DECL vec< 3, T, Q > unpackRGBM(vec< 4, T, Q > const &rgbm)
Returns a floating-point vector with components obtained by reinterpreting an integer vector as 16-bi...
+
GLM_FUNC_DECL vec3 unpackUnorm1x5_1x6_1x5(uint16 p)
Convert a packed integer to a normalized floating-point vector.
+
GLM_FUNC_DECL uvec4 unpackU3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit unsigned integers.
+
vec< 2, uint32, defaultp > u32vec2
32 bit unsigned integer vector of 2 components type.
+
GLM_FUNC_DECL uint16 packUnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values.
+
vec< 2, uint8, defaultp > u8vec2
8 bit unsigned integer vector of 2 components type.
+
GLM_FUNC_DECL ivec4 unpackI3x10_1x2(uint32 p)
Unpacks a single 32-bit unsigned integer p into three 10-bit and one 2-bit signed integers.
+
GLM_FUNC_DECL int32 packInt4x8(i8vec4 const &v)
Convert each component from an integer vector into a packed integer.
+
GLM_FUNC_DECL float unpackHalf1x16(uint16 v)
Returns a floating-point scalar with components obtained by unpacking a 16-bit unsigned integer into ...
+
GLM_FUNC_DECL uint packUint2x16(u16vec2 const &v)
Convert each component from an integer vector into a packed unsigned integer.
+
GLM_FUNC_DECL uint64 packHalf4x16(vec4 const &v)
Returns an unsigned integer obtained by converting the components of a four-component floating-point ...
+
vec< 4, int8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
+
detail::int64 int64
64 bit signed integer type.
+
detail::uint16 uint16
16 bit unsigned integer type.
+
GLM_FUNC_DECL uint64 packSnorm4x16(vec4 const &v)
First, converts each component of the normalized floating-point value v into 16-bit integer values.
+
GLM_FUNC_DECL uint32 packUint4x8(u8vec4 const &v)
Convert each component from an integer vector into a packed unsigned integer.
+
GLM_FUNC_DECL i8vec2 unpackInt2x8(int16 p)
Convert a packed integer into an integer vector.
+
GLM_FUNC_DECL uint16 packUnorm1x16(float v)
First, converts the normalized floating-point value v into a 16-bit integer value.
+
GLM_FUNC_DECL vec2 unpackUnorm2x8(uint16 p)
First, unpacks a single 16-bit unsigned integer p into a pair of 8-bit unsigned integers.
+
GLM_FUNC_DECL vec3 unpackF3x9_E1x5(uint32 p)
First, unpacks a single 32-bit unsigned integer p into two 11-bit signless floating-point values and ...
+
GLM_FUNC_DECL vec4 unpackSnorm4x16(uint64 p)
First, unpacks a single 64-bit unsigned integer p into four 16-bit signed integers.
+
GLM_FUNC_DECL uint16 packSnorm2x8(vec2 const &v)
First, converts each component of the normalized floating-point value v into 8-bit integer values.
+
detail::int32 int32
32 bit signed integer type.
+
GLM_FUNC_DECL uint8 packSnorm1x8(float s)
First, converts the normalized floating-point value v into 8-bit integer value.
+ + + + diff --git a/include/glm/doc/api/a01711.html b/include/glm/doc/api/a01711.html new file mode 100644 index 0000000..b98a2d1 --- /dev/null +++ b/include/glm/doc/api/a01711.html @@ -0,0 +1,159 @@ + + + + + + + +1.0.2 API documentation: quaternion.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/quaternion.hpp File Reference
+
+
+ +

GLM_GTC_quaternion +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles (qua< T, Q > const &x)
 Returns euler angles, pitch as x, yaw as y, roll as z. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x > y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x >= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThan (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison result of x < y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThanEqual (qua< T, Q > const &x, qua< T, Q > const &y)
 Returns the component-wise comparison of result x <= y. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T pitch (qua< T, Q > const &x)
 Returns pitch value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 3, 3, T, Q > const &x)
 Converts a pure rotation 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quat_cast (mat< 4, 4, T, Q > const &x)
 Converts a pure rotation 4 * 4 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAt (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a look at quaternion based on the default handedness. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtLH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a left-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > quatLookAtRH (vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
 Build a right-handed look at quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T roll (qua< T, Q > const &x)
 Returns roll value of euler angles expressed in radians. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T yaw (qua< T, Q > const &x)
 Returns yaw value of euler angles expressed in radians. More...
 
+

Detailed Description

+

GLM_GTC_quaternion

+
See also
Core features (dependence)
+
+GLM_GTC_constants (dependence)
+ +

Definition in file gtc/quaternion.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01711_source.html b/include/glm/doc/api/a01711_source.html new file mode 100644 index 0000000..fc4a005 --- /dev/null +++ b/include/glm/doc/api/a01711_source.html @@ -0,0 +1,176 @@ + + + + + + + +1.0.2 API documentation: quaternion.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../gtc/constants.hpp"
+
18 #include "../gtc/matrix_transform.hpp"
+
19 #include "../ext/vector_relational.hpp"
+
20 #include "../ext/quaternion_common.hpp"
+
21 #include "../ext/quaternion_float.hpp"
+
22 #include "../ext/quaternion_float_precision.hpp"
+
23 #include "../ext/quaternion_double.hpp"
+
24 #include "../ext/quaternion_double_precision.hpp"
+
25 #include "../ext/quaternion_relational.hpp"
+
26 #include "../ext/quaternion_geometric.hpp"
+
27 #include "../ext/quaternion_trigonometric.hpp"
+
28 #include "../ext/quaternion_transform.hpp"
+
29 #include "../detail/type_mat3x3.hpp"
+
30 #include "../detail/type_mat4x4.hpp"
+
31 #include "../detail/type_vec3.hpp"
+
32 #include "../detail/type_vec4.hpp"
+
33 
+
34 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
35 # pragma message("GLM: GLM_GTC_quaternion extension included")
+
36 #endif
+
37 
+
38 namespace glm
+
39 {
+
42 
+
49  template<typename T, qualifier Q>
+
50  GLM_FUNC_DECL vec<3, T, Q> eulerAngles(qua<T, Q> const& x);
+
51 
+
57  template<typename T, qualifier Q>
+
58  GLM_FUNC_DECL T roll(qua<T, Q> const& x);
+
59 
+
65  template<typename T, qualifier Q>
+
66  GLM_FUNC_DECL T pitch(qua<T, Q> const& x);
+
67 
+
73  template<typename T, qualifier Q>
+
74  GLM_FUNC_DECL T yaw(qua<T, Q> const& x);
+
75 
+
81  template<typename T, qualifier Q>
+
82  GLM_FUNC_DECL mat<3, 3, T, Q> mat3_cast(qua<T, Q> const& x);
+
83 
+
89  template<typename T, qualifier Q>
+
90  GLM_FUNC_DECL mat<4, 4, T, Q> mat4_cast(qua<T, Q> const& x);
+
91 
+
97  template<typename T, qualifier Q>
+
98  GLM_FUNC_DECL qua<T, Q> quat_cast(mat<3, 3, T, Q> const& x);
+
99 
+
105  template<typename T, qualifier Q>
+
106  GLM_FUNC_DECL qua<T, Q> quat_cast(mat<4, 4, T, Q> const& x);
+
107 
+
114  template<typename T, qualifier Q>
+
115  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> lessThan(qua<T, Q> const& x, qua<T, Q> const& y);
+
116 
+
123  template<typename T, qualifier Q>
+
124  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> lessThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);
+
125 
+
132  template<typename T, qualifier Q>
+
133  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> greaterThan(qua<T, Q> const& x, qua<T, Q> const& y);
+
134 
+
141  template<typename T, qualifier Q>
+
142  GLM_FUNC_DECL GLM_CONSTEXPR vec<4, bool, Q> greaterThanEqual(qua<T, Q> const& x, qua<T, Q> const& y);
+
143 
+
148  template<typename T, qualifier Q>
+
149  GLM_FUNC_DECL qua<T, Q> quatLookAt(
+
150  vec<3, T, Q> const& direction,
+
151  vec<3, T, Q> const& up);
+
152 
+
157  template<typename T, qualifier Q>
+
158  GLM_FUNC_DECL qua<T, Q> quatLookAtRH(
+
159  vec<3, T, Q> const& direction,
+
160  vec<3, T, Q> const& up);
+
161 
+
166  template<typename T, qualifier Q>
+
167  GLM_FUNC_DECL qua<T, Q> quatLookAtLH(
+
168  vec<3, T, Q> const& direction,
+
169  vec<3, T, Q> const& up);
+
171 } //namespace glm
+
172 
+
173 #include "quaternion.inl"
+
+
GLM_FUNC_DECL T roll(qua< T, Q > const &x)
Returns roll value of euler angles expressed in radians.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x >= y.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThan(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison result of x < y.
+
GLM_FUNC_DECL qua< T, Q > quat_cast(mat< 4, 4, T, Q > const &x)
Converts a pure rotation 4 * 4 matrix to a quaternion.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x > y.
+
GLM_FUNC_DECL qua< T, Q > quatLookAtRH(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a right-handed look at quaternion.
+
GLM_FUNC_DECL qua< T, Q > quatLookAtLH(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a left-handed look at quaternion.
+
GLM_FUNC_DECL qua< T, Q > quatLookAt(vec< 3, T, Q > const &direction, vec< 3, T, Q > const &up)
Build a look at quaternion based on the default handedness.
+
GLM_FUNC_DECL T pitch(qua< T, Q > const &x)
Returns pitch value of euler angles expressed in radians.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 4, bool, Q > lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)
Returns the component-wise comparison of result x <= y.
+
GLM_FUNC_DECL vec< 3, T, Q > eulerAngles(qua< T, Q > const &x)
Returns euler angles, pitch as x, yaw as y, roll as z.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL T yaw(qua< T, Q > const &x)
Returns yaw value of euler angles expressed in radians.
+ + + + diff --git a/include/glm/doc/api/a01714.html b/include/glm/doc/api/a01714.html new file mode 100644 index 0000000..e6cd43a --- /dev/null +++ b/include/glm/doc/api/a01714.html @@ -0,0 +1,163 @@ + + + + + + + +1.0.2 API documentation: quaternion.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtx/quaternion.hpp File Reference
+
+
+ +

GLM_GTX_quaternion +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Compute a cross product between a quaternion and a vector. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross (vec< 3, T, Q > const &v, qua< T, Q > const &q)
 Compute a cross product between a vector and a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL T extractRealComponent (qua< T, Q > const &q)
 Extract the real component of a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > fastMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion normalized linear interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > intermediate (qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
 Returns an intermediate control point for squad interpolation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR T length2 (qua< T, Q > const &q)
 Returns the squared length of x. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > quat_identity ()
 Create an identity quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 3, T, Q > rotate (qua< T, Q > const &q, vec< 3, T, Q > const &v)
 Returns quarternion square root. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL vec< 4, T, Q > rotate (qua< T, Q > const &q, vec< 4, T, Q > const &v)
 Rotates a 4 components vector by a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > rotation (vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
 Compute the rotation between two vectors. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > shortMix (qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
 Quaternion interpolation using the rotation short path. More...
 
template<typename T , qualifier Q>
GLM_FUNC_DECL qua< T, Q > squad (qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
 Compute a point on a path according squad equation. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > toMat3 (qua< T, Q > const &x)
 Converts a quaternion to a 3 * 3 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > toMat4 (qua< T, Q > const &x)
 Converts a quaternion to a 4 * 4 matrix. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER qua< T, Q > toQuat (mat< 3, 3, T, Q > const &x)
 Converts a 3 * 3 matrix to a quaternion. More...
 
template<typename T , qualifier Q>
GLM_FUNC_QUALIFIER qua< T, Q > toQuat (mat< 4, 4, T, Q > const &x)
 Converts a 4 * 4 matrix to a quaternion. More...
 
+

Detailed Description

+

GLM_GTX_quaternion

+
See also
Core features (dependence)
+
+gtx_extented_min_max (dependence)
+ +

Definition in file gtx/quaternion.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01714_source.html b/include/glm/doc/api/a01714_source.html new file mode 100644 index 0000000..784ebd9 --- /dev/null +++ b/include/glm/doc/api/a01714_source.html @@ -0,0 +1,200 @@ + + + + + + + +1.0.2 API documentation: quaternion.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/quaternion.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../glm.hpp"
+
18 #include "../gtc/constants.hpp"
+
19 #include "../gtc/quaternion.hpp"
+
20 #include "../ext/quaternion_exponential.hpp"
+
21 #include "../gtx/norm.hpp"
+
22 
+
23 #ifndef GLM_ENABLE_EXPERIMENTAL
+
24 # error "GLM: GLM_GTX_quaternion is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
25 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
26 # pragma message("GLM: GLM_GTX_quaternion extension included")
+
27 #endif
+
28 
+
29 namespace glm
+
30 {
+
33 
+
37  template<typename T, qualifier Q>
+
38  GLM_FUNC_DECL GLM_CONSTEXPR qua<T, Q> quat_identity();
+
39 
+
43  template<typename T, qualifier Q>
+
44  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> cross(
+
45  qua<T, Q> const& q,
+
46  vec<3, T, Q> const& v);
+
47 
+
51  template<typename T, qualifier Q>
+
52  GLM_FUNC_DECL GLM_CONSTEXPR vec<3, T, Q> cross(
+
53  vec<3, T, Q> const& v,
+
54  qua<T, Q> const& q);
+
55 
+
60  template<typename T, qualifier Q>
+
61  GLM_FUNC_DECL qua<T, Q> squad(
+
62  qua<T, Q> const& q1,
+
63  qua<T, Q> const& q2,
+
64  qua<T, Q> const& s1,
+
65  qua<T, Q> const& s2,
+
66  T const& h);
+
67 
+
71  template<typename T, qualifier Q>
+
72  GLM_FUNC_DECL qua<T, Q> intermediate(
+
73  qua<T, Q> const& prev,
+
74  qua<T, Q> const& curr,
+
75  qua<T, Q> const& next);
+
76 
+
80  //template<typename T, qualifier Q>
+
81  //qua<T, Q> sqrt(
+
82  // qua<T, Q> const& q);
+
83 
+
87  template<typename T, qualifier Q>
+
88  GLM_FUNC_DECL vec<3, T, Q> rotate(
+
89  qua<T, Q> const& q,
+
90  vec<3, T, Q> const& v);
+
91 
+
95  template<typename T, qualifier Q>
+
96  GLM_FUNC_DECL vec<4, T, Q> rotate(
+
97  qua<T, Q> const& q,
+
98  vec<4, T, Q> const& v);
+
99 
+
103  template<typename T, qualifier Q>
+
104  GLM_FUNC_DECL T extractRealComponent(
+
105  qua<T, Q> const& q);
+
106 
+
110  template<typename T, qualifier Q>
+
111  GLM_FUNC_QUALIFIER mat<3, 3, T, Q> toMat3(
+
112  qua<T, Q> const& x){return mat3_cast(x);}
+
113 
+
117  template<typename T, qualifier Q>
+
118  GLM_FUNC_QUALIFIER mat<4, 4, T, Q> toMat4(
+
119  qua<T, Q> const& x){return mat4_cast(x);}
+
120 
+
124  template<typename T, qualifier Q>
+
125  GLM_FUNC_QUALIFIER qua<T, Q> toQuat(
+
126  mat<3, 3, T, Q> const& x){return quat_cast(x);}
+
127 
+
131  template<typename T, qualifier Q>
+
132  GLM_FUNC_QUALIFIER qua<T, Q> toQuat(
+
133  mat<4, 4, T, Q> const& x){return quat_cast(x);}
+
134 
+
138  template<typename T, qualifier Q>
+
139  GLM_FUNC_DECL qua<T, Q> shortMix(
+
140  qua<T, Q> const& x,
+
141  qua<T, Q> const& y,
+
142  T const& a);
+
143 
+
147  template<typename T, qualifier Q>
+
148  GLM_FUNC_DECL qua<T, Q> fastMix(
+
149  qua<T, Q> const& x,
+
150  qua<T, Q> const& y,
+
151  T const& a);
+
152 
+
158  template<typename T, qualifier Q>
+
159  GLM_FUNC_DECL qua<T, Q> rotation(
+
160  vec<3, T, Q> const& orig,
+
161  vec<3, T, Q> const& dest);
+
162 
+
166  template<typename T, qualifier Q>
+
167  GLM_FUNC_DECL GLM_CONSTEXPR T length2(qua<T, Q> const& q);
+
168 
+
170 }//namespace glm
+
171 
+
172 #include "quaternion.inl"
+
+
GLM_FUNC_DECL qua< T, Q > quat_cast(mat< 3, 3, T, Q > const &x)
Converts a pure rotation 3 * 3 matrix to a quaternion.
+
GLM_FUNC_DECL qua< T, Q > fastMix(qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
Quaternion normalized linear interpolation.
+
GLM_FUNC_DECL mat< 3, 3, T, Q > mat3_cast(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL GLM_CONSTEXPR qua< T, Q > quat_identity()
Create an identity quaternion.
+
GLM_FUNC_DECL T extractRealComponent(qua< T, Q > const &q)
Extract the real component of a quaternion.
+
GLM_FUNC_DECL qua< T, Q > rotation(vec< 3, T, Q > const &orig, vec< 3, T, Q > const &dest)
Compute the rotation between two vectors.
+
GLM_FUNC_QUALIFIER mat< 4, 4, T, Q > toMat4(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL qua< T, Q > squad(qua< T, Q > const &q1, qua< T, Q > const &q2, qua< T, Q > const &s1, qua< T, Q > const &s2, T const &h)
Compute a point on a path according squad equation.
+
GLM_FUNC_DECL vec< 4, T, Q > rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)
Rotates a 4 components vector by a quaternion.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< 3, T, Q > cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)
Compute a cross product between a vector and a quaternion.
+
GLM_FUNC_QUALIFIER qua< T, Q > toQuat(mat< 4, 4, T, Q > const &x)
Converts a 4 * 4 matrix to a quaternion.
+
GLM_FUNC_DECL GLM_CONSTEXPR T length2(qua< T, Q > const &q)
Returns the squared length of x.
+
GLM_FUNC_QUALIFIER mat< 3, 3, T, Q > toMat3(qua< T, Q > const &x)
Converts a quaternion to a 3 * 3 matrix.
+
GLM_FUNC_DECL mat< 4, 4, T, Q > mat4_cast(qua< T, Q > const &x)
Converts a quaternion to a 4 * 4 matrix.
+
GLM_FUNC_DECL qua< T, Q > shortMix(qua< T, Q > const &x, qua< T, Q > const &y, T const &a)
Quaternion interpolation using the rotation short path.
+
GLM_FUNC_DECL qua< T, Q > intermediate(qua< T, Q > const &prev, qua< T, Q > const &curr, qua< T, Q > const &next)
Returns an intermediate control point for squad interpolation.
+ + + + diff --git a/include/glm/doc/api/a01717.html b/include/glm/doc/api/a01717.html new file mode 100644 index 0000000..20d8f90 --- /dev/null +++ b/include/glm/doc/api/a01717.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: scalar_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ext/scalar_relational.hpp File Reference
+
+
+ +

GLM_EXT_scalar_relational +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Functions

template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool equal (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, genType const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<typename genType >
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual (genType const &x, genType const &y, int ULPs)
 Returns the component-wise comparison between two scalars in term of ULPs. More...
 
+

Detailed Description

+
+ + + + diff --git a/include/glm/doc/api/a01717_source.html b/include/glm/doc/api/a01717_source.html new file mode 100644 index 0000000..479ec9b --- /dev/null +++ b/include/glm/doc/api/a01717_source.html @@ -0,0 +1,112 @@ + + + + + + + +1.0.2 API documentation: scalar_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext/scalar_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
15 #pragma once
+
16 
+
17 // Dependencies
+
18 #include "../detail/qualifier.hpp"
+
19 
+
20 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_EXT_scalar_relational extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
33  template<typename genType>
+
34  GLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon);
+
35 
+
40  template<typename genType>
+
41  GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon);
+
42 
+
51  template<typename genType>
+
52  GLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int ULPs);
+
53 
+
62  template<typename genType>
+
63  GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs);
+
64 
+
66 }//namespace glm
+
67 
+
68 #include "scalar_relational.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR bool notEqual(genType const &x, genType const &y, int ULPs)
Returns the component-wise comparison between two scalars in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR bool equal(genType const &x, genType const &y, int ULPs)
Returns the component-wise comparison between two scalars in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+ + + + diff --git a/include/glm/doc/api/a01720.html b/include/glm/doc/api/a01720.html new file mode 100644 index 0000000..8d656b1 --- /dev/null +++ b/include/glm/doc/api/a01720.html @@ -0,0 +1,91 @@ + + + + + + + +1.0.2 API documentation: scalar_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/scalar_relational.hpp File Reference
+
+ + + + + diff --git a/include/glm/doc/api/a01720_source.html b/include/glm/doc/api/a01720_source.html new file mode 100644 index 0000000..d3e72cb --- /dev/null +++ b/include/glm/doc/api/a01720_source.html @@ -0,0 +1,101 @@ + + + + + + + +1.0.2 API documentation: scalar_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/scalar_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 // Dependency:
+
16 #include "../glm.hpp"
+
17 
+
18 #ifndef GLM_ENABLE_EXPERIMENTAL
+
19 # error "GLM: GLM_GTX_scalar_relational is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."
+
20 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
21 # pragma message("GLM: GLM_GTX_scalar_relational extension included")
+
22 #endif
+
23 
+
24 namespace glm
+
25 {
+
28 
+
29 
+
30 
+
32 }//namespace glm
+
33 
+
34 #include "scalar_relational.inl"
+
+ + + + diff --git a/include/glm/doc/api/a01723.html b/include/glm/doc/api/a01723.html new file mode 100644 index 0000000..8d4ff07 --- /dev/null +++ b/include/glm/doc/api/a01723.html @@ -0,0 +1,1569 @@ + + + + + + + +1.0.2 API documentation: type_aligned.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtc/type_aligned.hpp File Reference
+
+
+ +

GLM_GTC_type_aligned +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+typedef aligned_highp_bvec1 aligned_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec2 aligned_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec3 aligned_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef aligned_highp_bvec4 aligned_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef aligned_highp_dmat2 aligned_dmat2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x2 aligned_dmat2x2
 2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x3 aligned_dmat2x3
 2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat2x4 aligned_dmat2x4
 2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3 aligned_dmat3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x2 aligned_dmat3x2
 3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x3 aligned_dmat3x3
 3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat3x4 aligned_dmat3x4
 3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4 aligned_dmat4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x2 aligned_dmat4x2
 4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x3 aligned_dmat4x3
 4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dmat4x4 aligned_dmat4x4
 4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dquat aligned_dquat
 quaternion tightly aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec1 aligned_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec2 aligned_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec3 aligned_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef aligned_highp_dvec4 aligned_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers.
 
+typedef vec< 1, bool, aligned_highp > aligned_highp_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_highp > aligned_highp_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_highp > aligned_highp_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_highp > aligned_highp_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_highp > aligned_highp_dquat
 quaternion aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_highp > aligned_highp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_highp > aligned_highp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_highp > aligned_highp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_highp > aligned_highp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_highp > aligned_highp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_highp > aligned_highp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_highp > aligned_highp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_highp > aligned_highp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_highp > aligned_highp_quat
 quaternion aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_highp > aligned_highp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_highp > aligned_highp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_highp > aligned_highp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_highp > aligned_highp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_highp > aligned_highp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_highp > aligned_highp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_highp > aligned_highp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_highp > aligned_highp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef aligned_highp_ivec1 aligned_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec2 aligned_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec3 aligned_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef aligned_highp_ivec4 aligned_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_lowp > aligned_lowp_dquat
 quaternion aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_lowp > aligned_lowp_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_lowp > aligned_lowp_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_lowp > aligned_lowp_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_lowp > aligned_lowp_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_lowp > aligned_lowp_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_lowp > aligned_lowp_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_lowp > aligned_lowp_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_lowp > aligned_lowp_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_lowp > aligned_lowp_quat
 quaternion aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_lowp > aligned_lowp_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_lowp > aligned_lowp_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_lowp > aligned_lowp_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_lowp > aligned_lowp_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef aligned_highp_mat2 aligned_mat2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x2 aligned_mat2x2
 2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x3 aligned_mat2x3
 2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat2x4 aligned_mat2x4
 2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3 aligned_mat3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x2 aligned_mat3x2
 3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x3 aligned_mat3x3
 3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat3x4 aligned_mat3x4
 3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4 aligned_mat4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x2 aligned_mat4x2
 4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x3 aligned_mat4x3
 4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_mat4x4 aligned_mat4x4
 4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
 
+typedef vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
 1 component vector aligned in memory of bool values.
 
+typedef vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
 2 components vector aligned in memory of bool values.
 
+typedef vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
 3 components vector aligned in memory of bool values.
 
+typedef vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
 4 components vector aligned in memory of bool values.
 
+typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
 2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
 2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
 2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
 3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
 3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
 3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
 4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
 4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
 4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< double, aligned_mediump > aligned_mediump_dquat
 quaternion aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, aligned_mediump > aligned_mediump_dvec1
 1 component vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, aligned_mediump > aligned_mediump_dvec2
 2 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, aligned_mediump > aligned_mediump_dvec3
 3 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, aligned_mediump > aligned_mediump_dvec4
 4 components vector aligned in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, aligned_mediump > aligned_mediump_ivec1
 1 component vector aligned in memory of signed integer numbers.
 
+typedef vec< 2, int, aligned_mediump > aligned_mediump_ivec2
 2 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 3, int, aligned_mediump > aligned_mediump_ivec3
 3 components vector aligned in memory of signed integer numbers.
 
+typedef vec< 4, int, aligned_mediump > aligned_mediump_ivec4
 4 components vector aligned in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
 2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
 2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
 2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
 3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
 3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
 3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
 4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
 4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
 4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< float, aligned_mediump > aligned_mediump_quat
 quaternion aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef vec< 1, float, aligned_mediump > aligned_mediump_vec1
 1 component vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, aligned_mediump > aligned_mediump_vec2
 2 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, aligned_mediump > aligned_mediump_vec3
 3 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, aligned_mediump > aligned_mediump_vec4
 4 components vector aligned in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef aligned_highp_quat aligned_quat
 quaternion tightly aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_uvec1 aligned_uvec1
 1 component vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec2 aligned_uvec2
 2 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec3 aligned_uvec3
 3 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_uvec4 aligned_uvec4
 4 components vector aligned in memory of unsigned integer numbers.
 
+typedef aligned_highp_vec1 aligned_vec1
 1 component vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec2 aligned_vec2
 2 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec3 aligned_vec3
 3 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef aligned_highp_vec4 aligned_vec4
 4 components vector aligned in memory of single-precision floating-point numbers.
 
+typedef packed_highp_bvec1 packed_bvec1
 1 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec2 packed_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec3 packed_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_bvec4 packed_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef packed_highp_dmat2 packed_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x2 packed_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x3 packed_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat2x4 packed_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3 packed_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x2 packed_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x3 packed_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat3x4 packed_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4 packed_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x2 packed_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x3 packed_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dmat4x4 packed_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dquat packed_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec1 packed_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec2 packed_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec3 packed_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef packed_highp_dvec4 packed_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers.
 
+typedef vec< 1, bool, packed_highp > packed_highp_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_highp > packed_highp_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_highp > packed_highp_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_highp > packed_highp_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_highp > packed_highp_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_highp > packed_highp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_highp > packed_highp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_highp > packed_highp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_highp > packed_highp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_highp > packed_highp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_highp > packed_highp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_highp > packed_highp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_highp > packed_highp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_highp > packed_highp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_highp > packed_highp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_highp > packed_highp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_highp > packed_highp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_highp > packed_highp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_highp > packed_highp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_highp > packed_highp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_highp > packed_highp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_highp > packed_highp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_highp > packed_highp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_highp > packed_highp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_highp > packed_highp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_highp > packed_highp_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_highp > packed_highp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_highp > packed_highp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_highp > packed_highp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_highp > packed_highp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_highp > packed_highp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_highp > packed_highp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_highp > packed_highp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_highp > packed_highp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using high precision arithmetic in term of ULPs.
 
+typedef packed_highp_ivec1 packed_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec2 packed_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec3 packed_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef packed_highp_ivec4 packed_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 1, bool, packed_lowp > packed_lowp_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_lowp > packed_lowp_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_lowp > packed_lowp_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_lowp > packed_lowp_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_lowp > packed_lowp_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_lowp > packed_lowp_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_lowp > packed_lowp_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_lowp > packed_lowp_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_lowp > packed_lowp_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_lowp > packed_lowp_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_lowp > packed_lowp_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_lowp > packed_lowp_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_lowp > packed_lowp_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_lowp > packed_lowp_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_lowp > packed_lowp_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_lowp > packed_lowp_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_lowp > packed_lowp_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_lowp > packed_lowp_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_lowp > packed_lowp_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_lowp > packed_lowp_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_lowp > packed_lowp_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_lowp > packed_lowp_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using low precision arithmetic in term of ULPs.
 
+typedef packed_highp_mat2 packed_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x2 packed_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x3 packed_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat2x4 packed_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3 packed_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x2 packed_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x3 packed_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat3x4 packed_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4 packed_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x2 packed_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x3 packed_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_mat4x4 packed_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
 
+typedef vec< 1, bool, packed_mediump > packed_mediump_bvec1
 1 component vector tightly packed in memory of bool values.
 
+typedef vec< 2, bool, packed_mediump > packed_mediump_bvec2
 2 components vector tightly packed in memory of bool values.
 
+typedef vec< 3, bool, packed_mediump > packed_mediump_bvec3
 3 components vector tightly packed in memory of bool values.
 
+typedef vec< 4, bool, packed_mediump > packed_mediump_bvec4
 4 components vector tightly packed in memory of bool values.
 
+typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
 2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
 2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
 2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
 3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
 3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
 3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
 4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
 4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
 4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< double, packed_mediump > packed_mediump_dquat
 quaternion tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, double, packed_mediump > packed_mediump_dvec1
 1 component vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, double, packed_mediump > packed_mediump_dvec2
 2 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, double, packed_mediump > packed_mediump_dvec3
 3 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, double, packed_mediump > packed_mediump_dvec4
 4 components vector tightly packed in memory of double-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, int, packed_mediump > packed_mediump_ivec1
 1 component vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 2, int, packed_mediump > packed_mediump_ivec2
 2 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 3, int, packed_mediump > packed_mediump_ivec3
 3 components vector tightly packed in memory of signed integer numbers.
 
+typedef vec< 4, int, packed_mediump > packed_mediump_ivec4
 4 components vector tightly packed in memory of signed integer numbers.
 
+typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
 2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
 2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
 2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
 3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
 3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
 3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
 4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
 4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
 4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef qua< float, packed_mediump > packed_mediump_quat
 quaternion tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 1, uint, packed_mediump > packed_mediump_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 2, uint, packed_mediump > packed_mediump_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 3, uint, packed_mediump > packed_mediump_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 4, uint, packed_mediump > packed_mediump_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef vec< 1, float, packed_mediump > packed_mediump_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 2, float, packed_mediump > packed_mediump_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 3, float, packed_mediump > packed_mediump_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef vec< 4, float, packed_mediump > packed_mediump_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers using medium precision arithmetic in term of ULPs.
 
+typedef packed_highp_quat packed_quat
 quaternion tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_uvec1 packed_uvec1
 1 component vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec2 packed_uvec2
 2 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec3 packed_uvec3
 3 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_uvec4 packed_uvec4
 4 components vector tightly packed in memory of unsigned integer numbers.
 
+typedef packed_highp_vec1 packed_vec1
 1 component vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec2 packed_vec2
 2 components vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec3 packed_vec3
 3 components vector tightly packed in memory of single-precision floating-point numbers.
 
+typedef packed_highp_vec4 packed_vec4
 4 components vector tightly packed in memory of single-precision floating-point numbers.
 
+

Detailed Description

+

GLM_GTC_type_aligned

+
See also
Core features (dependence)
+ +

Definition in file gtc/type_aligned.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01723_source.html b/include/glm/doc/api/a01723_source.html new file mode 100644 index 0000000..a6b0570 --- /dev/null +++ b/include/glm/doc/api/a01723_source.html @@ -0,0 +1,1445 @@ + + + + + + + +1.0.2 API documentation: type_aligned.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc/type_aligned.hpp
+
+
+Go to the documentation of this file.
1 
+
13 #pragma once
+
14 
+
15 #if (GLM_CONFIG_ALIGNED_GENTYPES == GLM_DISABLE)
+
16 # error "GLM: Aligned gentypes require to enable C++ language extensions. Define GLM_FORCE_ALIGNED_GENTYPES before including GLM headers to use aligned types."
+
17 #endif
+
18 
+
19 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
20 # pragma message("GLM: GLM_GTC_type_aligned extension included")
+
21 #endif
+
22 
+
23 #include "../mat4x4.hpp"
+
24 #include "../mat4x3.hpp"
+
25 #include "../mat4x2.hpp"
+
26 #include "../mat3x4.hpp"
+
27 #include "../mat3x3.hpp"
+
28 #include "../mat3x2.hpp"
+
29 #include "../mat2x4.hpp"
+
30 #include "../mat2x3.hpp"
+
31 #include "../mat2x2.hpp"
+
32 #include "../gtc/quaternion.hpp"
+
33 #include "../gtc/vec1.hpp"
+
34 #include "../vec2.hpp"
+
35 #include "../vec3.hpp"
+
36 #include "../vec4.hpp"
+
37 
+
38 namespace glm
+
39 {
+
42 
+
43  // -- *vec1 --
+
44 
+
46  typedef vec<1, float, aligned_highp> aligned_highp_vec1;
+
47 
+
49  typedef vec<1, float, aligned_mediump> aligned_mediump_vec1;
+
50 
+
52  typedef vec<1, float, aligned_lowp> aligned_lowp_vec1;
+
53 
+
55  typedef vec<1, double, aligned_highp> aligned_highp_dvec1;
+
56 
+
58  typedef vec<1, double, aligned_mediump> aligned_mediump_dvec1;
+
59 
+
61  typedef vec<1, double, aligned_lowp> aligned_lowp_dvec1;
+
62 
+
64  typedef vec<1, int, aligned_highp> aligned_highp_ivec1;
+
65 
+
67  typedef vec<1, int, aligned_mediump> aligned_mediump_ivec1;
+
68 
+
70  typedef vec<1, int, aligned_lowp> aligned_lowp_ivec1;
+
71 
+
73  typedef vec<1, uint, aligned_highp> aligned_highp_uvec1;
+
74 
+
76  typedef vec<1, uint, aligned_mediump> aligned_mediump_uvec1;
+
77 
+
79  typedef vec<1, uint, aligned_lowp> aligned_lowp_uvec1;
+
80 
+
82  typedef vec<1, bool, aligned_highp> aligned_highp_bvec1;
+
83 
+
85  typedef vec<1, bool, aligned_mediump> aligned_mediump_bvec1;
+
86 
+
88  typedef vec<1, bool, aligned_lowp> aligned_lowp_bvec1;
+
89 
+
91  typedef vec<1, float, packed_highp> packed_highp_vec1;
+
92 
+
94  typedef vec<1, float, packed_mediump> packed_mediump_vec1;
+
95 
+
97  typedef vec<1, float, packed_lowp> packed_lowp_vec1;
+
98 
+
100  typedef vec<1, double, packed_highp> packed_highp_dvec1;
+
101 
+
103  typedef vec<1, double, packed_mediump> packed_mediump_dvec1;
+
104 
+
106  typedef vec<1, double, packed_lowp> packed_lowp_dvec1;
+
107 
+
109  typedef vec<1, int, packed_highp> packed_highp_ivec1;
+
110 
+
112  typedef vec<1, int, packed_mediump> packed_mediump_ivec1;
+
113 
+
115  typedef vec<1, int, packed_lowp> packed_lowp_ivec1;
+
116 
+
118  typedef vec<1, uint, packed_highp> packed_highp_uvec1;
+
119 
+
121  typedef vec<1, uint, packed_mediump> packed_mediump_uvec1;
+
122 
+
124  typedef vec<1, uint, packed_lowp> packed_lowp_uvec1;
+
125 
+
127  typedef vec<1, bool, packed_highp> packed_highp_bvec1;
+
128 
+
130  typedef vec<1, bool, packed_mediump> packed_mediump_bvec1;
+
131 
+
133  typedef vec<1, bool, packed_lowp> packed_lowp_bvec1;
+
134 
+
135  // -- *vec2 --
+
136 
+
138  typedef vec<2, float, aligned_highp> aligned_highp_vec2;
+
139 
+
141  typedef vec<2, float, aligned_mediump> aligned_mediump_vec2;
+
142 
+
144  typedef vec<2, float, aligned_lowp> aligned_lowp_vec2;
+
145 
+
147  typedef vec<2, double, aligned_highp> aligned_highp_dvec2;
+
148 
+
150  typedef vec<2, double, aligned_mediump> aligned_mediump_dvec2;
+
151 
+
153  typedef vec<2, double, aligned_lowp> aligned_lowp_dvec2;
+
154 
+
156  typedef vec<2, int, aligned_highp> aligned_highp_ivec2;
+
157 
+
159  typedef vec<2, int, aligned_mediump> aligned_mediump_ivec2;
+
160 
+
162  typedef vec<2, int, aligned_lowp> aligned_lowp_ivec2;
+
163 
+
165  typedef vec<2, uint, aligned_highp> aligned_highp_uvec2;
+
166 
+
168  typedef vec<2, uint, aligned_mediump> aligned_mediump_uvec2;
+
169 
+
171  typedef vec<2, uint, aligned_lowp> aligned_lowp_uvec2;
+
172 
+
174  typedef vec<2, bool, aligned_highp> aligned_highp_bvec2;
+
175 
+
177  typedef vec<2, bool, aligned_mediump> aligned_mediump_bvec2;
+
178 
+
180  typedef vec<2, bool, aligned_lowp> aligned_lowp_bvec2;
+
181 
+
183  typedef vec<2, float, packed_highp> packed_highp_vec2;
+
184 
+
186  typedef vec<2, float, packed_mediump> packed_mediump_vec2;
+
187 
+
189  typedef vec<2, float, packed_lowp> packed_lowp_vec2;
+
190 
+
192  typedef vec<2, double, packed_highp> packed_highp_dvec2;
+
193 
+
195  typedef vec<2, double, packed_mediump> packed_mediump_dvec2;
+
196 
+
198  typedef vec<2, double, packed_lowp> packed_lowp_dvec2;
+
199 
+
201  typedef vec<2, int, packed_highp> packed_highp_ivec2;
+
202 
+
204  typedef vec<2, int, packed_mediump> packed_mediump_ivec2;
+
205 
+
207  typedef vec<2, int, packed_lowp> packed_lowp_ivec2;
+
208 
+
210  typedef vec<2, uint, packed_highp> packed_highp_uvec2;
+
211 
+
213  typedef vec<2, uint, packed_mediump> packed_mediump_uvec2;
+
214 
+
216  typedef vec<2, uint, packed_lowp> packed_lowp_uvec2;
+
217 
+
219  typedef vec<2, bool, packed_highp> packed_highp_bvec2;
+
220 
+
222  typedef vec<2, bool, packed_mediump> packed_mediump_bvec2;
+
223 
+
225  typedef vec<2, bool, packed_lowp> packed_lowp_bvec2;
+
226 
+
227  // -- *vec3 --
+
228 
+
230  typedef vec<3, float, aligned_highp> aligned_highp_vec3;
+
231 
+
233  typedef vec<3, float, aligned_mediump> aligned_mediump_vec3;
+
234 
+
236  typedef vec<3, float, aligned_lowp> aligned_lowp_vec3;
+
237 
+
239  typedef vec<3, double, aligned_highp> aligned_highp_dvec3;
+
240 
+
242  typedef vec<3, double, aligned_mediump> aligned_mediump_dvec3;
+
243 
+
245  typedef vec<3, double, aligned_lowp> aligned_lowp_dvec3;
+
246 
+
248  typedef vec<3, int, aligned_highp> aligned_highp_ivec3;
+
249 
+
251  typedef vec<3, int, aligned_mediump> aligned_mediump_ivec3;
+
252 
+
254  typedef vec<3, int, aligned_lowp> aligned_lowp_ivec3;
+
255 
+
257  typedef vec<3, uint, aligned_highp> aligned_highp_uvec3;
+
258 
+
260  typedef vec<3, uint, aligned_mediump> aligned_mediump_uvec3;
+
261 
+
263  typedef vec<3, uint, aligned_lowp> aligned_lowp_uvec3;
+
264 
+
266  typedef vec<3, bool, aligned_highp> aligned_highp_bvec3;
+
267 
+
269  typedef vec<3, bool, aligned_mediump> aligned_mediump_bvec3;
+
270 
+
272  typedef vec<3, bool, aligned_lowp> aligned_lowp_bvec3;
+
273 
+
275  typedef vec<3, float, packed_highp> packed_highp_vec3;
+
276 
+
278  typedef vec<3, float, packed_mediump> packed_mediump_vec3;
+
279 
+
281  typedef vec<3, float, packed_lowp> packed_lowp_vec3;
+
282 
+
284  typedef vec<3, double, packed_highp> packed_highp_dvec3;
+
285 
+
287  typedef vec<3, double, packed_mediump> packed_mediump_dvec3;
+
288 
+
290  typedef vec<3, double, packed_lowp> packed_lowp_dvec3;
+
291 
+
293  typedef vec<3, int, packed_highp> packed_highp_ivec3;
+
294 
+
296  typedef vec<3, int, packed_mediump> packed_mediump_ivec3;
+
297 
+
299  typedef vec<3, int, packed_lowp> packed_lowp_ivec3;
+
300 
+
302  typedef vec<3, uint, packed_highp> packed_highp_uvec3;
+
303 
+
305  typedef vec<3, uint, packed_mediump> packed_mediump_uvec3;
+
306 
+
308  typedef vec<3, uint, packed_lowp> packed_lowp_uvec3;
+
309 
+
311  typedef vec<3, bool, packed_highp> packed_highp_bvec3;
+
312 
+
314  typedef vec<3, bool, packed_mediump> packed_mediump_bvec3;
+
315 
+
317  typedef vec<3, bool, packed_lowp> packed_lowp_bvec3;
+
318 
+
319  // -- *vec4 --
+
320 
+
322  typedef vec<4, float, aligned_highp> aligned_highp_vec4;
+
323 
+
325  typedef vec<4, float, aligned_mediump> aligned_mediump_vec4;
+
326 
+
328  typedef vec<4, float, aligned_lowp> aligned_lowp_vec4;
+
329 
+
331  typedef vec<4, double, aligned_highp> aligned_highp_dvec4;
+
332 
+
334  typedef vec<4, double, aligned_mediump> aligned_mediump_dvec4;
+
335 
+
337  typedef vec<4, double, aligned_lowp> aligned_lowp_dvec4;
+
338 
+
340  typedef vec<4, int, aligned_highp> aligned_highp_ivec4;
+
341 
+
343  typedef vec<4, int, aligned_mediump> aligned_mediump_ivec4;
+
344 
+
346  typedef vec<4, int, aligned_lowp> aligned_lowp_ivec4;
+
347 
+
349  typedef vec<4, uint, aligned_highp> aligned_highp_uvec4;
+
350 
+
352  typedef vec<4, uint, aligned_mediump> aligned_mediump_uvec4;
+
353 
+
355  typedef vec<4, uint, aligned_lowp> aligned_lowp_uvec4;
+
356 
+
358  typedef vec<4, bool, aligned_highp> aligned_highp_bvec4;
+
359 
+
361  typedef vec<4, bool, aligned_mediump> aligned_mediump_bvec4;
+
362 
+
364  typedef vec<4, bool, aligned_lowp> aligned_lowp_bvec4;
+
365 
+
367  typedef vec<4, float, packed_highp> packed_highp_vec4;
+
368 
+
370  typedef vec<4, float, packed_mediump> packed_mediump_vec4;
+
371 
+
373  typedef vec<4, float, packed_lowp> packed_lowp_vec4;
+
374 
+
376  typedef vec<4, double, packed_highp> packed_highp_dvec4;
+
377 
+
379  typedef vec<4, double, packed_mediump> packed_mediump_dvec4;
+
380 
+
382  typedef vec<4, double, packed_lowp> packed_lowp_dvec4;
+
383 
+
385  typedef vec<4, int, packed_highp> packed_highp_ivec4;
+
386 
+
388  typedef vec<4, int, packed_mediump> packed_mediump_ivec4;
+
389 
+
391  typedef vec<4, int, packed_lowp> packed_lowp_ivec4;
+
392 
+
394  typedef vec<4, uint, packed_highp> packed_highp_uvec4;
+
395 
+
397  typedef vec<4, uint, packed_mediump> packed_mediump_uvec4;
+
398 
+
400  typedef vec<4, uint, packed_lowp> packed_lowp_uvec4;
+
401 
+
403  typedef vec<4, bool, packed_highp> packed_highp_bvec4;
+
404 
+
406  typedef vec<4, bool, packed_mediump> packed_mediump_bvec4;
+
407 
+
409  typedef vec<4, bool, packed_lowp> packed_lowp_bvec4;
+
410 
+
411  // -- *mat2 --
+
412 
+
414  typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2;
+
415 
+
417  typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2;
+
418 
+
420  typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2;
+
421 
+
423  typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2;
+
424 
+
426  typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2;
+
427 
+
429  typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2;
+
430 
+
432  typedef mat<2, 2, float, packed_highp> packed_highp_mat2;
+
433 
+
435  typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2;
+
436 
+
438  typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2;
+
439 
+
441  typedef mat<2, 2, double, packed_highp> packed_highp_dmat2;
+
442 
+
444  typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2;
+
445 
+
447  typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2;
+
448 
+
449  // -- *mat3 --
+
450 
+
452  typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3;
+
453 
+
455  typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3;
+
456 
+
458  typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3;
+
459 
+
461  typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3;
+
462 
+
464  typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3;
+
465 
+
467  typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3;
+
468 
+
470  typedef mat<3, 3, float, packed_highp> packed_highp_mat3;
+
471 
+
473  typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3;
+
474 
+
476  typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3;
+
477 
+
479  typedef mat<3, 3, double, packed_highp> packed_highp_dmat3;
+
480 
+
482  typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3;
+
483 
+
485  typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3;
+
486 
+
487  // -- *mat4 --
+
488 
+
490  typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4;
+
491 
+
493  typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4;
+
494 
+
496  typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4;
+
497 
+
499  typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4;
+
500 
+
502  typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4;
+
503 
+
505  typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4;
+
506 
+
508  typedef mat<4, 4, float, packed_highp> packed_highp_mat4;
+
509 
+
511  typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4;
+
512 
+
514  typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4;
+
515 
+
517  typedef mat<4, 4, double, packed_highp> packed_highp_dmat4;
+
518 
+
520  typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4;
+
521 
+
523  typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4;
+
524 
+
525  // -- *mat2x2 --
+
526 
+
528  typedef mat<2, 2, float, aligned_highp> aligned_highp_mat2x2;
+
529 
+
531  typedef mat<2, 2, float, aligned_mediump> aligned_mediump_mat2x2;
+
532 
+
534  typedef mat<2, 2, float, aligned_lowp> aligned_lowp_mat2x2;
+
535 
+
537  typedef mat<2, 2, double, aligned_highp> aligned_highp_dmat2x2;
+
538 
+
540  typedef mat<2, 2, double, aligned_mediump> aligned_mediump_dmat2x2;
+
541 
+
543  typedef mat<2, 2, double, aligned_lowp> aligned_lowp_dmat2x2;
+
544 
+
546  typedef mat<2, 2, float, packed_highp> packed_highp_mat2x2;
+
547 
+
549  typedef mat<2, 2, float, packed_mediump> packed_mediump_mat2x2;
+
550 
+
552  typedef mat<2, 2, float, packed_lowp> packed_lowp_mat2x2;
+
553 
+
555  typedef mat<2, 2, double, packed_highp> packed_highp_dmat2x2;
+
556 
+
558  typedef mat<2, 2, double, packed_mediump> packed_mediump_dmat2x2;
+
559 
+
561  typedef mat<2, 2, double, packed_lowp> packed_lowp_dmat2x2;
+
562 
+
563  // -- *mat2x3 --
+
564 
+
566  typedef mat<2, 3, float, aligned_highp> aligned_highp_mat2x3;
+
567 
+
569  typedef mat<2, 3, float, aligned_mediump> aligned_mediump_mat2x3;
+
570 
+
572  typedef mat<2, 3, float, aligned_lowp> aligned_lowp_mat2x3;
+
573 
+
575  typedef mat<2, 3, double, aligned_highp> aligned_highp_dmat2x3;
+
576 
+
578  typedef mat<2, 3, double, aligned_mediump> aligned_mediump_dmat2x3;
+
579 
+
581  typedef mat<2, 3, double, aligned_lowp> aligned_lowp_dmat2x3;
+
582 
+
584  typedef mat<2, 3, float, packed_highp> packed_highp_mat2x3;
+
585 
+
587  typedef mat<2, 3, float, packed_mediump> packed_mediump_mat2x3;
+
588 
+
590  typedef mat<2, 3, float, packed_lowp> packed_lowp_mat2x3;
+
591 
+
593  typedef mat<2, 3, double, packed_highp> packed_highp_dmat2x3;
+
594 
+
596  typedef mat<2, 3, double, packed_mediump> packed_mediump_dmat2x3;
+
597 
+
599  typedef mat<2, 3, double, packed_lowp> packed_lowp_dmat2x3;
+
600 
+
601  // -- *mat2x4 --
+
602 
+
604  typedef mat<2, 4, float, aligned_highp> aligned_highp_mat2x4;
+
605 
+
607  typedef mat<2, 4, float, aligned_mediump> aligned_mediump_mat2x4;
+
608 
+
610  typedef mat<2, 4, float, aligned_lowp> aligned_lowp_mat2x4;
+
611 
+
613  typedef mat<2, 4, double, aligned_highp> aligned_highp_dmat2x4;
+
614 
+
616  typedef mat<2, 4, double, aligned_mediump> aligned_mediump_dmat2x4;
+
617 
+
619  typedef mat<2, 4, double, aligned_lowp> aligned_lowp_dmat2x4;
+
620 
+
622  typedef mat<2, 4, float, packed_highp> packed_highp_mat2x4;
+
623 
+
625  typedef mat<2, 4, float, packed_mediump> packed_mediump_mat2x4;
+
626 
+
628  typedef mat<2, 4, float, packed_lowp> packed_lowp_mat2x4;
+
629 
+
631  typedef mat<2, 4, double, packed_highp> packed_highp_dmat2x4;
+
632 
+
634  typedef mat<2, 4, double, packed_mediump> packed_mediump_dmat2x4;
+
635 
+
637  typedef mat<2, 4, double, packed_lowp> packed_lowp_dmat2x4;
+
638 
+
639  // -- *mat3x2 --
+
640 
+
642  typedef mat<3, 2, float, aligned_highp> aligned_highp_mat3x2;
+
643 
+
645  typedef mat<3, 2, float, aligned_mediump> aligned_mediump_mat3x2;
+
646 
+
648  typedef mat<3, 2, float, aligned_lowp> aligned_lowp_mat3x2;
+
649 
+
651  typedef mat<3, 2, double, aligned_highp> aligned_highp_dmat3x2;
+
652 
+
654  typedef mat<3, 2, double, aligned_mediump> aligned_mediump_dmat3x2;
+
655 
+
657  typedef mat<3, 2, double, aligned_lowp> aligned_lowp_dmat3x2;
+
658 
+
660  typedef mat<3, 2, float, packed_highp> packed_highp_mat3x2;
+
661 
+
663  typedef mat<3, 2, float, packed_mediump> packed_mediump_mat3x2;
+
664 
+
666  typedef mat<3, 2, float, packed_lowp> packed_lowp_mat3x2;
+
667 
+
669  typedef mat<3, 2, double, packed_highp> packed_highp_dmat3x2;
+
670 
+
672  typedef mat<3, 2, double, packed_mediump> packed_mediump_dmat3x2;
+
673 
+
675  typedef mat<3, 2, double, packed_lowp> packed_lowp_dmat3x2;
+
676 
+
677  // -- *mat3x3 --
+
678 
+
680  typedef mat<3, 3, float, aligned_highp> aligned_highp_mat3x3;
+
681 
+
683  typedef mat<3, 3, float, aligned_mediump> aligned_mediump_mat3x3;
+
684 
+
686  typedef mat<3, 3, float, aligned_lowp> aligned_lowp_mat3x3;
+
687 
+
689  typedef mat<3, 3, double, aligned_highp> aligned_highp_dmat3x3;
+
690 
+
692  typedef mat<3, 3, double, aligned_mediump> aligned_mediump_dmat3x3;
+
693 
+
695  typedef mat<3, 3, double, aligned_lowp> aligned_lowp_dmat3x3;
+
696 
+
698  typedef mat<3, 3, float, packed_highp> packed_highp_mat3x3;
+
699 
+
701  typedef mat<3, 3, float, packed_mediump> packed_mediump_mat3x3;
+
702 
+
704  typedef mat<3, 3, float, packed_lowp> packed_lowp_mat3x3;
+
705 
+
707  typedef mat<3, 3, double, packed_highp> packed_highp_dmat3x3;
+
708 
+
710  typedef mat<3, 3, double, packed_mediump> packed_mediump_dmat3x3;
+
711 
+
713  typedef mat<3, 3, double, packed_lowp> packed_lowp_dmat3x3;
+
714 
+
715  // -- *mat3x4 --
+
716 
+
718  typedef mat<3, 4, float, aligned_highp> aligned_highp_mat3x4;
+
719 
+
721  typedef mat<3, 4, float, aligned_mediump> aligned_mediump_mat3x4;
+
722 
+
724  typedef mat<3, 4, float, aligned_lowp> aligned_lowp_mat3x4;
+
725 
+
727  typedef mat<3, 4, double, aligned_highp> aligned_highp_dmat3x4;
+
728 
+
730  typedef mat<3, 4, double, aligned_mediump> aligned_mediump_dmat3x4;
+
731 
+
733  typedef mat<3, 4, double, aligned_lowp> aligned_lowp_dmat3x4;
+
734 
+
736  typedef mat<3, 4, float, packed_highp> packed_highp_mat3x4;
+
737 
+
739  typedef mat<3, 4, float, packed_mediump> packed_mediump_mat3x4;
+
740 
+
742  typedef mat<3, 4, float, packed_lowp> packed_lowp_mat3x4;
+
743 
+
745  typedef mat<3, 4, double, packed_highp> packed_highp_dmat3x4;
+
746 
+
748  typedef mat<3, 4, double, packed_mediump> packed_mediump_dmat3x4;
+
749 
+
751  typedef mat<3, 4, double, packed_lowp> packed_lowp_dmat3x4;
+
752 
+
753  // -- *mat4x2 --
+
754 
+
756  typedef mat<4, 2, float, aligned_highp> aligned_highp_mat4x2;
+
757 
+
759  typedef mat<4, 2, float, aligned_mediump> aligned_mediump_mat4x2;
+
760 
+
762  typedef mat<4, 2, float, aligned_lowp> aligned_lowp_mat4x2;
+
763 
+
765  typedef mat<4, 2, double, aligned_highp> aligned_highp_dmat4x2;
+
766 
+
768  typedef mat<4, 2, double, aligned_mediump> aligned_mediump_dmat4x2;
+
769 
+
771  typedef mat<4, 2, double, aligned_lowp> aligned_lowp_dmat4x2;
+
772 
+
774  typedef mat<4, 2, float, packed_highp> packed_highp_mat4x2;
+
775 
+
777  typedef mat<4, 2, float, packed_mediump> packed_mediump_mat4x2;
+
778 
+
780  typedef mat<4, 2, float, packed_lowp> packed_lowp_mat4x2;
+
781 
+
783  typedef mat<4, 2, double, packed_highp> packed_highp_dmat4x2;
+
784 
+
786  typedef mat<4, 2, double, packed_mediump> packed_mediump_dmat4x2;
+
787 
+
789  typedef mat<4, 2, double, packed_lowp> packed_lowp_dmat4x2;
+
790 
+
791  // -- *mat4x3 --
+
792 
+
794  typedef mat<4, 3, float, aligned_highp> aligned_highp_mat4x3;
+
795 
+
797  typedef mat<4, 3, float, aligned_mediump> aligned_mediump_mat4x3;
+
798 
+
800  typedef mat<4, 3, float, aligned_lowp> aligned_lowp_mat4x3;
+
801 
+
803  typedef mat<4, 3, double, aligned_highp> aligned_highp_dmat4x3;
+
804 
+
806  typedef mat<4, 3, double, aligned_mediump> aligned_mediump_dmat4x3;
+
807 
+
809  typedef mat<4, 3, double, aligned_lowp> aligned_lowp_dmat4x3;
+
810 
+
812  typedef mat<4, 3, float, packed_highp> packed_highp_mat4x3;
+
813 
+
815  typedef mat<4, 3, float, packed_mediump> packed_mediump_mat4x3;
+
816 
+
818  typedef mat<4, 3, float, packed_lowp> packed_lowp_mat4x3;
+
819 
+
821  typedef mat<4, 3, double, packed_highp> packed_highp_dmat4x3;
+
822 
+
824  typedef mat<4, 3, double, packed_mediump> packed_mediump_dmat4x3;
+
825 
+
827  typedef mat<4, 3, double, packed_lowp> packed_lowp_dmat4x3;
+
828 
+
829  // -- *mat4x4 --
+
830 
+
832  typedef mat<4, 4, float, aligned_highp> aligned_highp_mat4x4;
+
833 
+
835  typedef mat<4, 4, float, aligned_mediump> aligned_mediump_mat4x4;
+
836 
+
838  typedef mat<4, 4, float, aligned_lowp> aligned_lowp_mat4x4;
+
839 
+
841  typedef mat<4, 4, double, aligned_highp> aligned_highp_dmat4x4;
+
842 
+
844  typedef mat<4, 4, double, aligned_mediump> aligned_mediump_dmat4x4;
+
845 
+
847  typedef mat<4, 4, double, aligned_lowp> aligned_lowp_dmat4x4;
+
848 
+
850  typedef mat<4, 4, float, packed_highp> packed_highp_mat4x4;
+
851 
+
853  typedef mat<4, 4, float, packed_mediump> packed_mediump_mat4x4;
+
854 
+
856  typedef mat<4, 4, float, packed_lowp> packed_lowp_mat4x4;
+
857 
+
859  typedef mat<4, 4, double, packed_highp> packed_highp_dmat4x4;
+
860 
+
862  typedef mat<4, 4, double, packed_mediump> packed_mediump_dmat4x4;
+
863 
+
865  typedef mat<4, 4, double, packed_lowp> packed_lowp_dmat4x4;
+
866 
+
867  // -- *quat --
+
868 
+
870  typedef qua<float, aligned_highp> aligned_highp_quat;
+
871 
+
873  typedef qua<float, aligned_mediump> aligned_mediump_quat;
+
874 
+
876  typedef qua<float, aligned_lowp> aligned_lowp_quat;
+
877 
+
879  typedef qua<double, aligned_highp> aligned_highp_dquat;
+
880 
+
882  typedef qua<double, aligned_mediump> aligned_mediump_dquat;
+
883 
+
885  typedef qua<double, aligned_lowp> aligned_lowp_dquat;
+
886 
+
888  typedef qua<float, packed_highp> packed_highp_quat;
+
889 
+
891  typedef qua<float, packed_mediump> packed_mediump_quat;
+
892 
+
894  typedef qua<float, packed_lowp> packed_lowp_quat;
+
895 
+
897  typedef qua<double, packed_highp> packed_highp_dquat;
+
898 
+
900  typedef qua<double, packed_mediump> packed_mediump_dquat;
+
901 
+
903  typedef qua<double, packed_lowp> packed_lowp_dquat;
+
904 
+
905  // -- default --
+
906 
+
907 #if(defined(GLM_PRECISION_LOWP_FLOAT))
+ + + + + + + + +
916 
+ + + + + + +
923 
+ + + + + + + + + + + + + + + + + + +
942 
+ + +
945 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
+ + + + + + + + +
954 
+ + + + + + +
961 
+ + + + + + + + + + + + + + + + + + +
980 
+ + +
983 #else //defined(GLM_PRECISION_HIGHP_FLOAT)
+ +
986 
+ +
989 
+ +
992 
+ +
995 
+ +
998 
+ +
1001 
+ +
1004 
+ +
1007 
+ +
1010 
+ +
1013 
+ +
1016 
+ +
1019 
+ +
1022 
+ +
1025 
+ +
1028 
+ +
1031 
+ +
1034 
+ +
1037 
+ +
1040 
+ +
1043 
+ +
1046 
+ +
1049 
+ +
1052 
+ +
1055 
+ +
1058 
+ +
1061 
+ +
1064 
+ +
1067 
+ +
1070 
+ +
1073 
+ +
1076 
+ +
1079 
+ +
1082 
+ +
1085 #endif//GLM_PRECISION
+
1086 
+
1087 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
+ + + + + + + + +
1096 
+ + + + + + +
1103 
+ + + + + + + + + + + + + + + + + + +
1122 
+ + +
1125 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
+ + + + + + + + +
1134 
+ + + + + + +
1141 
+ + + + + + + + + + + + + + + + + + +
1160 
+ + +
1163 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
+ +
1166 
+ +
1169 
+ +
1172 
+ +
1175 
+ +
1178 
+ +
1181 
+ +
1184 
+ +
1187 
+ +
1190 
+ +
1193 
+ +
1196 
+ +
1199 
+ +
1202 
+ +
1205 
+ +
1208 
+ +
1211 
+ +
1214 
+ +
1217 
+ +
1220 
+ +
1223 
+ +
1226 
+ +
1229 
+ +
1232 
+ +
1235 
+ +
1238 
+ +
1241 
+ +
1244 
+ +
1247 
+ +
1250 
+ +
1253 
+ +
1256 
+ +
1259 
+ +
1262 
+ +
1265 #endif//GLM_PRECISION
+
1266 
+
1267 #if(defined(GLM_PRECISION_LOWP_INT))
+ + + + +
1272 #elif(defined(GLM_PRECISION_MEDIUMP_INT))
+ + + + +
1277 #else //defined(GLM_PRECISION_HIGHP_INT)
+ +
1280 
+ +
1283 
+ +
1286 
+ +
1289 
+ +
1292 
+ +
1295 
+ +
1298 
+ +
1301 #endif//GLM_PRECISION
+
1302 
+
1303  // -- Unsigned integer definition --
+
1304 
+
1305 #if(defined(GLM_PRECISION_LOWP_UINT))
+ + + + +
1310 #elif(defined(GLM_PRECISION_MEDIUMP_UINT))
+ + + + +
1315 #else //defined(GLM_PRECISION_HIGHP_UINT)
+ +
1318 
+ +
1321 
+ +
1324 
+ +
1327 
+ +
1330 
+ +
1333 
+ +
1336 
+ +
1339 #endif//GLM_PRECISION
+
1340 
+
1341 #if(defined(GLM_PRECISION_LOWP_BOOL))
+ + + + +
1346 #elif(defined(GLM_PRECISION_MEDIUMP_BOOL))
+ + + + +
1351 #else //defined(GLM_PRECISION_HIGHP_BOOL)
+ +
1354 
+ +
1357 
+ +
1360 
+ +
1363 
+ +
1366 
+ +
1369 
+ +
1372 
+ +
1375 #endif//GLM_PRECISION
+
1376 
+
1378 }//namespace glm
+
+
mat< 3, 2, float, packed_mediump > packed_mediump_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
vec< 1, float, packed_lowp > packed_lowp_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using low prec...
+
packed_highp_bvec2 packed_bvec2
2 components vector tightly packed in memory of bool values.
+
aligned_highp_dmat2x3 aligned_dmat2x3
2 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 1, double, packed_mediump > packed_mediump_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using medium p...
+
mat< 3, 4, float, aligned_lowp > aligned_lowp_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 2, 4, double, packed_lowp > packed_lowp_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
vec< 3, uint, aligned_mediump > aligned_mediump_uvec3
3 components vector aligned in memory of unsigned integer numbers.
+
vec< 4, uint, aligned_highp > aligned_highp_uvec4
4 components vector aligned in memory of unsigned integer numbers.
+
aligned_highp_mat3x3 aligned_mat3x3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 3, 2, float, aligned_lowp > aligned_lowp_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 3, 4, double, aligned_mediump > aligned_mediump_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
mat< 3, 2, float, packed_highp > packed_highp_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
vec< 4, bool, packed_lowp > packed_lowp_bvec4
4 components vector tightly packed in memory of bool values.
+
vec< 3, float, packed_lowp > packed_lowp_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
+
vec< 2, double, aligned_highp > aligned_highp_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using high precision...
+
mat< 3, 3, float, packed_mediump > packed_mediump_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
packed_highp_mat2x2 packed_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
+
aligned_highp_bvec4 aligned_bvec4
4 components vector aligned in memory of bool values.
+
mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
mat< 2, 4, double, aligned_highp > aligned_highp_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 4, 4, double, packed_highp > packed_highp_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
aligned_highp_vec1 aligned_vec1
1 component vector aligned in memory of single-precision floating-point numbers.
+
mat< 4, 3, double, aligned_lowp > aligned_lowp_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
packed_highp_mat4 packed_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 2, 2, float, aligned_highp > aligned_highp_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
vec< 2, float, aligned_mediump > aligned_mediump_vec2
2 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
+
vec< 2, uint, packed_lowp > packed_lowp_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
+
vec< 2, int, aligned_lowp > aligned_lowp_ivec2
2 components vector aligned in memory of signed integer numbers.
+
mat< 3, 4, double, packed_lowp > packed_lowp_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
packed_highp_dmat3x4 packed_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
+
vec< 3, float, packed_mediump > packed_mediump_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
+
packed_highp_mat3 packed_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 3, 4, double, aligned_highp > aligned_highp_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
aligned_highp_mat3 aligned_mat3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
packed_highp_dmat4x2 packed_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
+
aligned_highp_mat2 aligned_mat2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
aligned_highp_bvec1 aligned_bvec1
1 component vector aligned in memory of bool values.
+
vec< 2, bool, packed_highp > packed_highp_bvec2
2 components vector tightly packed in memory of bool values.
+
vec< 2, uint, aligned_lowp > aligned_lowp_uvec2
2 components vector aligned in memory of unsigned integer numbers.
+
packed_highp_dmat3x3 packed_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
+
vec< 3, bool, packed_mediump > packed_mediump_bvec3
3 components vector tightly packed in memory of bool values.
+
vec< 1, double, aligned_lowp > aligned_lowp_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using low precision a...
+
vec< 1, float, aligned_highp > aligned_highp_vec1
1 component vector aligned in memory of single-precision floating-point numbers using high precision ...
+
mat< 4, 4, float, packed_lowp > packed_lowp_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
qua< float, aligned_mediump > aligned_mediump_quat
quaternion aligned in memory of single-precision floating-point numbers using medium precision arithm...
+
vec< 3, double, packed_highp > packed_highp_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
+
mat< 4, 4, double, aligned_highp > aligned_highp_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
qua< float, packed_lowp > packed_lowp_quat
quaternion tightly packed in memory of single-precision floating-point numbers using low precision ar...
+
vec< 4, float, packed_lowp > packed_lowp_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
+
packed_highp_vec4 packed_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers.
+
vec< 4, double, aligned_highp > aligned_highp_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using high precision...
+
mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
vec< 3, uint, packed_mediump > packed_mediump_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
+
vec< 3, uint, aligned_lowp > aligned_lowp_uvec3
3 components vector aligned in memory of unsigned integer numbers.
+
vec< 1, uint, packed_highp > packed_highp_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
+
aligned_highp_mat2x4 aligned_mat2x4
2 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
packed_highp_dmat2x3 packed_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
+
vec< 3, float, aligned_highp > aligned_highp_vec3
3 components vector aligned in memory of single-precision floating-point numbers using high precision...
+
vec< 3, double, packed_lowp > packed_lowp_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
+
mat< 2, 3, float, aligned_mediump > aligned_mediump_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
mat< 4, 2, float, aligned_mediump > aligned_mediump_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
mat< 2, 2, double, aligned_highp > aligned_highp_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
qua< double, packed_lowp > packed_lowp_dquat
quaternion tightly packed in memory of double-precision floating-point numbers using low precision ar...
+
mat< 4, 4, float, aligned_highp > aligned_highp_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
aligned_highp_mat2x2 aligned_mat2x2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
vec< 4, int, aligned_highp > aligned_highp_ivec4
4 components vector aligned in memory of signed integer numbers.
+
packed_highp_mat2x3 packed_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 4, 2, double, packed_lowp > packed_lowp_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
vec< 4, float, packed_mediump > packed_mediump_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
+
mat< 2, 3, float, packed_mediump > packed_mediump_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
mat< 2, 2, float, packed_highp > packed_highp_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 4, 3, double, aligned_highp > aligned_highp_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
vec< 2, double, aligned_mediump > aligned_mediump_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
+
packed_highp_ivec2 packed_ivec2
2 components vector tightly packed in memory of signed integer numbers.
+
vec< 1, bool, aligned_highp > aligned_highp_bvec1
1 component vector aligned in memory of bool values.
+
packed_highp_ivec1 packed_ivec1
1 component vector tightly packed in memory of signed integer numbers.
+
mat< 4, 4, double, packed_lowp > packed_lowp_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
mat< 4, 4, float, packed_highp > packed_highp_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
packed_highp_uvec2 packed_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
+
mat< 3, 4, double, packed_mediump > packed_mediump_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
vec< 2, int, packed_mediump > packed_mediump_ivec2
2 components vector tightly packed in memory of signed integer numbers.
+
vec< 3, bool, packed_highp > packed_highp_bvec3
3 components vector tightly packed in memory of bool values.
+
aligned_highp_mat3x4 aligned_mat3x4
3 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
vec< 3, int, aligned_highp > aligned_highp_ivec3
3 components vector aligned in memory of signed integer numbers.
+
mat< 2, 3, double, aligned_mediump > aligned_mediump_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
aligned_highp_vec3 aligned_vec3
3 components vector aligned in memory of single-precision floating-point numbers.
+
vec< 3, int, packed_highp > packed_highp_ivec3
3 components vector tightly packed in memory of signed integer numbers.
+
vec< 4, uint, packed_mediump > packed_mediump_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
+
packed_highp_dquat packed_dquat
quaternion tightly packed in memory of double-precision floating-point numbers.
+
vec< 4, bool, aligned_lowp > aligned_lowp_bvec4
4 components vector aligned in memory of bool values.
+
packed_highp_ivec4 packed_ivec4
4 components vector tightly packed in memory of signed integer numbers.
+
packed_highp_dmat2 packed_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
+
mat< 4, 4, float, packed_mediump > packed_mediump_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
vec< 3, double, aligned_lowp > aligned_lowp_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using low precision ...
+
vec< 2, uint, packed_highp > packed_highp_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
+
vec< 1, float, packed_highp > packed_highp_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using high pre...
+
vec< 4, int, aligned_lowp > aligned_lowp_ivec4
4 components vector aligned in memory of signed integer numbers.
+
aligned_highp_quat aligned_quat
quaternion tightly aligned in memory of single-precision floating-point numbers.
+
aligned_highp_dmat2x4 aligned_dmat2x4
2 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 1, uint, aligned_mediump > aligned_mediump_uvec1
1 component vector aligned in memory of unsigned integer numbers.
+
mat< 3, 4, float, packed_mediump > packed_mediump_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
packed_highp_ivec3 packed_ivec3
3 components vector tightly packed in memory of signed integer numbers.
+
mat< 4, 4, double, packed_mediump > packed_mediump_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
mat< 4, 2, double, aligned_mediump > aligned_mediump_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
mat< 2, 2, double, packed_highp > packed_highp_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
vec< 3, bool, aligned_mediump > aligned_mediump_bvec3
3 components vector aligned in memory of bool values.
+
packed_highp_dmat2x4 packed_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
+
mat< 4, 2, double, packed_highp > packed_highp_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
vec< 1, float, packed_mediump > packed_mediump_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers using medium p...
+
mat< 4, 2, float, packed_lowp > packed_lowp_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
mat< 3, 2, double, aligned_highp > aligned_highp_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 2, 3, float, packed_highp > packed_highp_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 3, 3, float, aligned_highp > aligned_highp_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
aligned_highp_dvec1 aligned_dvec1
1 component vector aligned in memory of double-precision floating-point numbers.
+
mat< 2, 2, double, packed_highp > packed_highp_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
mat< 4, 4, float, packed_highp > packed_highp_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
aligned_highp_dmat4x3 aligned_dmat4x3
4 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
+
qua< double, aligned_mediump > aligned_mediump_dquat
quaternion aligned in memory of double-precision floating-point numbers using medium precision arithm...
+
vec< 2, int, aligned_highp > aligned_highp_ivec2
2 components vector aligned in memory of signed integer numbers.
+
aligned_highp_mat4 aligned_mat4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 4, 4, float, aligned_highp > aligned_highp_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
aligned_highp_ivec4 aligned_ivec4
4 components vector aligned in memory of signed integer numbers.
+
vec< 2, double, packed_lowp > packed_lowp_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
+
mat< 2, 2, double, aligned_lowp > aligned_lowp_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
mat< 2, 2, float, aligned_highp > aligned_highp_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
mat< 4, 2, double, aligned_highp > aligned_highp_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 4, 2, float, aligned_highp > aligned_highp_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
mat< 2, 2, float, aligned_mediump > aligned_mediump_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
vec< 4, bool, packed_highp > packed_highp_bvec4
4 components vector tightly packed in memory of bool values.
+
aligned_highp_ivec3 aligned_ivec3
3 components vector aligned in memory of signed integer numbers.
+
mat< 2, 4, double, aligned_lowp > aligned_lowp_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
mat< 3, 3, float, aligned_highp > aligned_highp_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
aligned_highp_dmat2x2 aligned_dmat2x2
2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 2, bool, packed_lowp > packed_lowp_bvec2
2 components vector tightly packed in memory of bool values.
+
aligned_highp_uvec3 aligned_uvec3
3 components vector aligned in memory of unsigned integer numbers.
+
mat< 4, 4, float, packed_lowp > packed_lowp_mat4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
vec< 4, int, packed_mediump > packed_mediump_ivec4
4 components vector tightly packed in memory of signed integer numbers.
+
vec< 3, bool, packed_lowp > packed_lowp_bvec3
3 components vector tightly packed in memory of bool values.
+
aligned_highp_dvec4 aligned_dvec4
4 components vector aligned in memory of double-precision floating-point numbers.
+
aligned_highp_dvec3 aligned_dvec3
3 components vector aligned in memory of double-precision floating-point numbers.
+
vec< 3, int, packed_mediump > packed_mediump_ivec3
3 components vector tightly packed in memory of signed integer numbers.
+
vec< 4, int, aligned_mediump > aligned_mediump_ivec4
4 components vector aligned in memory of signed integer numbers.
+
mat< 2, 4, double, packed_mediump > packed_mediump_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 2, bool, aligned_highp > aligned_highp_bvec2
2 components vector aligned in memory of bool values.
+
vec< 1, bool, aligned_lowp > aligned_lowp_bvec1
1 component vector aligned in memory of bool values.
+
vec< 2, float, packed_mediump > packed_mediump_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using medium ...
+
mat< 3, 2, float, packed_lowp > packed_lowp_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
qua< float, aligned_lowp > aligned_lowp_quat
quaternion aligned in memory of single-precision floating-point numbers using low precision arithmeti...
+
packed_highp_dvec3 packed_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers.
+
mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
aligned_highp_dvec2 aligned_dvec2
2 components vector aligned in memory of double-precision floating-point numbers.
+
mat< 4, 3, double, aligned_mediump > aligned_mediump_dmat4x3
4 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
vec< 1, double, aligned_highp > aligned_highp_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using high precision ...
+
mat< 2, 2, double, packed_lowp > packed_lowp_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
packed_highp_dmat3x2 packed_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
+
mat< 4, 4, float, packed_mediump > packed_mediump_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
mat< 4, 3, double, packed_highp > packed_highp_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 3, 2, float, aligned_mediump > aligned_mediump_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
vec< 1, bool, packed_lowp > packed_lowp_bvec1
1 component vector tightly packed in memory of bool values.
+
mat< 2, 4, float, packed_mediump > packed_mediump_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
mat< 3, 4, float, packed_lowp > packed_lowp_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
mat< 3, 3, float, packed_lowp > packed_lowp_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
mat< 2, 4, double, aligned_mediump > aligned_mediump_dmat2x4
2 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
vec< 1, uint, aligned_lowp > aligned_lowp_uvec1
1 component vector aligned in memory of unsigned integer numbers.
+
aligned_highp_dmat2 aligned_dmat2
2 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 2, float, packed_highp > packed_highp_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
+
mat< 4, 2, float, packed_highp > packed_highp_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 4, 2, float, aligned_lowp > aligned_lowp_mat4x2
4 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
mat< 4, 3, float, packed_lowp > packed_lowp_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
mat< 3, 2, double, aligned_lowp > aligned_lowp_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
aligned_highp_vec4 aligned_vec4
4 components vector aligned in memory of single-precision floating-point numbers.
+
vec< 3, uint, packed_highp > packed_highp_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
+
aligned_highp_mat4x4 aligned_mat4x4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
aligned_highp_dmat3x3 aligned_dmat3x3
3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
+
aligned_highp_mat2x3 aligned_mat2x3
2 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 2, 3, double, aligned_lowp > aligned_lowp_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
vec< 4, uint, packed_highp > packed_highp_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
+
mat< 3, 2, double, packed_lowp > packed_lowp_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
packed_highp_uvec4 packed_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
+
aligned_highp_uvec4 aligned_uvec4
4 components vector aligned in memory of unsigned integer numbers.
+
mat< 3, 3, double, aligned_highp > aligned_highp_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 2, 4, float, aligned_highp > aligned_highp_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
mat< 4, 4, double, aligned_highp > aligned_highp_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
mat< 4, 2, double, aligned_lowp > aligned_lowp_dmat4x2
4 by 2 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
mat< 4, 4, double, packed_mediump > packed_mediump_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 3, int, aligned_mediump > aligned_mediump_ivec3
3 components vector aligned in memory of signed integer numbers.
+
mat< 3, 2, double, packed_highp > packed_highp_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
vec< 2, int, packed_lowp > packed_lowp_ivec2
2 components vector tightly packed in memory of signed integer numbers.
+
mat< 4, 4, double, aligned_lowp > aligned_lowp_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
vec< 2, uint, aligned_highp > aligned_highp_uvec2
2 components vector aligned in memory of unsigned integer numbers.
+
mat< 2, 3, double, packed_mediump > packed_mediump_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 1, float, aligned_mediump > aligned_mediump_vec1
1 component vector aligned in memory of single-precision floating-point numbers using medium precisio...
+
mat< 2, 2, double, packed_mediump > packed_mediump_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
mat< 3, 2, float, aligned_highp > aligned_highp_mat3x2
3 by 2 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
vec< 1, uint, packed_mediump > packed_mediump_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
+
mat< 2, 4, float, packed_highp > packed_highp_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
packed_highp_mat4x3 packed_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 2, 4, float, packed_lowp > packed_lowp_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
vec< 3, double, aligned_highp > aligned_highp_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using high precision...
+
vec< 3, int, packed_lowp > packed_lowp_ivec3
3 components vector tightly packed in memory of signed integer numbers.
+
mat< 4, 3, float, aligned_highp > aligned_highp_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
vec< 2, uint, packed_mediump > packed_mediump_uvec2
2 components vector tightly packed in memory of unsigned integer numbers.
+
qua< double, packed_mediump > packed_mediump_dquat
quaternion tightly packed in memory of double-precision floating-point numbers using medium precision...
+
mat< 2, 2, double, packed_lowp > packed_lowp_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 2, 2, double, aligned_mediump > aligned_mediump_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
vec< 1, uint, packed_lowp > packed_lowp_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
+
mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
vec< 4, double, packed_mediump > packed_mediump_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
+
vec< 4, uint, aligned_lowp > aligned_lowp_uvec4
4 components vector aligned in memory of unsigned integer numbers.
+
packed_highp_bvec3 packed_bvec3
3 components vector tightly packed in memory of bool values.
+
mat< 4, 4, float, aligned_lowp > aligned_lowp_mat4x4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
vec< 2, bool, aligned_lowp > aligned_lowp_bvec2
2 components vector aligned in memory of bool values.
+
mat< 3, 3, double, packed_highp > packed_highp_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
qua< double, aligned_highp > aligned_highp_dquat
quaternion aligned in memory of double-precision floating-point numbers using high precision arithmet...
+
mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
mat< 4, 4, double, packed_highp > packed_highp_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
mat< 3, 3, float, packed_lowp > packed_lowp_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
packed_highp_dmat3 packed_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
+
mat< 2, 3, float, aligned_highp > aligned_highp_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
vec< 3, bool, aligned_lowp > aligned_lowp_bvec3
3 components vector aligned in memory of bool values.
+
vec< 3, float, aligned_mediump > aligned_mediump_vec3
3 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
+
mat< 2, 4, float, aligned_mediump > aligned_mediump_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
packed_highp_mat2x4 packed_mat2x4
2 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
+
qua< double, aligned_lowp > aligned_lowp_dquat
quaternion aligned in memory of double-precision floating-point numbers using low precision arithmeti...
+
aligned_highp_dmat3 aligned_dmat3
3 by 3 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 3, float, aligned_lowp > aligned_lowp_vec3
3 components vector aligned in memory of single-precision floating-point numbers using low precision ...
+
vec< 4, bool, aligned_highp > aligned_highp_bvec4
4 components vector aligned in memory of bool values.
+
mat< 3, 3, double, aligned_mediump > aligned_mediump_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
packed_highp_vec3 packed_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers.
+
aligned_highp_uvec2 aligned_uvec2
2 components vector aligned in memory of unsigned integer numbers.
+
mat< 3, 3, double, packed_lowp > packed_lowp_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
vec< 4, uint, aligned_mediump > aligned_mediump_uvec4
4 components vector aligned in memory of unsigned integer numbers.
+
mat< 2, 3, float, aligned_lowp > aligned_lowp_mat2x3
2 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
vec< 4, uint, packed_lowp > packed_lowp_uvec4
4 components vector tightly packed in memory of unsigned integer numbers.
+
mat< 2, 2, float, packed_highp > packed_highp_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
vec< 2, bool, packed_mediump > packed_mediump_bvec2
2 components vector tightly packed in memory of bool values.
+
mat< 3, 4, float, packed_highp > packed_highp_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 3, 4, double, packed_highp > packed_highp_dmat3x4
3 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
packed_highp_uvec3 packed_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
+
packed_highp_vec1 packed_vec1
1 component vector tightly packed in memory of single-precision floating-point numbers.
+
mat< 4, 3, float, packed_highp > packed_highp_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 3, 3, double, packed_lowp > packed_lowp_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
aligned_highp_vec2 aligned_vec2
2 components vector aligned in memory of single-precision floating-point numbers.
+
aligned_highp_mat4x3 aligned_mat4x3
4 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 3, 3, double, packed_mediump > packed_mediump_dmat3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 4, double, packed_highp > packed_highp_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
+
vec< 4, int, packed_lowp > packed_lowp_ivec4
4 components vector tightly packed in memory of signed integer numbers.
+
vec< 1, int, aligned_mediump > aligned_mediump_ivec1
1 component vector aligned in memory of signed integer numbers.
+
vec< 1, bool, packed_mediump > packed_mediump_bvec1
1 component vector tightly packed in memory of bool values.
+
mat< 3, 4, float, aligned_highp > aligned_highp_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using high precision arith...
+
vec< 1, float, aligned_lowp > aligned_lowp_vec1
1 component vector aligned in memory of single-precision floating-point numbers using low precision a...
+
aligned_highp_mat3x2 aligned_mat3x2
3 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 3, 3, float, packed_highp > packed_highp_mat3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
vec< 4, bool, aligned_mediump > aligned_mediump_bvec4
4 components vector aligned in memory of bool values.
+
packed_highp_mat4x2 packed_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
+
aligned_highp_dmat4x2 aligned_dmat4x2
4 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 4, double, aligned_mediump > aligned_mediump_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
+
mat< 2, 3, double, packed_highp > packed_highp_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
vec< 4, float, aligned_mediump > aligned_mediump_vec4
4 components vector aligned in memory of single-precision floating-point numbers using medium precisi...
+
mat< 4, 4, double, packed_lowp > packed_lowp_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
vec< 4, float, aligned_lowp > aligned_lowp_vec4
4 components vector aligned in memory of single-precision floating-point numbers using low precision ...
+
mat< 2, 2, float, packed_mediump > packed_mediump_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
aligned_highp_bvec3 aligned_bvec3
3 components vector aligned in memory of bool values.
+
mat< 4, 4, double, aligned_mediump > aligned_mediump_dmat4x4
4 by 4 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
mat< 3, 3, float, packed_highp > packed_highp_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using high precisio...
+
mat< 4, 2, float, packed_mediump > packed_mediump_mat4x2
4 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
vec< 4, bool, packed_mediump > packed_mediump_bvec4
4 components vector tightly packed in memory of bool values.
+
packed_highp_dmat4 packed_dmat4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
+
packed_highp_dvec1 packed_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers.
+
mat< 3, 3, double, aligned_highp > aligned_highp_dmat3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
vec< 1, double, aligned_mediump > aligned_mediump_dvec1
1 component vector aligned in memory of double-precision floating-point numbers using medium precisio...
+
vec< 2, float, aligned_lowp > aligned_lowp_vec2
2 components vector aligned in memory of single-precision floating-point numbers using low precision ...
+
vec< 1, int, packed_lowp > packed_lowp_ivec1
1 component vector tightly packed in memory of signed integer numbers.
+
mat< 2, 2, float, packed_lowp > packed_lowp_mat2x2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
qua< double, packed_highp > packed_highp_dquat
quaternion tightly packed in memory of double-precision floating-point numbers using high precision a...
+
vec< 3, uint, aligned_highp > aligned_highp_uvec3
3 components vector aligned in memory of unsigned integer numbers.
+
vec< 1, int, packed_mediump > packed_mediump_ivec1
1 component vector tightly packed in memory of signed integer numbers.
+
vec< 2, float, packed_lowp > packed_lowp_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers using low pre...
+
mat< 4, 3, double, packed_mediump > packed_mediump_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 2, int, packed_highp > packed_highp_ivec2
2 components vector tightly packed in memory of signed integer numbers.
+
mat< 4, 3, float, aligned_lowp > aligned_lowp_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
vec< 2, int, aligned_mediump > aligned_mediump_ivec2
2 components vector aligned in memory of signed integer numbers.
+
packed_highp_dmat4x4 packed_dmat4x4
4 by 4 matrix tightly packed in memory of double-precision floating-point numbers.
+
vec< 1, int, aligned_highp > aligned_highp_ivec1
1 component vector aligned in memory of signed integer numbers.
+
packed_highp_mat4x4 packed_mat4x4
4 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 2, 2, float, aligned_lowp > aligned_lowp_mat2x2
2 by 2 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 2, 3, double, aligned_highp > aligned_highp_dmat2x3
2 by 3 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
packed_highp_mat3x2 packed_mat3x2
3 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
+
vec< 4, double, aligned_lowp > aligned_lowp_dvec4
4 components vector aligned in memory of double-precision floating-point numbers using low precision ...
+
vec< 4, double, packed_lowp > packed_lowp_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers using low pre...
+
vec< 3, bool, aligned_highp > aligned_highp_bvec3
3 components vector aligned in memory of bool values.
+
aligned_highp_dmat4 aligned_dmat4
4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
+
aligned_highp_dmat4x4 aligned_dmat4x4
4 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
+
packed_highp_uvec1 packed_uvec1
1 component vector tightly packed in memory of unsigned integer numbers.
+
vec< 1, uint, aligned_highp > aligned_highp_uvec1
1 component vector aligned in memory of unsigned integer numbers.
+
mat< 3, 3, double, packed_highp > packed_highp_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
vec< 1, bool, aligned_mediump > aligned_mediump_bvec1
1 component vector aligned in memory of bool values.
+
vec< 2, double, packed_mediump > packed_mediump_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
+
packed_highp_mat3x3 packed_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers.
+
mat< 3, 3, float, aligned_mediump > aligned_mediump_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
vec< 4, float, packed_highp > packed_highp_vec4
4 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
+
mat< 3, 2, double, packed_mediump > packed_mediump_dmat3x2
3 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 3, int, aligned_lowp > aligned_lowp_ivec3
3 components vector aligned in memory of signed integer numbers.
+
mat< 2, 4, float, aligned_lowp > aligned_lowp_mat2x4
2 by 4 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 2, 2, float, packed_lowp > packed_lowp_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
packed_highp_dvec2 packed_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers.
+
mat< 4, 2, double, packed_mediump > packed_mediump_dmat4x2
4 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
packed_highp_dmat4x3 packed_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers.
+
vec< 1, int, aligned_lowp > aligned_lowp_ivec1
1 component vector aligned in memory of signed integer numbers.
+
mat< 2, 2, float, packed_mediump > packed_mediump_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
aligned_highp_mat4x2 aligned_mat4x2
4 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
packed_highp_dmat2x2 packed_dmat2x2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers.
+
mat< 4, 3, float, packed_mediump > packed_mediump_mat4x3
4 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
vec< 3, uint, packed_lowp > packed_lowp_uvec3
3 components vector tightly packed in memory of unsigned integer numbers.
+
packed_highp_mat2 packed_mat2
2 by 2 matrix tightly packed in memory of single-precision floating-point numbers.
+
vec< 2, double, aligned_lowp > aligned_lowp_dvec2
2 components vector aligned in memory of double-precision floating-point numbers using low precision ...
+
packed_highp_bvec1 packed_bvec1
1 components vector tightly packed in memory of bool values.
+
aligned_highp_ivec1 aligned_ivec1
1 component vector aligned in memory of signed integer numbers.
+
mat< 2, 3, float, packed_lowp > packed_lowp_mat2x3
2 by 3 matrix tightly packed in memory of single-precision floating-point numbers using low precision...
+
packed_highp_dvec4 packed_dvec4
4 components vector tightly packed in memory of double-precision floating-point numbers.
+
packed_highp_bvec4 packed_bvec4
4 components vector tightly packed in memory of bool values.
+
vec< 4, int, packed_highp > packed_highp_ivec4
4 components vector tightly packed in memory of signed integer numbers.
+
vec< 2, float, aligned_highp > aligned_highp_vec2
2 components vector aligned in memory of single-precision floating-point numbers using high precision...
+
vec< 1, double, packed_lowp > packed_lowp_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using low prec...
+
vec< 4, float, aligned_highp > aligned_highp_vec4
4 components vector aligned in memory of single-precision floating-point numbers using high precision...
+
vec< 3, double, aligned_mediump > aligned_mediump_dvec3
3 components vector aligned in memory of double-precision floating-point numbers using medium precisi...
+
mat< 2, 3, double, packed_lowp > packed_lowp_dmat2x3
2 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
aligned_highp_dmat3x2 aligned_dmat3x2
3 by 2 matrix tightly aligned in memory of double-precision floating-point numbers.
+
vec< 2, uint, aligned_mediump > aligned_mediump_uvec2
2 components vector aligned in memory of unsigned integer numbers.
+
mat< 4, 3, float, aligned_mediump > aligned_mediump_mat4x3
4 by 3 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
aligned_highp_ivec2 aligned_ivec2
2 components vector aligned in memory of signed integer numbers.
+
vec< 3, double, packed_mediump > packed_mediump_dvec3
3 components vector tightly packed in memory of double-precision floating-point numbers using medium ...
+
qua< float, aligned_highp > aligned_highp_quat
quaternion aligned in memory of single-precision floating-point numbers using high precision arithmet...
+
mat< 2, 2, double, aligned_highp > aligned_highp_dmat2x2
2 by 2 matrix aligned in memory of double-precision floating-point numbers using high precision arith...
+
mat< 3, 4, double, aligned_lowp > aligned_lowp_dmat3x4
3 by 4 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+
packed_highp_quat packed_quat
quaternion tightly packed in memory of single-precision floating-point numbers.
+
mat< 3, 3, float, packed_mediump > packed_mediump_mat3x3
3 by 3 matrix tightly packed in memory of single-precision floating-point numbers using medium precis...
+
mat< 3, 4, float, aligned_mediump > aligned_mediump_mat3x4
3 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
aligned_highp_uvec1 aligned_uvec1
1 component vector aligned in memory of unsigned integer numbers.
+
qua< float, packed_highp > packed_highp_quat
quaternion tightly packed in memory of single-precision floating-point numbers using high precision a...
+
mat< 2, 2, double, packed_mediump > packed_mediump_dmat2
2 by 2 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
mat< 4, 3, double, packed_lowp > packed_lowp_dmat4x3
4 by 3 matrix tightly packed in memory of double-precision floating-point numbers using low precision...
+
vec< 1, bool, packed_highp > packed_highp_bvec1
1 component vector tightly packed in memory of bool values.
+
mat< 3, 3, float, aligned_lowp > aligned_lowp_mat3x3
3 by 3 matrix aligned in memory of single-precision floating-point numbers using low precision arithm...
+
mat< 4, 4, float, aligned_mediump > aligned_mediump_mat4
4 by 4 matrix aligned in memory of single-precision floating-point numbers using medium precision ari...
+
mat< 3, 2, double, aligned_mediump > aligned_mediump_dmat3x2
3 by 2 matrix aligned in memory of double-precision floating-point numbers using medium precision ari...
+
qua< float, packed_mediump > packed_mediump_quat
quaternion tightly packed in memory of single-precision floating-point numbers using medium precision...
+
packed_highp_mat3x4 packed_mat3x4
3 by 4 matrix tightly packed in memory of single-precision floating-point numbers.
+
packed_highp_vec2 packed_vec2
2 components vector tightly packed in memory of single-precision floating-point numbers.
+
vec< 1, double, packed_highp > packed_highp_dvec1
1 component vector tightly packed in memory of double-precision floating-point numbers using high pre...
+
aligned_highp_bvec2 aligned_bvec2
2 components vector aligned in memory of bool values.
+
mat< 2, 4, double, packed_highp > packed_highp_dmat2x4
2 by 4 matrix tightly packed in memory of double-precision floating-point numbers using high precisio...
+
mat< 3, 3, double, packed_mediump > packed_mediump_dmat3x3
3 by 3 matrix tightly packed in memory of double-precision floating-point numbers using medium precis...
+
vec< 3, float, packed_highp > packed_highp_vec3
3 components vector tightly packed in memory of single-precision floating-point numbers using high pr...
+
vec< 2, bool, aligned_mediump > aligned_mediump_bvec2
2 components vector aligned in memory of bool values.
+
vec< 2, double, packed_highp > packed_highp_dvec2
2 components vector tightly packed in memory of double-precision floating-point numbers using high pr...
+
aligned_highp_dmat3x4 aligned_dmat3x4
3 by 4 matrix tightly aligned in memory of double-precision floating-point numbers.
+
aligned_highp_dquat aligned_dquat
quaternion tightly aligned in memory of double-precision floating-point numbers.
+
vec< 1, int, packed_highp > packed_highp_ivec1
1 component vector tightly packed in memory of signed integer numbers.
+
mat< 3, 3, double, aligned_lowp > aligned_lowp_dmat3x3
3 by 3 matrix aligned in memory of double-precision floating-point numbers using low precision arithm...
+ + + + diff --git a/include/glm/doc/api/a01726.html b/include/glm/doc/api/a01726.html new file mode 100644 index 0000000..6eac251 --- /dev/null +++ b/include/glm/doc/api/a01726.html @@ -0,0 +1,717 @@ + + + + + + + +1.0.2 API documentation: type_aligned.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
gtx/type_aligned.hpp File Reference
+
+
+ +

GLM_GTX_type_aligned +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 GLM_ALIGNED_TYPEDEF (dquat, aligned_dquat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (dvec1, aligned_dvec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (dvec2, aligned_dvec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec3, aligned_dvec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (dvec4, aligned_dvec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x2, aligned_f32mat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x3, aligned_f32mat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat2x4, aligned_f32mat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x2, aligned_f32mat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x3, aligned_f32mat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat3x4, aligned_f32mat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x2, aligned_f32mat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x3, aligned_f32mat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32mat4x4, aligned_f32mat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f32quat, aligned_f32quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec1, aligned_f32vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec2, aligned_f32vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec3, aligned_f32vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f32vec4, aligned_f32vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x2, aligned_f64mat2x2, 32)
 Double-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x3, aligned_f64mat2x3, 32)
 Double-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat2x4, aligned_f64mat2x4, 32)
 Double-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x2, aligned_f64mat3x2, 32)
 Double-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x3, aligned_f64mat3x3, 32)
 Double-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat3x4, aligned_f64mat3x4, 32)
 Double-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x2, aligned_f64mat4x2, 32)
 Double-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x3, aligned_f64mat4x3, 32)
 Double-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64mat4x4, aligned_f64mat4x4, 32)
 Double-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (f64quat, aligned_f64quat, 32)
 Double-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec1, aligned_f64vec1, 8)
 Double-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec2, aligned_f64vec2, 16)
 Double-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec3, aligned_f64vec3, 32)
 Double-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (f64vec4, aligned_f64vec4, 32)
 Double-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_f32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32, aligned_float32, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float32_t, aligned_float32_t, 4)
 32 bit single-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_f64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64, aligned_float64, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (float64_t, aligned_float64_t, 8)
 64 bit double-qualifier floating-point aligned scalar. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x2, aligned_fmat2x2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x3, aligned_fmat2x3, 16)
 Single-qualifier floating-point aligned 2x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat2x4, aligned_fmat2x4, 16)
 Single-qualifier floating-point aligned 2x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x2, aligned_fmat3x2, 16)
 Single-qualifier floating-point aligned 3x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x3, aligned_fmat3x3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat3x4, aligned_fmat3x4, 16)
 Single-qualifier floating-point aligned 3x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x2, aligned_fmat4x2, 16)
 Single-qualifier floating-point aligned 4x2 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x3, aligned_fmat4x3, 16)
 Single-qualifier floating-point aligned 4x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fmat4x4, aligned_fmat4x4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (fvec1, aligned_fvec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (fvec2, aligned_fvec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec3, aligned_fvec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (fvec4, aligned_fvec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i16, aligned_highp_i16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i32, aligned_highp_i32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i64, aligned_highp_i64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_i8, aligned_highp_i8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16, aligned_highp_int16, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int16_t, aligned_highp_int16_t, 2)
 High qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32, aligned_highp_int32, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int32_t, aligned_highp_int32_t, 4)
 High qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64, aligned_highp_int64, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int64_t, aligned_highp_int64_t, 8)
 High qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8, aligned_highp_int8, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_int8_t, aligned_highp_int8_t, 1)
 High qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u16, aligned_highp_u16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u32, aligned_highp_u32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u64, aligned_highp_u64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_u8, aligned_highp_u8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16, aligned_highp_uint16, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint16_t, aligned_highp_uint16_t, 2)
 High qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32, aligned_highp_uint32, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint32_t, aligned_highp_uint32_t, 4)
 High qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64, aligned_highp_uint64, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint64_t, aligned_highp_uint64_t, 8)
 High qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8, aligned_highp_uint8, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (highp_uint8_t, aligned_highp_uint8_t, 1)
 High qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16, aligned_i16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec1, aligned_i16vec1, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec2, aligned_i16vec2, 4)
 Default qualifier 16 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec3, aligned_i16vec3, 8)
 Default qualifier 16 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i16vec4, aligned_i16vec4, 8)
 Default qualifier 16 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32, aligned_i32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec1, aligned_i32vec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec2, aligned_i32vec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec3, aligned_i32vec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i32vec4, aligned_i32vec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64, aligned_i64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec1, aligned_i64vec1, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec2, aligned_i64vec2, 16)
 Default qualifier 64 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec3, aligned_i64vec3, 32)
 Default qualifier 64 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i64vec4, aligned_i64vec4, 32)
 Default qualifier 64 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8, aligned_i8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec1, aligned_i8vec1, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec2, aligned_i8vec2, 2)
 Default qualifier 8 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec3, aligned_i8vec3, 4)
 Default qualifier 8 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (i8vec4, aligned_i8vec4, 4)
 Default qualifier 8 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (int16, aligned_int16, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int16_t, aligned_int16_t, 2)
 Default qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32, aligned_int32, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int32_t, aligned_int32_t, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64, aligned_int64, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int64_t, aligned_int64_t, 8)
 Default qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8, aligned_int8, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (int8_t, aligned_int8_t, 1)
 Default qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec1, aligned_ivec1, 4)
 Default qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec2, aligned_ivec2, 8)
 Default qualifier 32 bit signed integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec3, aligned_ivec3, 16)
 Default qualifier 32 bit signed integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (ivec4, aligned_ivec4, 16)
 Default qualifier 32 bit signed integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i16, aligned_lowp_i16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i32, aligned_lowp_i32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i64, aligned_lowp_i64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_i8, aligned_lowp_i8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16, aligned_lowp_int16, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int16_t, aligned_lowp_int16_t, 2)
 Low qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32, aligned_lowp_int32, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int32_t, aligned_lowp_int32_t, 4)
 Low qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64, aligned_lowp_int64, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int64_t, aligned_lowp_int64_t, 8)
 Low qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8, aligned_lowp_int8, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_int8_t, aligned_lowp_int8_t, 1)
 Low qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u16, aligned_lowp_u16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u32, aligned_lowp_u32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u64, aligned_lowp_u64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_u8, aligned_lowp_u8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16, aligned_lowp_uint16, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint16_t, aligned_lowp_uint16_t, 2)
 Low qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32, aligned_lowp_uint32, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint32_t, aligned_lowp_uint32_t, 4)
 Low qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64, aligned_lowp_uint64, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint64_t, aligned_lowp_uint64_t, 8)
 Low qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8, aligned_lowp_uint8, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (lowp_uint8_t, aligned_lowp_uint8_t, 1)
 Low qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mat2, aligned_mat2, 16)
 Single-qualifier floating-point aligned 1x1 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat3, aligned_mat3, 16)
 Single-qualifier floating-point aligned 3x3 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mat4, aligned_mat4, 16)
 Single-qualifier floating-point aligned 4x4 matrix. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i16, aligned_mediump_i16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i32, aligned_mediump_i32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i64, aligned_mediump_i64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_i8, aligned_mediump_i8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16, aligned_mediump_int16, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int16_t, aligned_mediump_int16_t, 2)
 Medium qualifier 16 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32, aligned_mediump_int32, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int32_t, aligned_mediump_int32_t, 4)
 Medium qualifier 32 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64, aligned_mediump_int64, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int64_t, aligned_mediump_int64_t, 8)
 Medium qualifier 64 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8, aligned_mediump_int8, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_int8_t, aligned_mediump_int8_t, 1)
 Medium qualifier 8 bit signed integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u16, aligned_mediump_u16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u32, aligned_mediump_u32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u64, aligned_mediump_u64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_u8, aligned_mediump_u8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16, aligned_mediump_uint16, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint16_t, aligned_mediump_uint16_t, 2)
 Medium qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32, aligned_mediump_uint32, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint32_t, aligned_mediump_uint32_t, 4)
 Medium qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64, aligned_mediump_uint64, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint64_t, aligned_mediump_uint64_t, 8)
 Medium qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8, aligned_mediump_uint8, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (mediump_uint8_t, aligned_mediump_uint8_t, 1)
 Medium qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_fquat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (quat, aligned_quat, 16)
 Single-qualifier floating-point aligned quaternion. More...
 
 GLM_ALIGNED_TYPEDEF (u16, aligned_u16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec1, aligned_u16vec1, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec2, aligned_u16vec2, 4)
 Default qualifier 16 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec3, aligned_u16vec3, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u16vec4, aligned_u16vec4, 8)
 Default qualifier 16 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32, aligned_u32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec1, aligned_u32vec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec2, aligned_u32vec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec3, aligned_u32vec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u32vec4, aligned_u32vec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64, aligned_u64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec1, aligned_u64vec1, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec2, aligned_u64vec2, 16)
 Default qualifier 64 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec3, aligned_u64vec3, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u64vec4, aligned_u64vec4, 32)
 Default qualifier 64 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8, aligned_u8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec1, aligned_u8vec1, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec2, aligned_u8vec2, 2)
 Default qualifier 8 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec3, aligned_u8vec3, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (u8vec4, aligned_u8vec4, 4)
 Default qualifier 8 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16, aligned_uint16, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint16_t, aligned_uint16_t, 2)
 Default qualifier 16 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32, aligned_uint32, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint32_t, aligned_uint32_t, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64, aligned_uint64, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint64_t, aligned_uint64_t, 8)
 Default qualifier 64 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8, aligned_uint8, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uint8_t, aligned_uint8_t, 1)
 Default qualifier 8 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec1, aligned_uvec1, 4)
 Default qualifier 32 bit unsigned integer aligned scalar type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec2, aligned_uvec2, 8)
 Default qualifier 32 bit unsigned integer aligned vector of 2 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec3, aligned_uvec3, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 3 components type. More...
 
 GLM_ALIGNED_TYPEDEF (uvec4, aligned_uvec4, 16)
 Default qualifier 32 bit unsigned integer aligned vector of 4 components type. More...
 
 GLM_ALIGNED_TYPEDEF (vec1, aligned_vec1, 4)
 Single-qualifier floating-point aligned vector of 1 component. More...
 
 GLM_ALIGNED_TYPEDEF (vec2, aligned_vec2, 8)
 Single-qualifier floating-point aligned vector of 2 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec3, aligned_vec3, 16)
 Single-qualifier floating-point aligned vector of 3 components. More...
 
 GLM_ALIGNED_TYPEDEF (vec4, aligned_vec4, 16)
 Single-qualifier floating-point aligned vector of 4 components. More...
 
+

Detailed Description

+

GLM_GTX_type_aligned

+
See also
Core features (dependence)
+
+GLM_GTC_quaternion (dependence)
+ +

Definition in file gtx/type_aligned.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01726_source.html b/include/glm/doc/api/a01726_source.html new file mode 100644 index 0000000..2a79eff --- /dev/null +++ b/include/glm/doc/api/a01726_source.html @@ -0,0 +1,829 @@ + + + + + + + +1.0.2 API documentation: type_aligned.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx/type_aligned.hpp
+
+
+Go to the documentation of this file.
1 
+
14 #pragma once
+
15 
+
16 // Dependency:
+
17 #include "../gtc/type_precision.hpp"
+
18 #include "../gtc/quaternion.hpp"
+
19 
+
20 #ifndef GLM_ENABLE_EXPERIMENTAL
+
21 # pragma message("GLM: GLM_GTX_type_aligned is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")
+
22 #elif GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
23 # pragma message("GLM: GLM_GTX_type_aligned extension included")
+
24 #endif
+
25 
+
26 namespace glm
+
27 {
+
29  // Signed int vector types
+
30 
+
33 
+
36  GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1);
+
37 
+
40  GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2);
+
41 
+
44  GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4);
+
45 
+
48  GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8);
+
49 
+
50 
+
53  GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1);
+
54 
+
57  GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2);
+
58 
+
61  GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4);
+
62 
+
65  GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8);
+
66 
+
67 
+
70  GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1);
+
71 
+
74  GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2);
+
75 
+
78  GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4);
+
79 
+
82  GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8);
+
83 
+
84 
+
87  GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1);
+
88 
+
91  GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2);
+
92 
+
95  GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4);
+
96 
+
99  GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8);
+
100 
+
101 
+
104  GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1);
+
105 
+
108  GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2);
+
109 
+
112  GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4);
+
113 
+
116  GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8);
+
117 
+
118 
+
121  GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1);
+
122 
+
125  GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2);
+
126 
+
129  GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4);
+
130 
+
133  GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8);
+
134 
+
135 
+
138  GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1);
+
139 
+
142  GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2);
+
143 
+
146  GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4);
+
147 
+
150  GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8);
+
151 
+
152 
+
155  GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1);
+
156 
+
159  GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2);
+
160 
+
163  GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4);
+
164 
+
167  GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8);
+
168 
+
169 
+
172  GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1);
+
173 
+
176  GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2);
+
177 
+
180  GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4);
+
181 
+
184  GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8);
+
185 
+
186 
+
189  GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1);
+
190 
+
193  GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2);
+
194 
+
197  GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4);
+
198 
+
201  GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8);
+
202 
+
203 
+
206  GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1);
+
207 
+
210  GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2);
+
211 
+
214  GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4);
+
215 
+
218  GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8);
+
219 
+
220 
+
223  GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1);
+
224 
+
227  GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2);
+
228 
+
231  GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4);
+
232 
+
235  GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8);
+
236 
+
237 
+ +
241 
+ +
245 
+ +
249 
+ +
253 
+
254 
+
257  GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1);
+
258 
+
261  GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2);
+
262 
+
265  GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4);
+
266 
+
269  GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4);
+
270 
+
271 
+
274  GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2);
+
275 
+
278  GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4);
+
279 
+
282  GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8);
+
283 
+
286  GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8);
+
287 
+
288 
+
291  GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4);
+
292 
+
295  GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8);
+
296 
+
299  GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16);
+
300 
+
303  GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16);
+
304 
+
305 
+
308  GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8);
+
309 
+
312  GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16);
+
313 
+
316  GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32);
+
317 
+
320  GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32);
+
321 
+
322 
+
324  // Unsigned int vector types
+
325 
+
328  GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1);
+
329 
+
332  GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2);
+
333 
+
336  GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4);
+
337 
+
340  GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8);
+
341 
+
342 
+
345  GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1);
+
346 
+
349  GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2);
+
350 
+
353  GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4);
+
354 
+
357  GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8);
+
358 
+
359 
+
362  GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1);
+
363 
+
366  GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2);
+
367 
+
370  GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4);
+
371 
+
374  GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8);
+
375 
+
376 
+
379  GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1);
+
380 
+
383  GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2);
+
384 
+
387  GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4);
+
388 
+
391  GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8);
+
392 
+
393 
+
396  GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1);
+
397 
+
400  GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2);
+
401 
+
404  GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4);
+
405 
+
408  GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8);
+
409 
+
410 
+
413  GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1);
+
414 
+
417  GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2);
+
418 
+
421  GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4);
+
422 
+
425  GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8);
+
426 
+
427 
+
430  GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1);
+
431 
+
434  GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2);
+
435 
+
438  GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4);
+
439 
+
442  GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8);
+
443 
+
444 
+
447  GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1);
+
448 
+
451  GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2);
+
452 
+
455  GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4);
+
456 
+
459  GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8);
+
460 
+
461 
+
464  GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1);
+
465 
+
468  GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2);
+
469 
+
472  GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4);
+
473 
+
476  GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8);
+
477 
+
478 
+
481  GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1);
+
482 
+
485  GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2);
+
486 
+
489  GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4);
+
490 
+
493  GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8);
+
494 
+
495 
+
498  GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1);
+
499 
+
502  GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2);
+
503 
+
506  GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4);
+
507 
+
510  GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8);
+
511 
+
512 
+
515  GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1);
+
516 
+
519  GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2);
+
520 
+
523  GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4);
+
524 
+
527  GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8);
+
528 
+
529 
+ +
533 
+ +
537 
+ +
541 
+ +
545 
+
546 
+
549  GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1);
+
550 
+
553  GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2);
+
554 
+
557  GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4);
+
558 
+
561  GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4);
+
562 
+
563 
+
566  GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2);
+
567 
+
570  GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4);
+
571 
+
574  GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8);
+
575 
+
578  GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8);
+
579 
+
580 
+
583  GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4);
+
584 
+
587  GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8);
+
588 
+
591  GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16);
+
592 
+
595  GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16);
+
596 
+
597 
+
600  GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8);
+
601 
+
604  GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16);
+
605 
+
608  GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32);
+
609 
+
612  GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32);
+
613 
+
614 
+
616  // Float vector types
+
617 
+
620  GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4);
+
621 
+
624  GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4);
+
625 
+
628  GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4);
+
629 
+
630 # ifndef GLM_FORCE_SINGLE_ONLY
+
631 
+
634  GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8);
+
635 
+
638  GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8);
+
639 
+
642  GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8);
+
643 
+
644 # endif//GLM_FORCE_SINGLE_ONLY
+
645 
+
646 
+ +
650 
+ +
654 
+ +
658 
+ +
662 
+
663 
+
666  GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4);
+
667 
+
670  GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8);
+
671 
+
674  GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16);
+
675 
+
678  GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16);
+
679 
+
680 
+
683  GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4);
+
684 
+
687  GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8);
+
688 
+
691  GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16);
+
692 
+
695  GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16);
+
696 
+
697 
+ +
701 
+ +
705 
+ +
709 
+ +
713 
+
714 
+
715 # ifndef GLM_FORCE_SINGLE_ONLY
+
716 
+
719  GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8);
+
720 
+
723  GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16);
+
724 
+
727  GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32);
+
728 
+
731  GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32);
+
732 
+
733 # endif//GLM_FORCE_SINGLE_ONLY
+
734 
+
736  // Float matrix types
+
737 
+
740  //typedef detail::tmat1<f32> mat1;
+
741 
+ +
745 
+ +
749 
+ +
753 
+
754 
+
757  //typedef detail::tmat1x1<f32> mat1;
+
758 
+ +
762 
+ +
766 
+ +
770 
+
771 
+
774  //typedef detail::tmat1x1<f32> fmat1;
+
775 
+
778  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16);
+
779 
+
782  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16);
+
783 
+
786  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16);
+
787 
+
788 
+
791  //typedef f32 fmat1x1;
+
792 
+
795  GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16);
+
796 
+
799  GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16);
+
800 
+
803  GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16);
+
804 
+
807  GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16);
+
808 
+
811  GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16);
+
812 
+
815  GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16);
+
816 
+
819  GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16);
+
820 
+
823  GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16);
+
824 
+
827  GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16);
+
828 
+
829 
+
832  //typedef detail::tmat1x1<f32, defaultp> f32mat1;
+
833 
+
836  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16);
+
837 
+
840  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16);
+
841 
+
844  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16);
+
845 
+
846 
+
849  //typedef f32 f32mat1x1;
+
850 
+
853  GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16);
+
854 
+
857  GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16);
+
858 
+
861  GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16);
+
862 
+
865  GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16);
+
866 
+
869  GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16);
+
870 
+
873  GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16);
+
874 
+
877  GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16);
+
878 
+
881  GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16);
+
882 
+
885  GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16);
+
886 
+
887 
+
888 # ifndef GLM_FORCE_SINGLE_ONLY
+
889 
+
892  //typedef detail::tmat1x1<f64, defaultp> f64mat1;
+
893 
+
896  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32);
+
897 
+
900  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32);
+
901 
+
904  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32);
+
905 
+
906 
+
909  //typedef f64 f64mat1x1;
+
910 
+
913  GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32);
+
914 
+
917  GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32);
+
918 
+
921  GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32);
+
922 
+
925  GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32);
+
926 
+
929  GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32);
+
930 
+
933  GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32);
+
934 
+
937  GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32);
+
938 
+
941  GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32);
+
942 
+
945  GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32);
+
946 
+
947 # endif//GLM_FORCE_SINGLE_ONLY
+
948 
+
949 
+
951  // Quaternion types
+
952 
+ +
956 
+
959  GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16);
+
960 
+ +
964 
+
967  GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16);
+
968 
+
969 # ifndef GLM_FORCE_SINGLE_ONLY
+
970 
+
973  GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32);
+
974 
+
975 # endif//GLM_FORCE_SINGLE_ONLY
+
976 
+
978 }//namespace glm
+
979 
+
980 #include "type_aligned.inl"
+
+
vec< 2, int16, defaultp > i16vec2
16 bit signed integer vector of 2 components type.
+
mat< 3, 3, float, defaultp > mat3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
uint64 uint64_t
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:145
+
uint64 u64
Default qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:136
+
mat< 2, 3, f64, defaultp > f64mat2x3
Double-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:783
+
mat< 2, 2, f64, defaultp > f64mat2x2
Double-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:782
+
vec< 3, unsigned int, defaultp > uvec3
3 components vector of unsigned integer numbers.
+
aligned_highp_mat3x3 aligned_mat3x3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
mat< 4, 2, f32, defaultp > f32mat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:708
+
qua< double, defaultp > dquat
Quaternion of double-precision floating-point numbers.
+
int16 mediump_int16_t
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:55
+
int64 mediump_int64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:79
+
int32 highp_i32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:61
+
mat< 2, 3, f32, defaultp > f32mat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:703
+
int16 highp_i16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:47
+
uint16 mediump_u16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:106
+
mat< 4, 3, f32, defaultp > fmat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:669
+
detail::uint32 uint32
32 bit unsigned integer type.
+
uint32 mediump_uint32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:125
+
aligned_highp_vec1 aligned_vec1
1 component vector aligned in memory of single-precision floating-point numbers.
+
uint64 highp_uint64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:140
+
int8 mediump_int8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:37
+
vec< 4, int, defaultp > ivec4
4 components vector of signed integer numbers.
Definition: vector_int4.hpp:15
+
vec< 3, f64, defaultp > f64vec3
Double-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:505
+
vec< 2, unsigned int, defaultp > uvec2
2 components vector of unsigned integer numbers.
+
int64 lowp_i64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:73
+
int32 highp_int32
High qualifier 32 bit signed integer type.
Definition: fwd.hpp:66
+
aligned_highp_mat3 aligned_mat3
3 by 3 matrix tightly aligned in memory of single-precision floating-point numbers.
+
int8 mediump_int8_t
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:41
+
int16 highp_int16_t
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:56
+
int64 lowp_int64_t
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:82
+
aligned_highp_mat2 aligned_mat2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
vec< 2, uint16, defaultp > u16vec2
16 bit unsigned integer vector of 2 components type.
+
vec< 2, int64, defaultp > i64vec2
64 bit signed integer vector of 2 components type.
+
vec< 4, uint8, defaultp > u8vec4
8 bit unsigned integer vector of 4 components type.
+
int32 mediump_int32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:65
+
uint32 u32
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:122
+
double float64
Double-qualifier floating-point scalar.
Definition: fwd.hpp:173
+
vec< 3, int8, defaultp > i8vec3
8 bit signed integer vector of 3 components type.
+
uint16 lowp_uint16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:110
+
uint32 highp_uint32_t
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:130
+
vec< 2, int32, defaultp > i32vec2
32 bit signed integer vector of 2 components type.
+
mat< 2, 4, f32, defaultp > fmat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:664
+
int8 lowp_i8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:31
+
uint16 uint16_t
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:117
+
uint8 u8
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:94
+
qua< f64, defaultp > f64quat
Double-qualifier floating-point quaternion.
Definition: fwd.hpp:1230
+
aligned_highp_mat2x2 aligned_mat2x2
2 by 2 matrix tightly aligned in memory of single-precision floating-point numbers.
+
int64 lowp_int64
Low qualifier 64 bit signed integer type.
Definition: fwd.hpp:78
+
mat< 2, 3, f32, defaultp > fmat2x3
Single-qualifier floating-point 2x3 matrix.
Definition: fwd.hpp:663
+
mat< 4, 4, float, defaultp > mat4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
mat< 4, 3, f32, defaultp > f32mat4x3
Single-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:709
+
int16 lowp_i16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:45
+
int32 lowp_i32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:59
+
int32 mediump_i32
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:60
+
vec< 1, uint8, defaultp > u8vec1
8 bit unsigned integer vector of 1 component type.
+
int8 lowp_int8
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:36
+
uint64 mediump_uint64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:139
+
detail::int16 int16
16 bit signed integer type.
+
vec< 1, int16, defaultp > i16vec1
16 bit signed integer vector of 1 component type.
+
mat< 3, 2, f32, defaultp > f32mat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:705
+
GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)
Double-qualifier floating-point aligned quaternion.
+
detail::uint64 uint64
64 bit unsigned integer type.
+
int8 mediump_i8
Medium qualifier 8 bit signed integer type.
Definition: fwd.hpp:32
+
int16 i16
16 bit signed integer type.
Definition: fwd.hpp:48
+
uint8 lowp_u8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:91
+
mat< 3, 3, f64, defaultp > f64mat3x3
Double-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:786
+
uint16 highp_uint16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:112
+
uint32 lowp_uint32_t
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:128
+
aligned_highp_vec3 aligned_vec3
3 components vector aligned in memory of single-precision floating-point numbers.
+
vec< 4, int32, defaultp > i32vec4
32 bit signed integer vector of 4 components type.
+
mat< 4, 2, f64, defaultp > f64mat4x2
Double-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:788
+
int16 int16_t
16 bit signed integer type.
Definition: fwd.hpp:57
+
mat< 3, 3, f32, defaultp > f32mat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:706
+
vec< 2, int8, defaultp > i8vec2
8 bit signed integer vector of 2 components type.
+
vec< 2, float, defaultp > vec2
2 components vector of single-precision floating-point numbers.
+
aligned_highp_quat aligned_quat
quaternion tightly aligned in memory of single-precision floating-point numbers.
+
mat< 4, 3, f64, defaultp > f64mat4x3
Double-qualifier floating-point 4x3 matrix.
Definition: fwd.hpp:789
+
vec< 2, f32, defaultp > f32vec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:464
+
mat< 2, 4, f64, defaultp > f64mat2x4
Double-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:784
+
double float64_t
Default 64 bit double-qualifier floating-point scalar.
Definition: fwd.hpp:178
+
vec< 4, unsigned int, defaultp > uvec4
4 components vector of unsigned integer numbers.
+
aligned_highp_dvec1 aligned_dvec1
1 component vector aligned in memory of double-precision floating-point numbers.
+
vec< 4, uint32, defaultp > u32vec4
32 bit unsigned integer vector of 4 components type.
+
vec< 2, int, defaultp > ivec2
2 components vector of signed integer numbers.
Definition: vector_int2.hpp:15
+
uint64 mediump_uint64_t
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:143
+
aligned_highp_mat4 aligned_mat4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
aligned_highp_ivec4 aligned_ivec4
4 components vector aligned in memory of signed integer numbers.
+
int16 highp_int16
High qualifier 16 bit signed integer type.
Definition: fwd.hpp:52
+
vec< 1, int8, defaultp > i8vec1
8 bit signed integer vector of 1 component type.
+
aligned_highp_ivec3 aligned_ivec3
3 components vector aligned in memory of signed integer numbers.
+
int8 highp_int8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:38
+
vec< 3, uint16, defaultp > u16vec3
16 bit unsigned integer vector of 3 components type.
+
vec< 3, f32, defaultp > fvec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:445
+
aligned_highp_uvec3 aligned_uvec3
3 components vector aligned in memory of unsigned integer numbers.
+
vec< 4, int16, defaultp > i16vec4
16 bit signed integer vector of 4 components type.
+
int16 lowp_int16_t
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:54
+
vec< 1, f64, defaultp > f64vec1
Double-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:503
+
aligned_highp_dvec4 aligned_dvec4
4 components vector aligned in memory of double-precision floating-point numbers.
+
mat< 3, 2, f32, defaultp > fmat3x2
Single-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:665
+
aligned_highp_dvec3 aligned_dvec3
3 components vector aligned in memory of double-precision floating-point numbers.
+
vec< 1, float, defaultp > vec1
1 components vector of single-precision floating-point numbers.
+
vec< 3, int32, defaultp > i32vec3
32 bit signed integer vector of 3 components type.
+
detail::uint8 uint8
8 bit unsigned integer type.
+
aligned_highp_dvec2 aligned_dvec2
2 components vector aligned in memory of double-precision floating-point numbers.
+
int64 highp_i64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:75
+
mat< 3, 2, f64, defaultp > f64mat3x2
Double-qualifier floating-point 3x2 matrix.
Definition: fwd.hpp:785
+
int64 highp_int64_t
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:84
+
float float32_t
Default 32 bit single-qualifier floating-point scalar.
Definition: fwd.hpp:162
+
mat< 3, 3, f32, defaultp > fmat3x3
Single-qualifier floating-point 3x3 matrix.
Definition: fwd.hpp:666
+
int32 int32_t
32 bit signed integer type.
Definition: fwd.hpp:71
+
uint8 lowp_uint8_t
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:100
+
vec< 4, uint64, defaultp > u64vec4
64 bit unsigned integer vector of 4 components type.
+
vec< 4, int64, defaultp > i64vec4
64 bit signed integer vector of 4 components type.
+
float float32
Single-qualifier floating-point scalar.
Definition: fwd.hpp:157
+
int32 lowp_int32
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:64
+
int64 int64_t
64 bit signed integer type.
Definition: fwd.hpp:85
+
vec< 4, uint16, defaultp > u16vec4
16 bit unsigned integer vector of 4 components type.
+
uint8 highp_uint8_t
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:102
+
aligned_highp_vec4 aligned_vec4
4 components vector aligned in memory of single-precision floating-point numbers.
+
aligned_highp_mat4x4 aligned_mat4x4
4 by 4 matrix tightly aligned in memory of single-precision floating-point numbers.
+
int64 mediump_int64_t
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:83
+
int64 mediump_i64
Medium qualifier 64 bit signed integer type.
Definition: fwd.hpp:74
+
vec< 1, double, defaultp > dvec1
1 components vector of double-precision floating-point numbers.
+
uint32 highp_uint32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:126
+
uint64 lowp_uint64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:138
+
vec< 3, f32, defaultp > f32vec3
Single-qualifier floating-point vector of 3 components.
Definition: fwd.hpp:465
+
aligned_highp_uvec4 aligned_uvec4
4 components vector aligned in memory of unsigned integer numbers.
+
int8 highp_i8
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:33
+
uint8 highp_uint8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:98
+
vec< 1, int, defaultp > ivec1
1 component vector of signed integer numbers.
Definition: vector_int1.hpp:28
+
uint8 mediump_uint8_t
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:101
+
mat< 4, 4, f32, defaultp > f32mat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:710
+
int16 mediump_i16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:46
+
vec< 3, int64, defaultp > i64vec3
64 bit signed integer vector of 3 components type.
+
uint16 mediump_uint16_t
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:115
+
vec< 1, int32, defaultp > i32vec1
32 bit signed integer vector of 1 component type.
+
uint8 lowp_uint8
Low qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:96
+
int16 mediump_int16
Medium qualifier 16 bit signed integer type.
Definition: fwd.hpp:51
+
int64 highp_int64
High qualifier 64 bit signed integer type.
Definition: fwd.hpp:80
+
mat< 3, 4, f32, defaultp > f32mat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:707
+
uint32 uint32_t
Default qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:131
+
mat< 2, 2, f32, defaultp > fmat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:662
+
mat< 3, 4, f32, defaultp > fmat3x4
Single-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:667
+
int32 mediump_int32_t
Medium qualifier 32 bit signed integer type.
Definition: fwd.hpp:69
+
mat< 2, 2, float, defaultp > mat2x2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
int64 i64
64 bit signed integer type.
Definition: fwd.hpp:76
+
uint8 uint8_t
Default qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:103
+
vec< 4, double, defaultp > dvec4
4 components vector of double-precision floating-point numbers.
+
mat< 4, 4, f32, defaultp > fmat4x4
Single-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:670
+
uint16 mediump_uint16
Medium qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:111
+
mat< 2, 2, float, defaultp > mat2
2 columns of 2 components matrix of single-precision floating-point numbers.
+
qua< f32, defaultp > f32quat
Single-qualifier floating-point quaternion.
Definition: fwd.hpp:1220
+
int8 int8_t
8 bit signed integer type.
Definition: fwd.hpp:43
+
vec< 1, f32, defaultp > f32vec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:463
+
vec< 4, f64, defaultp > f64vec4
Double-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:506
+
vec< 1, f32, defaultp > fvec1
Single-qualifier floating-point vector of 1 component.
Definition: fwd.hpp:443
+
aligned_highp_uvec2 aligned_uvec2
2 components vector aligned in memory of unsigned integer numbers.
+
uint64 highp_u64
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:135
+
int16 lowp_int16
Low qualifier 16 bit signed integer type.
Definition: fwd.hpp:50
+
vec< 3, float, defaultp > vec3
3 components vector of single-precision floating-point numbers.
+
int8 highp_int8_t
High qualifier 8 bit signed integer type.
Definition: fwd.hpp:42
+
vec< 4, f32, defaultp > f32vec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:466
+
aligned_highp_vec2 aligned_vec2
2 components vector aligned in memory of single-precision floating-point numbers.
+
uint64 lowp_u64
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:133
+
uint64 mediump_u64
Medium qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:134
+
int8 lowp_int8_t
Low qualifier 8 bit signed integer type.
Definition: fwd.hpp:40
+
detail::int8 int8
8 bit signed integer type.
+
mat< 4, 2, f32, defaultp > fmat4x2
Single-qualifier floating-point 4x2 matrix.
Definition: fwd.hpp:668
+
uint8 mediump_u8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:92
+
vec< 4, float, defaultp > vec4
4 components vector of single-precision floating-point numbers.
+
uint16 highp_u16
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:107
+
mat< 3, 3, float, defaultp > mat3x3
3 columns of 3 components matrix of single-precision floating-point numbers.
+
vec< 2, double, defaultp > dvec2
2 components vector of double-precision floating-point numbers.
+
int32 i32
32 bit signed integer type.
Definition: fwd.hpp:62
+
mat< 4, 4, float, defaultp > mat4x4
4 columns of 4 components matrix of single-precision floating-point numbers.
+
vec< 2, uint32, defaultp > u32vec2
32 bit unsigned integer vector of 2 components type.
+
vec< 1, uint16, defaultp > u16vec1
16 bit unsigned integer vector of 1 component type.
+
int8 i8
8 bit signed integer type.
Definition: fwd.hpp:34
+
uint8 mediump_uint8
Medium qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:97
+
mat< 2, 2, f32, defaultp > f32mat2x2
Single-qualifier floating-point 1x1 matrix.
Definition: fwd.hpp:702
+
vec< 2, uint8, defaultp > u8vec2
8 bit unsigned integer vector of 2 components type.
+
vec< 3, uint32, defaultp > u32vec3
32 bit unsigned integer vector of 3 components type.
+
uint32 lowp_u32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:119
+
vec< 3, double, defaultp > dvec3
3 components vector of double-precision floating-point numbers.
+
uint64 highp_uint64_t
High qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:144
+
vec< 1, int64, defaultp > i64vec1
64 bit signed integer vector of 1 component type.
+
vec< 1, uint64, defaultp > u64vec1
64 bit unsigned integer vector of 1 component type.
+
uint32 mediump_uint32_t
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:129
+
int32 lowp_int32_t
Low qualifier 32 bit signed integer type.
Definition: fwd.hpp:68
+
uint32 mediump_u32
Medium qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:120
+
uint16 lowp_u16
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:105
+
uint32 highp_u32
High qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:121
+
vec< 2, f32, defaultp > fvec2
Single-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:444
+
uint16 highp_uint16_t
High qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:116
+
vec< 4, f32, defaultp > fvec4
Single-qualifier floating-point vector of 4 components.
Definition: fwd.hpp:446
+
vec< 4, int8, defaultp > i8vec4
8 bit signed integer vector of 4 components type.
+
mat< 2, 4, f32, defaultp > f32mat2x4
Single-qualifier floating-point 2x4 matrix.
Definition: fwd.hpp:704
+
uint8 highp_u8
High qualifier 8 bit unsigned integer type.
Definition: fwd.hpp:93
+
uint32 lowp_uint32
Low qualifier 32 bit unsigned integer type.
Definition: fwd.hpp:124
+
vec< 2, f64, defaultp > f64vec2
Double-qualifier floating-point vector of 2 components.
Definition: fwd.hpp:504
+
aligned_highp_ivec1 aligned_ivec1
1 component vector aligned in memory of signed integer numbers.
+
detail::int64 int64
64 bit signed integer type.
+
detail::uint16 uint16
16 bit unsigned integer type.
+
uint64 lowp_uint64_t
Low qualifier 64 bit unsigned integer type.
Definition: fwd.hpp:142
+
vec< 1, unsigned int, defaultp > uvec1
1 component vector of unsigned integer numbers.
+
int32 highp_int32_t
32 bit signed integer type.
Definition: fwd.hpp:70
+
vec< 1, uint32, defaultp > u32vec1
32 bit unsigned integer vector of 1 component type.
+
vec< 3, uint64, defaultp > u64vec3
64 bit unsigned integer vector of 3 components type.
+
mat< 4, 4, f64, defaultp > f64mat4x4
Double-qualifier floating-point 4x4 matrix.
Definition: fwd.hpp:790
+
vec< 3, int16, defaultp > i16vec3
16 bit signed integer vector of 3 components type.
+
vec< 2, uint64, defaultp > u64vec2
64 bit unsigned integer vector of 2 components type.
+
qua< float, defaultp > quat
Quaternion of single-precision floating-point numbers.
+
aligned_highp_ivec2 aligned_ivec2
2 components vector aligned in memory of signed integer numbers.
+
vec< 3, int, defaultp > ivec3
3 components vector of signed integer numbers.
Definition: vector_int3.hpp:15
+
aligned_highp_uvec1 aligned_uvec1
1 component vector aligned in memory of unsigned integer numbers.
+
mat< 3, 4, f64, defaultp > f64mat3x4
Double-qualifier floating-point 3x4 matrix.
Definition: fwd.hpp:787
+
detail::int32 int32
32 bit signed integer type.
+
uint16 u16
Default qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:108
+
vec< 3, uint8, defaultp > u8vec3
8 bit unsigned integer vector of 3 components type.
+
uint16 lowp_uint16_t
Low qualifier 16 bit unsigned integer type.
Definition: fwd.hpp:114
+
aligned_highp_dquat aligned_dquat
quaternion tightly aligned in memory of double-precision floating-point numbers.
+ + + + diff --git a/include/glm/doc/api/a01729.html b/include/glm/doc/api/a01729.html new file mode 100644 index 0000000..39e1d63 --- /dev/null +++ b/include/glm/doc/api/a01729.html @@ -0,0 +1,131 @@ + + + + + + + +1.0.2 API documentation: vector_relational.hpp File Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ext/vector_relational.hpp File Reference
+
+
+ +

GLM_EXT_vector_relational +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| < epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
 Returns the component-wise comparison between two vectors in term of ULPs. More...
 
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual (vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)
 Returns the component-wise comparison of |x - y| >= epsilon. More...
 
+

Detailed Description

+

GLM_EXT_vector_relational

+
See also
Core features (dependence)
+
+GLM_EXT_scalar_integer (dependence)
+ +

Definition in file ext/vector_relational.hpp.

+
+ + + + diff --git a/include/glm/doc/api/a01729_source.html b/include/glm/doc/api/a01729_source.html new file mode 100644 index 0000000..ff9dc2c --- /dev/null +++ b/include/glm/doc/api/a01729_source.html @@ -0,0 +1,124 @@ + + + + + + + +1.0.2 API documentation: vector_relational.hpp Source File + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext/vector_relational.hpp
+
+
+Go to the documentation of this file.
1 
+
18 #pragma once
+
19 
+
20 // Dependencies
+
21 #include "../detail/qualifier.hpp"
+
22 
+
23 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)
+
24 # pragma message("GLM: GLM_EXT_vector_relational extension included")
+
25 #endif
+
26 
+
27 namespace glm
+
28 {
+
31 
+
38  template<length_t L, typename T, qualifier Q>
+
39  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);
+
40 
+
47  template<length_t L, typename T, qualifier Q>
+
48  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);
+
49 
+
56  template<length_t L, typename T, qualifier Q>
+
57  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, T epsilon);
+
58 
+
65  template<length_t L, typename T, qualifier Q>
+
66  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, T, Q> const& epsilon);
+
67 
+
74  template<length_t L, typename T, qualifier Q>
+
75  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);
+
76 
+
83  template<length_t L, typename T, qualifier Q>
+
84  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> equal(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);
+
85 
+
92  template<length_t L, typename T, qualifier Q>
+
93  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, int ULPs);
+
94 
+
101  template<length_t L, typename T, qualifier Q>
+
102  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, bool, Q> notEqual(vec<L, T, Q> const& x, vec<L, T, Q> const& y, vec<L, int, Q> const& ULPs);
+
103 
+
105 }//namespace glm
+
106 
+
107 #include "vector_relational.inl"
+
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR vec< L, bool, Q > equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)
Returns the component-wise comparison between two vectors in term of ULPs.
+
GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon()
Return the epsilon constant for floating point types.
+ + + + diff --git a/include/glm/doc/api/bc_s.png b/include/glm/doc/api/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..a274117185b99f403e7ec5e6cebee7c654c143a5 GIT binary patch literal 600 zcmV-e0;m0nP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0m(^3K~y+TZIaDPTTu|j2Lz>{XoY~)O$Dh| zyATzzHBg9MRHTI#H!3blsS7J85z%UG6UjnE$Rdj_0tOx!N`ycQZxP)KVuDf^6-2=g zs8A4d{sPa0+{eo^i{CKk++pT^3F3h~GAoJ?Km6i_q2EG!Du+yXj=Aa*7+&-u{^}nx zp>t9}t)7D*)}!pg4*o@E>1|Ovm}DH*`y&=?yB8IPZl#jq8ut8u*k9Ufpw*5(=XLDn!P;W!VULw%T6sc9+zVciNQSY?B0NY=1 z{&7(|2$l_0;M)2)@f4A`kZw?MN_JU4kGi{9etMSZ{mI mTy+UL=Lpd!dstz950N_+H^+xJK<-@t0000_E)H!3HEvS)PI@#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!phSslL`iUdT1k0gQ7S`0VrE{6US4X6f{C7i zo@I`4ogYw*rKgKyh(vg@1KWHx>A&qphK!k$92(g)gk6Pn_=FlX8$6qSB$)Ly_OfZZ mgfSd0Sbc!OlQE>Jk&%J1|%O$WD@{VjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCf`#@Q5sCVBk9p!i>lBSEK+1B}!Z)N`mv#O3D+9QW**oGxJLH@={9_O!N%& zEOU(O{D5kVJzX3_G=h^I*ypQB|7|xaWS*eZ#Fg0fLCYnqC0KEn(i$#KEe6IWE{BE% gOacc&4jf=$xZ3Z0eESR?CZKi(Pgg&ebxsLQ0ArjqIRF3v literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/dir_382f4fd018b81be8753cb53c0a41a09a.html b/include/glm/doc/api/dir_382f4fd018b81be8753cb53c0a41a09a.html new file mode 100644 index 0000000..72d9e9c --- /dev/null +++ b/include/glm/doc/api/dir_382f4fd018b81be8753cb53c0a41a09a.html @@ -0,0 +1,127 @@ + + + + + + + +1.0.2 API documentation: detail Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
detail Directory Reference
+
+ + + + + diff --git a/include/glm/doc/api/dir_50f12b6ceb23d7f6adfb377a1ae8b006.html b/include/glm/doc/api/dir_50f12b6ceb23d7f6adfb377a1ae8b006.html new file mode 100644 index 0000000..ecc013a --- /dev/null +++ b/include/glm/doc/api/dir_50f12b6ceb23d7f6adfb377a1ae8b006.html @@ -0,0 +1,85 @@ + + + + + + + +1.0.2 API documentation: glm Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glm Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/include/glm/doc/api/dir_628fd60eb37daf5aa9a81e3983c640b7.html b/include/glm/doc/api/dir_628fd60eb37daf5aa9a81e3983c640b7.html new file mode 100644 index 0000000..0e2bc00 --- /dev/null +++ b/include/glm/doc/api/dir_628fd60eb37daf5aa9a81e3983c640b7.html @@ -0,0 +1,283 @@ + + + + + + + +1.0.2 API documentation: gtx Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtx Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  associated_min_max.hpp [code]
 GLM_GTX_associated_min_max
 
file  bit.hpp [code]
 GLM_GTX_bit
 
file  closest_point.hpp [code]
 GLM_GTX_closest_point
 
file  color_encoding.hpp [code]
 GLM_GTX_color_encoding
 
file  gtx/color_space.hpp [code]
 GLM_GTX_color_space
 
file  color_space_YCoCg.hpp [code]
 GLM_GTX_color_space_YCoCg
 
file  gtx/common.hpp [code]
 GLM_GTX_common
 
file  compatibility.hpp [code]
 GLM_GTX_compatibility
 
file  component_wise.hpp [code]
 GLM_GTX_component_wise
 
file  dual_quaternion.hpp [code]
 GLM_GTX_dual_quaternion
 
file  easing.hpp [code]
 GLM_GTX_easing
 
file  euler_angles.hpp [code]
 GLM_GTX_euler_angles
 
file  extend.hpp [code]
 GLM_GTX_extend
 
file  extended_min_max.hpp [code]
 GLM_GTX_extended_min_max
 
file  exterior_product.hpp [code]
 GLM_GTX_exterior_product
 
file  fast_exponential.hpp [code]
 GLM_GTX_fast_exponential
 
file  fast_square_root.hpp [code]
 GLM_GTX_fast_square_root
 
file  fast_trigonometry.hpp [code]
 GLM_GTX_fast_trigonometry
 
file  functions.hpp [code]
 GLM_GTX_functions
 
file  gradient_paint.hpp [code]
 GLM_GTX_gradient_paint
 
file  handed_coordinate_space.hpp [code]
 GLM_GTX_handed_coordinate_space
 
file  hash.hpp [code]
 GLM_GTX_hash
 
file  gtx/integer.hpp [code]
 GLM_GTX_integer
 
file  intersect.hpp [code]
 GLM_GTX_intersect
 
file  io.hpp [code]
 GLM_GTX_io
 
file  iteration.hpp [code]
 GLM_GTX_iteration
 
file  log_base.hpp [code]
 GLM_GTX_log_base
 
file  matrix_cross_product.hpp [code]
 GLM_GTX_matrix_cross_product
 
file  matrix_decompose.hpp [code]
 GLM_GTX_matrix_decompose
 
file  matrix_factorisation.hpp [code]
 GLM_GTX_matrix_factorisation
 
file  matrix_interpolation.hpp [code]
 GLM_GTX_matrix_interpolation
 
file  matrix_major_storage.hpp [code]
 GLM_GTX_matrix_major_storage
 
file  matrix_operation.hpp [code]
 GLM_GTX_matrix_operation
 
file  matrix_query.hpp [code]
 GLM_GTX_matrix_query
 
file  matrix_transform_2d.hpp [code]
 GLM_GTX_matrix_transform_2d
 
file  mixed_product.hpp [code]
 GLM_GTX_mixed_producte
 
file  norm.hpp [code]
 GLM_GTX_norm
 
file  normal.hpp [code]
 GLM_GTX_normal
 
file  normalize_dot.hpp [code]
 GLM_GTX_normalize_dot
 
file  number_precision.hpp [code]
 GLM_GTX_number_precision
 
file  optimum_pow.hpp [code]
 GLM_GTX_optimum_pow
 
file  orthonormalize.hpp [code]
 GLM_GTX_orthonormalize
 
file  pca.hpp [code]
 GLM_GTX_pca
 
file  perpendicular.hpp [code]
 GLM_GTX_perpendicular
 
file  polar_coordinates.hpp [code]
 GLM_GTX_polar_coordinates
 
file  projection.hpp [code]
 GLM_GTX_projection
 
file  gtx/quaternion.hpp [code]
 GLM_GTX_quaternion
 
file  range.hpp [code]
 GLM_GTX_range
 
file  raw_data.hpp [code]
 GLM_GTX_raw_data
 
file  rotate_normalized_axis.hpp [code]
 GLM_GTX_rotate_normalized_axis
 
file  rotate_vector.hpp [code]
 GLM_GTX_rotate_vector
 
file  scalar_multiplication.hpp [code]
 GLM_GTX_scalar_multiplication
 
file  gtx/scalar_relational.hpp [code]
 GLM_GTX_scalar_relational
 
file  spline.hpp [code]
 GLM_GTX_spline
 
file  std_based_type.hpp [code]
 GLM_GTX_std_based_type
 
file  string_cast.hpp [code]
 GLM_GTX_string_cast
 
file  structured_bindings.hpp [code]
 GLM_GTX_structured_bindings
 
file  texture.hpp [code]
 GLM_GTX_texture
 
file  transform.hpp [code]
 GLM_GTX_transform
 
file  transform2.hpp [code]
 GLM_GTX_transform2
 
file  gtx/type_aligned.hpp [code]
 GLM_GTX_type_aligned
 
file  type_trait.hpp [code]
 GLM_GTX_type_trait
 
file  vec_swizzle.hpp [code]
 GLM_GTX_vec_swizzle
 
file  vector_angle.hpp [code]
 GLM_GTX_vector_angle
 
file  vector_query.hpp [code]
 GLM_GTX_vector_query
 
file  wrap.hpp [code]
 GLM_GTX_wrap
 
+
+ + + + diff --git a/include/glm/doc/api/dir_63ed049134a778d525e06b63afc2c979.html b/include/glm/doc/api/dir_63ed049134a778d525e06b63afc2c979.html new file mode 100644 index 0000000..33d5f71 --- /dev/null +++ b/include/glm/doc/api/dir_63ed049134a778d525e06b63afc2c979.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: Github Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Github Directory Reference
+
+
+
+ + + + diff --git a/include/glm/doc/api/dir_885cc87fac2d91e269af0a5a959fa5f6.html b/include/glm/doc/api/dir_885cc87fac2d91e269af0a5a959fa5f6.html new file mode 100644 index 0000000..469dc5d --- /dev/null +++ b/include/glm/doc/api/dir_885cc87fac2d91e269af0a5a959fa5f6.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: E: Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
E: Directory Reference
+
+
+
+ + + + diff --git a/include/glm/doc/api/dir_b11711034def6a4ce452fe9c451dd3d0.html b/include/glm/doc/api/dir_b11711034def6a4ce452fe9c451dd3d0.html new file mode 100644 index 0000000..fccbb5a --- /dev/null +++ b/include/glm/doc/api/dir_b11711034def6a4ce452fe9c451dd3d0.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: doc Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
doc Directory Reference
+
+
+
+ + + + diff --git a/include/glm/doc/api/dir_b171cecbb853a9ee4caace490047c53f.html b/include/glm/doc/api/dir_b171cecbb853a9ee4caace490047c53f.html new file mode 100644 index 0000000..986dd7c --- /dev/null +++ b/include/glm/doc/api/dir_b171cecbb853a9ee4caace490047c53f.html @@ -0,0 +1,505 @@ + + + + + + + +1.0.2 API documentation: ext Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ext Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  matrix_clip_space.hpp [code]
 GLM_EXT_matrix_clip_space
 
file  matrix_common.hpp [code]
 GLM_EXT_matrix_common
 
file  matrix_double2x2.hpp [code]
 Core features
 
file  matrix_double2x2_precision.hpp [code]
 Core features
 
file  matrix_double2x3.hpp [code]
 Core features
 
file  matrix_double2x3_precision.hpp [code]
 Core features
 
file  matrix_double2x4.hpp [code]
 Core features
 
file  matrix_double2x4_precision.hpp [code]
 Core features
 
file  matrix_double3x2.hpp [code]
 Core features
 
file  matrix_double3x2_precision.hpp [code]
 Core features
 
file  matrix_double3x3.hpp [code]
 Core features
 
file  matrix_double3x3_precision.hpp [code]
 Core features
 
file  matrix_double3x4.hpp [code]
 Core features
 
file  matrix_double3x4_precision.hpp [code]
 Core features
 
file  matrix_double4x2.hpp [code]
 Core features
 
file  matrix_double4x2_precision.hpp [code]
 Core features
 
file  matrix_double4x3.hpp [code]
 Core features
 
file  matrix_double4x3_precision.hpp [code]
 Core features
 
file  matrix_double4x4.hpp [code]
 Core features
 
file  matrix_double4x4_precision.hpp [code]
 Core features
 
file  matrix_float2x2.hpp [code]
 Core features
 
file  matrix_float2x2_precision.hpp [code]
 Core features
 
file  matrix_float2x3.hpp [code]
 Core features
 
file  matrix_float2x3_precision.hpp [code]
 Core features
 
file  matrix_float2x4.hpp [code]
 Core features
 
file  matrix_float2x4_precision.hpp [code]
 Core features
 
file  matrix_float3x2.hpp [code]
 Core features
 
file  matrix_float3x2_precision.hpp [code]
 Core features
 
file  matrix_float3x3.hpp [code]
 Core features
 
file  matrix_float3x3_precision.hpp [code]
 Core features
 
file  matrix_float3x4.hpp [code]
 Core features
 
file  matrix_float3x4_precision.hpp [code]
 Core features
 
file  matrix_float4x2.hpp [code]
 Core features
 
file  matrix_float4x3.hpp [code]
 Core features
 
file  matrix_float4x3_precision.hpp [code]
 Core features
 
file  matrix_float4x4.hpp [code]
 Core features
 
file  matrix_float4x4_precision.hpp [code]
 Core features
 
file  matrix_int2x2.hpp [code]
 GLM_EXT_matrix_int2x2
 
file  matrix_int2x2_sized.hpp [code]
 GLM_EXT_matrix_int2x2_sized
 
file  matrix_int2x3.hpp [code]
 GLM_EXT_matrix_int2x3
 
file  matrix_int2x3_sized.hpp [code]
 GLM_EXT_matrix_int2x3_sized
 
file  matrix_int2x4.hpp [code]
 GLM_EXT_matrix_int2x4
 
file  matrix_int2x4_sized.hpp [code]
 GLM_EXT_matrix_int2x4_sized
 
file  matrix_int3x2.hpp [code]
 GLM_EXT_matrix_int3x2
 
file  matrix_int3x2_sized.hpp [code]
 GLM_EXT_matrix_int3x2_sized
 
file  matrix_int3x3.hpp [code]
 GLM_EXT_matrix_int3x3
 
file  matrix_int3x3_sized.hpp [code]
 GLM_EXT_matrix_int3x3_sized
 
file  matrix_int3x4.hpp [code]
 GLM_EXT_matrix_int3x4
 
file  matrix_int4x2.hpp [code]
 GLM_EXT_matrix_int4x2
 
file  matrix_int4x2_sized.hpp [code]
 GLM_EXT_matrix_int4x2_sized
 
file  matrix_int4x3.hpp [code]
 GLM_EXT_matrix_int4x3
 
file  matrix_int4x3_sized.hpp [code]
 GLM_EXT_matrix_int4x3_sized
 
file  matrix_int4x4.hpp [code]
 GLM_EXT_matrix_int4x4
 
file  matrix_int4x4_sized.hpp [code]
 GLM_EXT_matrix_int4x4_sized
 
file  ext/matrix_integer.hpp [code]
 GLM_EXT_matrix_integer
 
file  matrix_projection.hpp [code]
 GLM_EXT_matrix_projection
 
file  matrix_relational.hpp [code]
 GLM_EXT_matrix_relational
 
file  ext/matrix_transform.hpp [code]
 GLM_EXT_matrix_transform
 
file  matrix_uint2x2.hpp [code]
 GLM_EXT_matrix_uint2x2
 
file  matrix_uint2x2_sized.hpp [code]
 GLM_EXT_matrix_uint2x2_sized
 
file  matrix_uint2x3.hpp [code]
 GLM_EXT_matrix_uint2x3
 
file  matrix_uint2x3_sized.hpp [code]
 GLM_EXT_matrix_uint2x3_sized
 
file  matrix_uint2x4.hpp [code]
 GLM_EXT_matrix_int2x4
 
file  matrix_uint2x4_sized.hpp [code]
 GLM_EXT_matrix_uint2x4_sized
 
file  matrix_uint3x2.hpp [code]
 GLM_EXT_matrix_uint3x2
 
file  matrix_uint3x2_sized.hpp [code]
 GLM_EXT_matrix_uint3x2_sized
 
file  matrix_uint3x3.hpp [code]
 GLM_EXT_matrix_uint3x3
 
file  matrix_uint3x3_sized.hpp [code]
 GLM_EXT_matrix_uint3x3_sized
 
file  matrix_uint3x4.hpp [code]
 GLM_EXT_matrix_uint3x4
 
file  matrix_uint4x2.hpp [code]
 GLM_EXT_matrix_uint4x2
 
file  matrix_uint4x2_sized.hpp [code]
 GLM_EXT_matrix_uint4x2_sized
 
file  matrix_uint4x3.hpp [code]
 GLM_EXT_matrix_uint4x3
 
file  matrix_uint4x3_sized.hpp [code]
 GLM_EXT_matrix_uint4x3_sized
 
file  matrix_uint4x4.hpp [code]
 GLM_EXT_matrix_uint4x4
 
file  matrix_uint4x4_sized.hpp [code]
 GLM_EXT_matrix_uint4x4_sized
 
file  quaternion_common.hpp [code]
 GLM_EXT_quaternion_common
 
file  quaternion_double.hpp [code]
 GLM_EXT_quaternion_double
 
file  quaternion_double_precision.hpp [code]
 GLM_EXT_quaternion_double_precision
 
file  quaternion_exponential.hpp [code]
 GLM_EXT_quaternion_exponential
 
file  quaternion_float.hpp [code]
 GLM_EXT_quaternion_float
 
file  quaternion_float_precision.hpp [code]
 GLM_EXT_quaternion_float_precision
 
file  quaternion_geometric.hpp [code]
 GLM_EXT_quaternion_geometric
 
file  quaternion_relational.hpp [code]
 GLM_EXT_quaternion_relational
 
file  quaternion_transform.hpp [code]
 GLM_EXT_quaternion_transform
 
file  quaternion_trigonometric.hpp [code]
 GLM_EXT_quaternion_trigonometric
 
file  scalar_common.hpp [code]
 GLM_EXT_scalar_common
 
file  scalar_constants.hpp [code]
 GLM_EXT_scalar_constants
 
file  scalar_int_sized.hpp [code]
 GLM_EXT_scalar_int_sized
 
file  scalar_integer.hpp [code]
 GLM_EXT_scalar_integer
 
file  scalar_packing.hpp [code]
 GLM_EXT_scalar_packing
 
file  scalar_reciprocal.hpp [code]
 GLM_EXT_scalar_reciprocal
 
file  ext/scalar_relational.hpp [code]
 GLM_EXT_scalar_relational
 
file  scalar_uint_sized.hpp [code]
 GLM_EXT_scalar_uint_sized
 
file  scalar_ulp.hpp [code]
 GLM_EXT_scalar_ulp
 
file  vector_bool1.hpp [code]
 GLM_EXT_vector_bool1
 
file  vector_bool1_precision.hpp [code]
 GLM_EXT_vector_bool1_precision
 
file  vector_bool2.hpp [code]
 Core features
 
file  vector_bool2_precision.hpp [code]
 Core features
 
file  vector_bool3.hpp [code]
 Core features
 
file  vector_bool3_precision.hpp [code]
 Core features
 
file  vector_bool4.hpp [code]
 Core features
 
file  vector_bool4_precision.hpp [code]
 Core features
 
file  vector_common.hpp [code]
 GLM_EXT_vector_common
 
file  vector_double1.hpp [code]
 GLM_EXT_vector_double1
 
file  vector_double1_precision.hpp [code]
 GLM_EXT_vector_double1_precision
 
file  vector_double2.hpp [code]
 Core features
 
file  vector_double2_precision.hpp [code]
 Core features
 
file  vector_double3.hpp [code]
 Core features
 
file  vector_double3_precision.hpp [code]
 Core features
 
file  vector_double4.hpp [code]
 Core features
 
file  vector_double4_precision.hpp [code]
 Core features
 
file  vector_float1.hpp [code]
 GLM_EXT_vector_float1
 
file  vector_float1_precision.hpp [code]
 GLM_EXT_vector_float1_precision
 
file  vector_float2.hpp [code]
 Core features
 
file  vector_float2_precision.hpp [code]
 Core features
 
file  vector_float3.hpp [code]
 Core features
 
file  vector_float3_precision.hpp [code]
 Core features
 
file  vector_float4.hpp [code]
 Core features
 
file  vector_float4_precision.hpp [code]
 Core features
 
file  vector_int1.hpp [code]
 GLM_EXT_vector_int1
 
file  vector_int1_sized.hpp [code]
 GLM_EXT_vector_int1_sized
 
file  vector_int2.hpp [code]
 Core features
 
file  vector_int2_sized.hpp [code]
 GLM_EXT_vector_int2_sized
 
file  vector_int3.hpp [code]
 Core features
 
file  vector_int3_sized.hpp [code]
 GLM_EXT_vector_int3_sized
 
file  vector_int4.hpp [code]
 Core features
 
file  vector_int4_sized.hpp [code]
 GLM_EXT_vector_int4_sized
 
file  vector_integer.hpp [code]
 GLM_EXT_vector_integer
 
file  vector_packing.hpp [code]
 GLM_EXT_vector_packing
 
file  vector_reciprocal.hpp [code]
 GLM_EXT_vector_reciprocal
 
file  ext/vector_relational.hpp [code]
 GLM_EXT_vector_relational
 
file  vector_uint1.hpp [code]
 GLM_EXT_vector_uint1
 
file  vector_uint1_sized.hpp [code]
 GLM_EXT_vector_uint1_sized
 
file  vector_uint2.hpp [code]
 Core features
 
file  vector_uint2_sized.hpp [code]
 GLM_EXT_vector_uint2_sized
 
file  vector_uint3.hpp [code]
 Core features
 
file  vector_uint3_sized.hpp [code]
 GLM_EXT_vector_uint3_sized
 
file  vector_uint4.hpp [code]
 Core features
 
file  vector_uint4_sized.hpp [code]
 GLM_EXT_vector_uint4_sized
 
file  vector_ulp.hpp [code]
 GLM_EXT_vector_ulp
 
+
+ + + + diff --git a/include/glm/doc/api/dir_c98a9ac98258ab9f831b188d66361a70.html b/include/glm/doc/api/dir_c98a9ac98258ab9f831b188d66361a70.html new file mode 100644 index 0000000..2be54ef --- /dev/null +++ b/include/glm/doc/api/dir_c98a9ac98258ab9f831b188d66361a70.html @@ -0,0 +1,81 @@ + + + + + + + +1.0.2 API documentation: g-truc Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
g-truc Directory Reference
+
+
+
+ + + + diff --git a/include/glm/doc/api/dir_d9678a6a9012da969e0b059b39347945.html b/include/glm/doc/api/dir_d9678a6a9012da969e0b059b39347945.html new file mode 100644 index 0000000..0fee880 --- /dev/null +++ b/include/glm/doc/api/dir_d9678a6a9012da969e0b059b39347945.html @@ -0,0 +1,145 @@ + + + + + + + +1.0.2 API documentation: gtc Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
gtc Directory Reference
+
+ + + + + diff --git a/include/glm/doc/api/dir_fca33f1b5115d46f42c670590789c0d2.html b/include/glm/doc/api/dir_fca33f1b5115d46f42c670590789c0d2.html new file mode 100644 index 0000000..183acb1 --- /dev/null +++ b/include/glm/doc/api/dir_fca33f1b5115d46f42c670590789c0d2.html @@ -0,0 +1,150 @@ + + + + + + + +1.0.2 API documentation: glm Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
glm Directory Reference
+
+
+ + +

+Directories

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  common.hpp [code]
 Core features
 
file  exponential.hpp [code]
 Core features
 
file  ext.hpp [code]
 
file  geometric.hpp [code]
 Core features
 
file  integer.hpp [code]
 Core features
 
file  mat2x2.hpp [code]
 Core features
 
file  mat2x3.hpp [code]
 Core features
 
file  mat2x4.hpp [code]
 Core features
 
file  mat3x2.hpp [code]
 Core features
 
file  mat3x3.hpp [code]
 Core features
 
file  mat3x4.hpp [code]
 Core features
 
file  mat4x2.hpp [code]
 Core features
 
file  mat4x3.hpp [code]
 Core features
 
file  mat4x4.hpp [code]
 Core features
 
file  matrix.hpp [code]
 Core features
 
file  packing.hpp [code]
 Core features
 
file  trigonometric.hpp [code]
 Core features
 
file  vec2.hpp [code]
 Core features
 
file  vec3.hpp [code]
 Core features
 
file  vec4.hpp [code]
 Core features
 
file  vector_relational.hpp [code]
 Core features
 
+
+ + + + diff --git a/include/glm/doc/api/doc.png b/include/glm/doc/api/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f3953d1fce2c582d87c6434d2fea7607ccc943ac GIT binary patch literal 624 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 l6o~({xp0XF+gvE9 + + + + + + +1.0.2 API documentation: File List + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 _features.hpp
 _fixes.hpp
 _matrix_vectorize.hpp
 _noise.hpp
 _swizzle.hpp
 _swizzle_func.hpp
 _vectorize.hpp
 associated_min_max.hppGLM_GTX_associated_min_max
 bit.hppGLM_GTX_bit
 bitfield.hppGLM_GTC_bitfield
 closest_point.hppGLM_GTX_closest_point
 color_encoding.hppGLM_GTX_color_encoding
 gtc/color_space.hppGLM_GTC_color_space
 gtx/color_space.hppGLM_GTX_color_space
 color_space_YCoCg.hppGLM_GTX_color_space_YCoCg
 common.hppCore features
 gtx/common.hppGLM_GTX_common
 compatibility.hppGLM_GTX_compatibility
 component_wise.hppGLM_GTX_component_wise
 compute_common.hpp
 compute_vector_decl.hpp
 compute_vector_relational.hpp
 constants.hppGLM_GTC_constants
 dual_quaternion.hppGLM_GTX_dual_quaternion
 easing.hppGLM_GTX_easing
 epsilon.hppGLM_GTC_epsilon
 euler_angles.hppGLM_GTX_euler_angles
 exponential.hppCore features
 ext.hpp
 extend.hppGLM_GTX_extend
 extended_min_max.hppGLM_GTX_extended_min_max
 exterior_product.hppGLM_GTX_exterior_product
 fast_exponential.hppGLM_GTX_fast_exponential
 fast_square_root.hppGLM_GTX_fast_square_root
 fast_trigonometry.hppGLM_GTX_fast_trigonometry
 functions.hppGLM_GTX_functions
 fwd.hpp
 geometric.hppCore features
 glm.hpp
 gradient_paint.hppGLM_GTX_gradient_paint
 handed_coordinate_space.hppGLM_GTX_handed_coordinate_space
 hash.hppGLM_GTX_hash
 gtc/integer.hppGLM_GTC_integer
 gtx/integer.hppGLM_GTX_integer
 integer.hppCore features
 intersect.hppGLM_GTX_intersect
 io.hppGLM_GTX_io
 iteration.hppGLM_GTX_iteration
 log_base.hppGLM_GTX_log_base
 man.doxy
 mat2x2.hppCore features
 mat2x3.hppCore features
 mat2x4.hppCore features
 mat3x2.hppCore features
 mat3x3.hppCore features
 mat3x4.hppCore features
 mat4x2.hppCore features
 mat4x3.hppCore features
 mat4x4.hppCore features
 matrix.hppCore features
 matrix_access.hppGLM_GTC_matrix_access
 matrix_clip_space.hppGLM_EXT_matrix_clip_space
 matrix_common.hppGLM_EXT_matrix_common
 matrix_cross_product.hppGLM_GTX_matrix_cross_product
 matrix_decompose.hppGLM_GTX_matrix_decompose
 matrix_double2x2.hppCore features
 matrix_double2x2_precision.hppCore features
 matrix_double2x3.hppCore features
 matrix_double2x3_precision.hppCore features
 matrix_double2x4.hppCore features
 matrix_double2x4_precision.hppCore features
 matrix_double3x2.hppCore features
 matrix_double3x2_precision.hppCore features
 matrix_double3x3.hppCore features
 matrix_double3x3_precision.hppCore features
 matrix_double3x4.hppCore features
 matrix_double3x4_precision.hppCore features
 matrix_double4x2.hppCore features
 matrix_double4x2_precision.hppCore features
 matrix_double4x3.hppCore features
 matrix_double4x3_precision.hppCore features
 matrix_double4x4.hppCore features
 matrix_double4x4_precision.hppCore features
 matrix_factorisation.hppGLM_GTX_matrix_factorisation
 matrix_float2x2.hppCore features
 matrix_float2x2_precision.hppCore features
 matrix_float2x3.hppCore features
 matrix_float2x3_precision.hppCore features
 matrix_float2x4.hppCore features
 matrix_float2x4_precision.hppCore features
 matrix_float3x2.hppCore features
 matrix_float3x2_precision.hppCore features
 matrix_float3x3.hppCore features
 matrix_float3x3_precision.hppCore features
 matrix_float3x4.hppCore features
 matrix_float3x4_precision.hppCore features
 matrix_float4x2.hppCore features
 matrix_float4x2_precision.hpp
 matrix_float4x3.hppCore features
 matrix_float4x3_precision.hppCore features
 matrix_float4x4.hppCore features
 matrix_float4x4_precision.hppCore features
 matrix_int2x2.hppGLM_EXT_matrix_int2x2
 matrix_int2x2_sized.hppGLM_EXT_matrix_int2x2_sized
 matrix_int2x3.hppGLM_EXT_matrix_int2x3
 matrix_int2x3_sized.hppGLM_EXT_matrix_int2x3_sized
 matrix_int2x4.hppGLM_EXT_matrix_int2x4
 matrix_int2x4_sized.hppGLM_EXT_matrix_int2x4_sized
 matrix_int3x2.hppGLM_EXT_matrix_int3x2
 matrix_int3x2_sized.hppGLM_EXT_matrix_int3x2_sized
 matrix_int3x3.hppGLM_EXT_matrix_int3x3
 matrix_int3x3_sized.hppGLM_EXT_matrix_int3x3_sized
 matrix_int3x4.hppGLM_EXT_matrix_int3x4
 matrix_int3x4_sized.hpp
 matrix_int4x2.hppGLM_EXT_matrix_int4x2
 matrix_int4x2_sized.hppGLM_EXT_matrix_int4x2_sized
 matrix_int4x3.hppGLM_EXT_matrix_int4x3
 matrix_int4x3_sized.hppGLM_EXT_matrix_int4x3_sized
 matrix_int4x4.hppGLM_EXT_matrix_int4x4
 matrix_int4x4_sized.hppGLM_EXT_matrix_int4x4_sized
 ext/matrix_integer.hppGLM_EXT_matrix_integer
 gtc/matrix_integer.hppGLM_GTC_matrix_integer
 matrix_interpolation.hppGLM_GTX_matrix_interpolation
 matrix_inverse.hppGLM_GTC_matrix_inverse
 matrix_major_storage.hppGLM_GTX_matrix_major_storage
 matrix_operation.hppGLM_GTX_matrix_operation
 matrix_projection.hppGLM_EXT_matrix_projection
 matrix_query.hppGLM_GTX_matrix_query
 matrix_relational.hppGLM_EXT_matrix_relational
 ext/matrix_transform.hppGLM_EXT_matrix_transform
 gtc/matrix_transform.hppGLM_GTC_matrix_transform
 matrix_transform_2d.hppGLM_GTX_matrix_transform_2d
 matrix_uint2x2.hppGLM_EXT_matrix_uint2x2
 matrix_uint2x2_sized.hppGLM_EXT_matrix_uint2x2_sized
 matrix_uint2x3.hppGLM_EXT_matrix_uint2x3
 matrix_uint2x3_sized.hppGLM_EXT_matrix_uint2x3_sized
 matrix_uint2x4.hppGLM_EXT_matrix_int2x4
 matrix_uint2x4_sized.hppGLM_EXT_matrix_uint2x4_sized
 matrix_uint3x2.hppGLM_EXT_matrix_uint3x2
 matrix_uint3x2_sized.hppGLM_EXT_matrix_uint3x2_sized
 matrix_uint3x3.hppGLM_EXT_matrix_uint3x3
 matrix_uint3x3_sized.hppGLM_EXT_matrix_uint3x3_sized
 matrix_uint3x4.hppGLM_EXT_matrix_uint3x4
 matrix_uint3x4_sized.hpp
 matrix_uint4x2.hppGLM_EXT_matrix_uint4x2
 matrix_uint4x2_sized.hppGLM_EXT_matrix_uint4x2_sized
 matrix_uint4x3.hppGLM_EXT_matrix_uint4x3
 matrix_uint4x3_sized.hppGLM_EXT_matrix_uint4x3_sized
 matrix_uint4x4.hppGLM_EXT_matrix_uint4x4
 matrix_uint4x4_sized.hppGLM_EXT_matrix_uint4x4_sized
 mixed_product.hppGLM_GTX_mixed_producte
 noise.hppGLM_GTC_noise
 norm.hppGLM_GTX_norm
 normal.hppGLM_GTX_normal
 normalize_dot.hppGLM_GTX_normalize_dot
 number_precision.hppGLM_GTX_number_precision
 optimum_pow.hppGLM_GTX_optimum_pow
 orthonormalize.hppGLM_GTX_orthonormalize
 gtc/packing.hppGLM_GTC_packing
 packing.hppCore features
 pca.hppGLM_GTX_pca
 perpendicular.hppGLM_GTX_perpendicular
 polar_coordinates.hppGLM_GTX_polar_coordinates
 projection.hppGLM_GTX_projection
 qualifier.hpp
 gtc/quaternion.hppGLM_GTC_quaternion
 gtx/quaternion.hppGLM_GTX_quaternion
 quaternion_common.hppGLM_EXT_quaternion_common
 quaternion_double.hppGLM_EXT_quaternion_double
 quaternion_double_precision.hppGLM_EXT_quaternion_double_precision
 quaternion_exponential.hppGLM_EXT_quaternion_exponential
 quaternion_float.hppGLM_EXT_quaternion_float
 quaternion_float_precision.hppGLM_EXT_quaternion_float_precision
 quaternion_geometric.hppGLM_EXT_quaternion_geometric
 quaternion_relational.hppGLM_EXT_quaternion_relational
 quaternion_transform.hppGLM_EXT_quaternion_transform
 quaternion_trigonometric.hppGLM_EXT_quaternion_trigonometric
 random.hppGLM_GTC_random
 range.hppGLM_GTX_range
 raw_data.hppGLM_GTX_raw_data
 reciprocal.hppGLM_GTC_reciprocal
 rotate_normalized_axis.hppGLM_GTX_rotate_normalized_axis
 rotate_vector.hppGLM_GTX_rotate_vector
 round.hppGLM_GTC_round
 scalar_common.hppGLM_EXT_scalar_common
 scalar_constants.hppGLM_EXT_scalar_constants
 scalar_int_sized.hppGLM_EXT_scalar_int_sized
 scalar_integer.hppGLM_EXT_scalar_integer
 scalar_multiplication.hppGLM_GTX_scalar_multiplication
 scalar_packing.hppGLM_EXT_scalar_packing
 scalar_reciprocal.hppGLM_EXT_scalar_reciprocal
 ext/scalar_relational.hppGLM_EXT_scalar_relational
 gtx/scalar_relational.hppGLM_GTX_scalar_relational
 scalar_uint_sized.hppGLM_EXT_scalar_uint_sized
 scalar_ulp.hppGLM_EXT_scalar_ulp
 setup.hpp
 spline.hppGLM_GTX_spline
 std_based_type.hppGLM_GTX_std_based_type
 string_cast.hppGLM_GTX_string_cast
 structured_bindings.hppGLM_GTX_structured_bindings
 texture.hppGLM_GTX_texture
 transform.hppGLM_GTX_transform
 transform2.hppGLM_GTX_transform2
 trigonometric.hppCore features
 gtc/type_aligned.hppGLM_GTC_type_aligned
 gtx/type_aligned.hppGLM_GTX_type_aligned
 type_float.hpp
 type_half.hpp
 type_mat2x2.hppCore features
 type_mat2x3.hppCore features
 type_mat2x4.hppCore features
 type_mat3x2.hppCore features
 type_mat3x3.hppCore features
 type_mat3x4.hppCore features
 type_mat4x2.hppCore features
 type_mat4x3.hppCore features
 type_mat4x4.hppCore features
 type_precision.hppGLM_GTC_type_precision
 type_ptr.hppGLM_GTC_type_ptr
 type_quat.hppCore features
 type_trait.hppGLM_GTX_type_trait
 type_vec1.hppCore features
 type_vec2.hppCore features
 type_vec3.hppCore features
 type_vec4.hppCore features
 ulp.hppGLM_GTC_ulp
 vec1.hppGLM_GTC_vec1
 vec2.hppCore features
 vec3.hppCore features
 vec4.hppCore features
 vec_swizzle.hppGLM_GTX_vec_swizzle
 vector_angle.hppGLM_GTX_vector_angle
 vector_bool1.hppGLM_EXT_vector_bool1
 vector_bool1_precision.hppGLM_EXT_vector_bool1_precision
 vector_bool2.hppCore features
 vector_bool2_precision.hppCore features
 vector_bool3.hppCore features
 vector_bool3_precision.hppCore features
 vector_bool4.hppCore features
 vector_bool4_precision.hppCore features
 vector_common.hppGLM_EXT_vector_common
 vector_double1.hppGLM_EXT_vector_double1
 vector_double1_precision.hppGLM_EXT_vector_double1_precision
 vector_double2.hppCore features
 vector_double2_precision.hppCore features
 vector_double3.hppCore features
 vector_double3_precision.hppCore features
 vector_double4.hppCore features
 vector_double4_precision.hppCore features
 vector_float1.hppGLM_EXT_vector_float1
 vector_float1_precision.hppGLM_EXT_vector_float1_precision
 vector_float2.hppCore features
 vector_float2_precision.hppCore features
 vector_float3.hppCore features
 vector_float3_precision.hppCore features
 vector_float4.hppCore features
 vector_float4_precision.hppCore features
 vector_int1.hppGLM_EXT_vector_int1
 vector_int1_sized.hppGLM_EXT_vector_int1_sized
 vector_int2.hppCore features
 vector_int2_sized.hppGLM_EXT_vector_int2_sized
 vector_int3.hppCore features
 vector_int3_sized.hppGLM_EXT_vector_int3_sized
 vector_int4.hppCore features
 vector_int4_sized.hppGLM_EXT_vector_int4_sized
 vector_integer.hppGLM_EXT_vector_integer
 vector_packing.hppGLM_EXT_vector_packing
 vector_query.hppGLM_GTX_vector_query
 vector_reciprocal.hppGLM_EXT_vector_reciprocal
 ext/vector_relational.hppGLM_EXT_vector_relational
 vector_relational.hppCore features
 vector_uint1.hppGLM_EXT_vector_uint1
 vector_uint1_sized.hppGLM_EXT_vector_uint1_sized
 vector_uint2.hppCore features
 vector_uint2_sized.hppGLM_EXT_vector_uint2_sized
 vector_uint3.hppCore features
 vector_uint3_sized.hppGLM_EXT_vector_uint3_sized
 vector_uint4.hppCore features
 vector_uint4_sized.hppGLM_EXT_vector_uint4_sized
 vector_ulp.hppGLM_EXT_vector_ulp
 wrap.hppGLM_GTX_wrap
+
+
+ + + + diff --git a/include/glm/doc/api/folderclosed.png b/include/glm/doc/api/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4bb4a518c6acc32a6ebd2ab728b603c1d7bc1b GIT binary patch literal 573 zcmV-D0>b@?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0j^0zK~zXfwbQ#wLqQM*;Jku`45rJBQ{G)k+Vh~a_|I?kd;G1{Q`+V1KNk6 z{?Li_6x_>LyHYOY|A*FY1MqdfZ{fy>o>ZHf;V1}(W+(`!VhKhfWhFSNd(>a%7U z-hKA_>a)f(Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0mVr~K~zXfwUoO~0znjpc?Am}!q^zKFd7@R z@zQuJyfoe#wJ=&Jp+SQ-YAD!9;VnT!K>`|+H9@5?k!V3dVPV2soEI4XGc)V5!(b?u z;>(%yGw1)8VVMXKwH2!vCRQ;_tYVm0MM>>b(0dY`3o4xmDjo^?eiqif|6mm*Y+ij7 z^z$aD_Mve11U>C23fro(<{mT+wu+L{v7pMG4tYU98TA$Y1IXjEdqH0}g34(XWb*)x zVs2H??YN-JG0mt?dKh&?!Rz!87!;HmP~=t`f&z_%2l%|1Qo>&s;~?ha?yKYBqbh8I zEfr$;1sVwl@R|M@MK#(`o + + + + + + +1.0.2 API documentation: OpenGL Mathematics (GLM) + + + + + + + + + +
+
+ + + + + + + +
+
1.0.2 API documentation +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
OpenGL Mathematics (GLM)
+
+ +
+ + + + diff --git a/include/glm/doc/api/jquery.js b/include/glm/doc/api/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/include/glm/doc/api/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/include/glm/doc/api/logo-mini.png b/include/glm/doc/api/logo-mini.png new file mode 100644 index 0000000000000000000000000000000000000000..48d60ab11484fbc813206234559c526ff526c5ed GIT binary patch literal 11967 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 PI)t2*vSf|8ap3;~#Ia0~ literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/menu.js b/include/glm/doc/api/menu.js new file mode 100644 index 0000000..d18a2fe --- /dev/null +++ b/include/glm/doc/api/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/include/glm/doc/api/menudata.js b/include/glm/doc/api/menudata.js new file mode 100644 index 0000000..9b3d21d --- /dev/null +++ b/include/glm/doc/api/menudata.js @@ -0,0 +1,29 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/include/glm/doc/api/modules.html b/include/glm/doc/api/modules.html new file mode 100644 index 0000000..d9b11db --- /dev/null +++ b/include/glm/doc/api/modules.html @@ -0,0 +1,266 @@ + + + + + + + +1.0.2 API documentation: Modules + + + + + + + + + +
    +
    + + + + + + + +
    +
    1.0.2 API documentation +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    +
    [detail level 12]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Core featuresFeatures that implement in C++ the GLSL specification as closely as possible
     Stable extensionsAdditional features not specified by GLSL specification
     Recommended extensionsAdditional features not specified by GLSL specification
     Experimental extensionsExperimental features not specified by GLSL specification
    +
    +
    + + + + diff --git a/include/glm/doc/api/nav_f.png b/include/glm/doc/api/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..c77a42e73e0d578c24e875d78248305b3f2cefaa GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUl2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?->OfqC8z3LnOj`&slOcI0(30-1UEw^#93M zy-Qhm+)ew+xs;4W6WN4bTnhB&y&4ke$$I5Uz{xoxx7h!CzUZ_&qTkuR_xRrj9%YQP Yo=$vuW&M?pKwB6*UHx3vIVCg!0El2spa1{> literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/nav_g.png b/include/glm/doc/api/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KanMprAyFYeY$Kep*R+Vo@qXL1JcJiC$i6iGqoq zfu3cKah)GfjjpGQV~9jJ@8Of23^Ze#Ft^>bP0l+XkKPlYoV literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/open.png b/include/glm/doc/api/open.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d7097583a38ed1636084bf63588f1dbc1461d7 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCf`#@Q5sCVBk9p!i>lBSEK+1B}!Z)N`mv#O3D+9QW**oGxJLH@={9_O!N%& zEOU(O{D5kdJY5_^G=h^QdLCR(S^U4nz_B%f)xaTukw+kefq4d(gakvRs`GIt?*0cr O)eN4lelF{r5}E)Iel0}+ literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/search/all_0.html b/include/glm/doc/api/search/all_0.html new file mode 100644 index 0000000..ea50fff --- /dev/null +++ b/include/glm/doc/api/search/all_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_0.js b/include/glm/doc/api/search/all_0.js new file mode 100644 index 0000000..fcb3b02 --- /dev/null +++ b/include/glm/doc/api/search/all_0.js @@ -0,0 +1,217 @@ +var searchData= +[ + ['abs_0',['abs',['../a00812.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00812.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], + ['acos_1',['acos',['../a00995.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], + ['acosh_2',['acosh',['../a00995.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], + ['acot_3',['acot',['../a00871.html#ga4ba4d4a791560ed05ee07e962207bb45',1,'glm']]], + ['acoth_4',['acoth',['../a00871.html#ga6dcf17da7d24ef1c29c18bad1a5507e8',1,'glm']]], + ['acsc_5',['acsc',['../a00871.html#ga0dbb21d8c5b660c7686e262115c3119e',1,'glm']]], + ['acsch_6',['acsch',['../a00871.html#ga64c5b1bbbeb12731f3e765f26772373c',1,'glm']]], + ['adjugate_7',['adjugate',['../a00958.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00958.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00958.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], + ['affineinverse_8',['affineInverse',['../a00913.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], + ['aligned_5fbvec1_9',['aligned_bvec1',['../a00921.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], + ['aligned_5fbvec2_10',['aligned_bvec2',['../a00921.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], + ['aligned_5fbvec3_11',['aligned_bvec3',['../a00921.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], + ['aligned_5fbvec4_12',['aligned_bvec4',['../a00921.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], + ['aligned_5fdmat2_13',['aligned_dmat2',['../a00921.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], + ['aligned_5fdmat2x2_14',['aligned_dmat2x2',['../a00921.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], + ['aligned_5fdmat2x3_15',['aligned_dmat2x3',['../a00921.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], + ['aligned_5fdmat2x4_16',['aligned_dmat2x4',['../a00921.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], + ['aligned_5fdmat3_17',['aligned_dmat3',['../a00921.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], + ['aligned_5fdmat3x2_18',['aligned_dmat3x2',['../a00921.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], + ['aligned_5fdmat3x3_19',['aligned_dmat3x3',['../a00921.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], + ['aligned_5fdmat3x4_20',['aligned_dmat3x4',['../a00921.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], + ['aligned_5fdmat4_21',['aligned_dmat4',['../a00921.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], + ['aligned_5fdmat4x2_22',['aligned_dmat4x2',['../a00921.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], + ['aligned_5fdmat4x3_23',['aligned_dmat4x3',['../a00921.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], + ['aligned_5fdmat4x4_24',['aligned_dmat4x4',['../a00921.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], + ['aligned_5fdquat_25',['aligned_dquat',['../a00921.html#gab13e5f42b0c1d36f883ed30b86a55d29',1,'glm']]], + ['aligned_5fdvec1_26',['aligned_dvec1',['../a00921.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], + ['aligned_5fdvec2_27',['aligned_dvec2',['../a00921.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], + ['aligned_5fdvec3_28',['aligned_dvec3',['../a00921.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], + ['aligned_5fdvec4_29',['aligned_dvec4',['../a00921.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], + ['aligned_5fhighp_5fbvec1_30',['aligned_highp_bvec1',['../a00921.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], + ['aligned_5fhighp_5fbvec2_31',['aligned_highp_bvec2',['../a00921.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], + ['aligned_5fhighp_5fbvec3_32',['aligned_highp_bvec3',['../a00921.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], + ['aligned_5fhighp_5fbvec4_33',['aligned_highp_bvec4',['../a00921.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], + ['aligned_5fhighp_5fdmat2_34',['aligned_highp_dmat2',['../a00921.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], + ['aligned_5fhighp_5fdmat2x2_35',['aligned_highp_dmat2x2',['../a00921.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], + ['aligned_5fhighp_5fdmat2x3_36',['aligned_highp_dmat2x3',['../a00921.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], + ['aligned_5fhighp_5fdmat2x4_37',['aligned_highp_dmat2x4',['../a00921.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], + ['aligned_5fhighp_5fdmat3_38',['aligned_highp_dmat3',['../a00921.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], + ['aligned_5fhighp_5fdmat3x2_39',['aligned_highp_dmat3x2',['../a00921.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], + ['aligned_5fhighp_5fdmat3x3_40',['aligned_highp_dmat3x3',['../a00921.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], + ['aligned_5fhighp_5fdmat3x4_41',['aligned_highp_dmat3x4',['../a00921.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], + ['aligned_5fhighp_5fdmat4_42',['aligned_highp_dmat4',['../a00921.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], + ['aligned_5fhighp_5fdmat4x2_43',['aligned_highp_dmat4x2',['../a00921.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], + ['aligned_5fhighp_5fdmat4x3_44',['aligned_highp_dmat4x3',['../a00921.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], + ['aligned_5fhighp_5fdmat4x4_45',['aligned_highp_dmat4x4',['../a00921.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], + ['aligned_5fhighp_5fdquat_46',['aligned_highp_dquat',['../a00921.html#gaf4a25da5becfd7e5df53ec4befa13670',1,'glm']]], + ['aligned_5fhighp_5fdvec1_47',['aligned_highp_dvec1',['../a00921.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], + ['aligned_5fhighp_5fdvec2_48',['aligned_highp_dvec2',['../a00921.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], + ['aligned_5fhighp_5fdvec3_49',['aligned_highp_dvec3',['../a00921.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], + ['aligned_5fhighp_5fdvec4_50',['aligned_highp_dvec4',['../a00921.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], + ['aligned_5fhighp_5fivec1_51',['aligned_highp_ivec1',['../a00921.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], + ['aligned_5fhighp_5fivec2_52',['aligned_highp_ivec2',['../a00921.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], + ['aligned_5fhighp_5fivec3_53',['aligned_highp_ivec3',['../a00921.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], + ['aligned_5fhighp_5fivec4_54',['aligned_highp_ivec4',['../a00921.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], + ['aligned_5fhighp_5fmat2_55',['aligned_highp_mat2',['../a00921.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], + ['aligned_5fhighp_5fmat2x2_56',['aligned_highp_mat2x2',['../a00921.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], + ['aligned_5fhighp_5fmat2x3_57',['aligned_highp_mat2x3',['../a00921.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], + ['aligned_5fhighp_5fmat2x4_58',['aligned_highp_mat2x4',['../a00921.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], + ['aligned_5fhighp_5fmat3_59',['aligned_highp_mat3',['../a00921.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], + ['aligned_5fhighp_5fmat3x2_60',['aligned_highp_mat3x2',['../a00921.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], + ['aligned_5fhighp_5fmat3x3_61',['aligned_highp_mat3x3',['../a00921.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], + ['aligned_5fhighp_5fmat3x4_62',['aligned_highp_mat3x4',['../a00921.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], + ['aligned_5fhighp_5fmat4_63',['aligned_highp_mat4',['../a00921.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], + ['aligned_5fhighp_5fmat4x2_64',['aligned_highp_mat4x2',['../a00921.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], + ['aligned_5fhighp_5fmat4x3_65',['aligned_highp_mat4x3',['../a00921.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], + ['aligned_5fhighp_5fmat4x4_66',['aligned_highp_mat4x4',['../a00921.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], + ['aligned_5fhighp_5fquat_67',['aligned_highp_quat',['../a00921.html#ga1f4d1cae53972e1ccb16b6710f3ac6a3',1,'glm']]], + ['aligned_5fhighp_5fuvec1_68',['aligned_highp_uvec1',['../a00921.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], + ['aligned_5fhighp_5fuvec2_69',['aligned_highp_uvec2',['../a00921.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], + ['aligned_5fhighp_5fuvec3_70',['aligned_highp_uvec3',['../a00921.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], + ['aligned_5fhighp_5fuvec4_71',['aligned_highp_uvec4',['../a00921.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], + ['aligned_5fhighp_5fvec1_72',['aligned_highp_vec1',['../a00921.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], + ['aligned_5fhighp_5fvec2_73',['aligned_highp_vec2',['../a00921.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], + ['aligned_5fhighp_5fvec3_74',['aligned_highp_vec3',['../a00921.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], + ['aligned_5fhighp_5fvec4_75',['aligned_highp_vec4',['../a00921.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], + ['aligned_5fivec1_76',['aligned_ivec1',['../a00921.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], + ['aligned_5fivec2_77',['aligned_ivec2',['../a00921.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], + ['aligned_5fivec3_78',['aligned_ivec3',['../a00921.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], + ['aligned_5fivec4_79',['aligned_ivec4',['../a00921.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], + ['aligned_5flowp_5fbvec1_80',['aligned_lowp_bvec1',['../a00921.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], + ['aligned_5flowp_5fbvec2_81',['aligned_lowp_bvec2',['../a00921.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], + ['aligned_5flowp_5fbvec3_82',['aligned_lowp_bvec3',['../a00921.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], + ['aligned_5flowp_5fbvec4_83',['aligned_lowp_bvec4',['../a00921.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], + ['aligned_5flowp_5fdmat2_84',['aligned_lowp_dmat2',['../a00921.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], + ['aligned_5flowp_5fdmat2x2_85',['aligned_lowp_dmat2x2',['../a00921.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], + ['aligned_5flowp_5fdmat2x3_86',['aligned_lowp_dmat2x3',['../a00921.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], + ['aligned_5flowp_5fdmat2x4_87',['aligned_lowp_dmat2x4',['../a00921.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], + ['aligned_5flowp_5fdmat3_88',['aligned_lowp_dmat3',['../a00921.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], + ['aligned_5flowp_5fdmat3x2_89',['aligned_lowp_dmat3x2',['../a00921.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], + ['aligned_5flowp_5fdmat3x3_90',['aligned_lowp_dmat3x3',['../a00921.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], + ['aligned_5flowp_5fdmat3x4_91',['aligned_lowp_dmat3x4',['../a00921.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], + ['aligned_5flowp_5fdmat4_92',['aligned_lowp_dmat4',['../a00921.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], + ['aligned_5flowp_5fdmat4x2_93',['aligned_lowp_dmat4x2',['../a00921.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], + ['aligned_5flowp_5fdmat4x3_94',['aligned_lowp_dmat4x3',['../a00921.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], + ['aligned_5flowp_5fdmat4x4_95',['aligned_lowp_dmat4x4',['../a00921.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], + ['aligned_5flowp_5fdquat_96',['aligned_lowp_dquat',['../a00921.html#gafe9b7a5f9e4ca385df4b5a3aee5d647e',1,'glm']]], + ['aligned_5flowp_5fdvec1_97',['aligned_lowp_dvec1',['../a00921.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], + ['aligned_5flowp_5fdvec2_98',['aligned_lowp_dvec2',['../a00921.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], + ['aligned_5flowp_5fdvec3_99',['aligned_lowp_dvec3',['../a00921.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], + ['aligned_5flowp_5fdvec4_100',['aligned_lowp_dvec4',['../a00921.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], + ['aligned_5flowp_5fivec1_101',['aligned_lowp_ivec1',['../a00921.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], + ['aligned_5flowp_5fivec2_102',['aligned_lowp_ivec2',['../a00921.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], + ['aligned_5flowp_5fivec3_103',['aligned_lowp_ivec3',['../a00921.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], + ['aligned_5flowp_5fivec4_104',['aligned_lowp_ivec4',['../a00921.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], + ['aligned_5flowp_5fmat2_105',['aligned_lowp_mat2',['../a00921.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], + ['aligned_5flowp_5fmat2x2_106',['aligned_lowp_mat2x2',['../a00921.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], + ['aligned_5flowp_5fmat2x3_107',['aligned_lowp_mat2x3',['../a00921.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], + ['aligned_5flowp_5fmat2x4_108',['aligned_lowp_mat2x4',['../a00921.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], + ['aligned_5flowp_5fmat3_109',['aligned_lowp_mat3',['../a00921.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], + ['aligned_5flowp_5fmat3x2_110',['aligned_lowp_mat3x2',['../a00921.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], + ['aligned_5flowp_5fmat3x3_111',['aligned_lowp_mat3x3',['../a00921.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], + ['aligned_5flowp_5fmat3x4_112',['aligned_lowp_mat3x4',['../a00921.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], + ['aligned_5flowp_5fmat4_113',['aligned_lowp_mat4',['../a00921.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], + ['aligned_5flowp_5fmat4x2_114',['aligned_lowp_mat4x2',['../a00921.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], + ['aligned_5flowp_5fmat4x3_115',['aligned_lowp_mat4x3',['../a00921.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], + ['aligned_5flowp_5fmat4x4_116',['aligned_lowp_mat4x4',['../a00921.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], + ['aligned_5flowp_5fquat_117',['aligned_lowp_quat',['../a00921.html#ga9608c6b6a8c44cb18cb18ce914487594',1,'glm']]], + ['aligned_5flowp_5fuvec1_118',['aligned_lowp_uvec1',['../a00921.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], + ['aligned_5flowp_5fuvec2_119',['aligned_lowp_uvec2',['../a00921.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], + ['aligned_5flowp_5fuvec3_120',['aligned_lowp_uvec3',['../a00921.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], + ['aligned_5flowp_5fuvec4_121',['aligned_lowp_uvec4',['../a00921.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], + ['aligned_5flowp_5fvec1_122',['aligned_lowp_vec1',['../a00921.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], + ['aligned_5flowp_5fvec2_123',['aligned_lowp_vec2',['../a00921.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], + ['aligned_5flowp_5fvec3_124',['aligned_lowp_vec3',['../a00921.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], + ['aligned_5flowp_5fvec4_125',['aligned_lowp_vec4',['../a00921.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], + ['aligned_5fmat2_126',['aligned_mat2',['../a00921.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], + ['aligned_5fmat2x2_127',['aligned_mat2x2',['../a00921.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], + ['aligned_5fmat2x3_128',['aligned_mat2x3',['../a00921.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], + ['aligned_5fmat2x4_129',['aligned_mat2x4',['../a00921.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], + ['aligned_5fmat3_130',['aligned_mat3',['../a00921.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], + ['aligned_5fmat3x2_131',['aligned_mat3x2',['../a00921.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], + ['aligned_5fmat3x3_132',['aligned_mat3x3',['../a00921.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], + ['aligned_5fmat3x4_133',['aligned_mat3x4',['../a00921.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], + ['aligned_5fmat4_134',['aligned_mat4',['../a00921.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], + ['aligned_5fmat4x2_135',['aligned_mat4x2',['../a00921.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], + ['aligned_5fmat4x3_136',['aligned_mat4x3',['../a00921.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], + ['aligned_5fmat4x4_137',['aligned_mat4x4',['../a00921.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], + ['aligned_5fmediump_5fbvec1_138',['aligned_mediump_bvec1',['../a00921.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], + ['aligned_5fmediump_5fbvec2_139',['aligned_mediump_bvec2',['../a00921.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], + ['aligned_5fmediump_5fbvec3_140',['aligned_mediump_bvec3',['../a00921.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], + ['aligned_5fmediump_5fbvec4_141',['aligned_mediump_bvec4',['../a00921.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], + ['aligned_5fmediump_5fdmat2_142',['aligned_mediump_dmat2',['../a00921.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], + ['aligned_5fmediump_5fdmat2x2_143',['aligned_mediump_dmat2x2',['../a00921.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], + ['aligned_5fmediump_5fdmat2x3_144',['aligned_mediump_dmat2x3',['../a00921.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], + ['aligned_5fmediump_5fdmat2x4_145',['aligned_mediump_dmat2x4',['../a00921.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], + ['aligned_5fmediump_5fdmat3_146',['aligned_mediump_dmat3',['../a00921.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], + ['aligned_5fmediump_5fdmat3x2_147',['aligned_mediump_dmat3x2',['../a00921.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], + ['aligned_5fmediump_5fdmat3x3_148',['aligned_mediump_dmat3x3',['../a00921.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], + ['aligned_5fmediump_5fdmat3x4_149',['aligned_mediump_dmat3x4',['../a00921.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], + ['aligned_5fmediump_5fdmat4_150',['aligned_mediump_dmat4',['../a00921.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], + ['aligned_5fmediump_5fdmat4x2_151',['aligned_mediump_dmat4x2',['../a00921.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], + ['aligned_5fmediump_5fdmat4x3_152',['aligned_mediump_dmat4x3',['../a00921.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], + ['aligned_5fmediump_5fdmat4x4_153',['aligned_mediump_dmat4x4',['../a00921.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], + ['aligned_5fmediump_5fdquat_154',['aligned_mediump_dquat',['../a00921.html#ga224812837186d3426283e29bbdaa98c0',1,'glm']]], + ['aligned_5fmediump_5fdvec1_155',['aligned_mediump_dvec1',['../a00921.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], + ['aligned_5fmediump_5fdvec2_156',['aligned_mediump_dvec2',['../a00921.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], + ['aligned_5fmediump_5fdvec3_157',['aligned_mediump_dvec3',['../a00921.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], + ['aligned_5fmediump_5fdvec4_158',['aligned_mediump_dvec4',['../a00921.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], + ['aligned_5fmediump_5fivec1_159',['aligned_mediump_ivec1',['../a00921.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], + ['aligned_5fmediump_5fivec2_160',['aligned_mediump_ivec2',['../a00921.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], + ['aligned_5fmediump_5fivec3_161',['aligned_mediump_ivec3',['../a00921.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], + ['aligned_5fmediump_5fivec4_162',['aligned_mediump_ivec4',['../a00921.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], + ['aligned_5fmediump_5fmat2_163',['aligned_mediump_mat2',['../a00921.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], + ['aligned_5fmediump_5fmat2x2_164',['aligned_mediump_mat2x2',['../a00921.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], + ['aligned_5fmediump_5fmat2x3_165',['aligned_mediump_mat2x3',['../a00921.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], + ['aligned_5fmediump_5fmat2x4_166',['aligned_mediump_mat2x4',['../a00921.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], + ['aligned_5fmediump_5fmat3_167',['aligned_mediump_mat3',['../a00921.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], + ['aligned_5fmediump_5fmat3x2_168',['aligned_mediump_mat3x2',['../a00921.html#ga80dee705d714300378e0847f45059097',1,'glm']]], + ['aligned_5fmediump_5fmat3x3_169',['aligned_mediump_mat3x3',['../a00921.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], + ['aligned_5fmediump_5fmat3x4_170',['aligned_mediump_mat3x4',['../a00921.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], + ['aligned_5fmediump_5fmat4_171',['aligned_mediump_mat4',['../a00921.html#gaeefee8317192174596852ce19b602720',1,'glm']]], + ['aligned_5fmediump_5fmat4x2_172',['aligned_mediump_mat4x2',['../a00921.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], + ['aligned_5fmediump_5fmat4x3_173',['aligned_mediump_mat4x3',['../a00921.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], + ['aligned_5fmediump_5fmat4x4_174',['aligned_mediump_mat4x4',['../a00921.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], + ['aligned_5fmediump_5fquat_175',['aligned_mediump_quat',['../a00921.html#ga1504373315ffd788a4c08669b997ab5e',1,'glm']]], + ['aligned_5fmediump_5fuvec1_176',['aligned_mediump_uvec1',['../a00921.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], + ['aligned_5fmediump_5fuvec2_177',['aligned_mediump_uvec2',['../a00921.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], + ['aligned_5fmediump_5fuvec3_178',['aligned_mediump_uvec3',['../a00921.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], + ['aligned_5fmediump_5fuvec4_179',['aligned_mediump_uvec4',['../a00921.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], + ['aligned_5fmediump_5fvec1_180',['aligned_mediump_vec1',['../a00921.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], + ['aligned_5fmediump_5fvec2_181',['aligned_mediump_vec2',['../a00921.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], + ['aligned_5fmediump_5fvec3_182',['aligned_mediump_vec3',['../a00921.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], + ['aligned_5fmediump_5fvec4_183',['aligned_mediump_vec4',['../a00921.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], + ['aligned_5fquat_184',['aligned_quat',['../a00921.html#ga32e247c58235caf15a0f5e68356e285b',1,'glm']]], + ['aligned_5fuvec1_185',['aligned_uvec1',['../a00921.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], + ['aligned_5fuvec2_186',['aligned_uvec2',['../a00921.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], + ['aligned_5fuvec3_187',['aligned_uvec3',['../a00921.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], + ['aligned_5fuvec4_188',['aligned_uvec4',['../a00921.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], + ['aligned_5fvec1_189',['aligned_vec1',['../a00921.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], + ['aligned_5fvec2_190',['aligned_vec2',['../a00921.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], + ['aligned_5fvec3_191',['aligned_vec3',['../a00921.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], + ['aligned_5fvec4_192',['aligned_vec4',['../a00921.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]], + ['all_193',['all',['../a00996.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], + ['angle_194',['angle',['../a00865.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00989.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['angleaxis_195',['angleAxis',['../a00865.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], + ['any_196',['any',['../a00996.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], + ['arecollinear_197',['areCollinear',['../a00990.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], + ['areorthogonal_198',['areOrthogonal',['../a00990.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], + ['areorthonormal_199',['areOrthonormal',['../a00990.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], + ['asec_200',['asec',['../a00871.html#ga0938f4ce4f0bfe414c85dd92f7c42400',1,'glm']]], + ['asech_201',['asech',['../a00871.html#ga2db2855bc3ab46bdc83b01620f5d95f1',1,'glm']]], + ['asin_202',['asin',['../a00995.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], + ['asinh_203',['asinh',['../a00995.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], + ['associated_5fmin_5fmax_2ehpp_204',['associated_min_max.hpp',['../a00587.html',1,'']]], + ['associatedmax_205',['associatedMax',['../a00926.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00926.html#ga66460edde3bbd331d1d8855159d80b23',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00926.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00926.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00926.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00926.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00926.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00926.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00926.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00926.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00926.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00926.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], + ['associatedmin_206',['associatedMin',['../a00926.html#ga3c550a0ac2d615bf90ab26ebc2c680f6',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00926.html#ga8392895670c92822fc81583942203220',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00926.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00926.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00926.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00926.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00926.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00926.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00926.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00926.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], + ['atan_207',['atan',['../a00995.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00995.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], + ['atan2_208',['atan2',['../a00933.html#ga9e7b4e9a672898b8cf80ef8ab414f87a',1,'glm::atan2(T y, T x)'],['../a00933.html#gac2af1a4b5c095b5a262f50e7c5ad7fb9',1,'glm::atan2(const vec< 2, T, Q > &y, const vec< 2, T, Q > &x)'],['../a00933.html#ga519d42527308dfd56e655d9ed6e1e727',1,'glm::atan2(const vec< 3, T, Q > &y, const vec< 3, T, Q > &x)'],['../a00933.html#ga8e1bdff7efb18ef15a3119773f261326',1,'glm::atan2(const vec< 4, T, Q > &y, const vec< 4, T, Q > &x)']]], + ['atanh_209',['atanh',['../a00995.html#gabc925650e618357d07da255531658b87',1,'glm']]], + ['axis_210',['axis',['../a00865.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], + ['axisangle_211',['axisAngle',['../a00956.html#ga75220364722b0e367df98af61de4c3e5',1,'glm']]], + ['axisanglematrix_212',['axisAngleMatrix',['../a00956.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]], + ['angle_20and_20trigonometry_20functions_213',['Angle and Trigonometry Functions',['../a00995.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_1.html b/include/glm/doc/api/search/all_1.html new file mode 100644 index 0000000..86b0682 --- /dev/null +++ b/include/glm/doc/api/search/all_1.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_1.js b/include/glm/doc/api/search/all_1.js new file mode 100644 index 0000000..b94b5d2 --- /dev/null +++ b/include/glm/doc/api/search/all_1.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['backeasein_214',['backEaseIn',['../a00936.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00936.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], + ['backeaseinout_215',['backEaseInOut',['../a00936.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00936.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], + ['backeaseout_216',['backEaseOut',['../a00936.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00936.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], + ['ballrand_217',['ballRand',['../a00918.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], + ['bit_2ehpp_218',['bit.hpp',['../a00590.html',1,'']]], + ['bitcount_219',['bitCount',['../a00992.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00992.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], + ['bitfield_2ehpp_220',['bitfield.hpp',['../a00533.html',1,'']]], + ['bitfielddeinterleave_221',['bitfieldDeinterleave',['../a00906.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00906.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00906.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], + ['bitfieldextract_222',['bitfieldExtract',['../a00992.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], + ['bitfieldfillone_223',['bitfieldFillOne',['../a00906.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00906.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], + ['bitfieldfillzero_224',['bitfieldFillZero',['../a00906.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00906.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], + ['bitfieldinsert_225',['bitfieldInsert',['../a00992.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], + ['bitfieldinterleave_226',['bitfieldInterleave',['../a00906.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00906.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00906.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00906.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00906.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00906.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00906.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00906.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00906.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00906.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00906.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00906.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00906.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00906.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00906.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00906.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00906.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00906.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00906.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], + ['bitfieldreverse_227',['bitfieldReverse',['../a00992.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], + ['bitfieldrotateleft_228',['bitfieldRotateLeft',['../a00906.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00906.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], + ['bitfieldrotateright_229',['bitfieldRotateRight',['../a00906.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00906.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], + ['bool1_230',['bool1',['../a00933.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], + ['bool1x1_231',['bool1x1',['../a00933.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], + ['bool2_232',['bool2',['../a00933.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], + ['bool2x2_233',['bool2x2',['../a00933.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], + ['bool2x3_234',['bool2x3',['../a00933.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], + ['bool2x4_235',['bool2x4',['../a00933.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], + ['bool3_236',['bool3',['../a00933.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], + ['bool3x2_237',['bool3x2',['../a00933.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], + ['bool3x3_238',['bool3x3',['../a00933.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], + ['bool3x4_239',['bool3x4',['../a00933.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], + ['bool4_240',['bool4',['../a00933.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], + ['bool4x2_241',['bool4x2',['../a00933.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], + ['bool4x3_242',['bool4x3',['../a00933.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], + ['bool4x4_243',['bool4x4',['../a00933.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], + ['bounceeasein_244',['bounceEaseIn',['../a00936.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], + ['bounceeaseinout_245',['bounceEaseInOut',['../a00936.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], + ['bounceeaseout_246',['bounceEaseOut',['../a00936.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]], + ['bvec1_247',['bvec1',['../a00875.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], + ['bvec2_248',['bvec2',['../a00899.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], + ['bvec3_249',['bvec3',['../a00899.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], + ['bvec4_250',['bvec4',['../a00899.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], + ['byte_251',['byte',['../a00974.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_10.html b/include/glm/doc/api/search/all_10.html new file mode 100644 index 0000000..b910674 --- /dev/null +++ b/include/glm/doc/api/search/all_10.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_10.js b/include/glm/doc/api/search/all_10.js new file mode 100644 index 0000000..6e7b74b --- /dev/null +++ b/include/glm/doc/api/search/all_10.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['stable_20extensions_1993',['Stable extensions',['../a00903.html',1,'']]], + ['saturate_1994',['saturate',['../a00933.html#ga744b98814a35336e25cc0d1ba30f63f7',1,'glm::saturate(T x)'],['../a00933.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00933.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00933.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], + ['saturation_1995',['saturation',['../a00930.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00930.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00930.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], + ['scalar_5fcommon_2ehpp_1996',['scalar_common.hpp',['../a00356.html',1,'']]], + ['scalar_5fconstants_2ehpp_1997',['scalar_constants.hpp',['../a00359.html',1,'']]], + ['scalar_5fint_5fsized_2ehpp_1998',['scalar_int_sized.hpp',['../a00362.html',1,'']]], + ['scalar_5finteger_2ehpp_1999',['scalar_integer.hpp',['../a00365.html',1,'']]], + ['scalar_5fmultiplication_2ehpp_2000',['scalar_multiplication.hpp',['../a00728.html',1,'']]], + ['scalar_5fpacking_2ehpp_2001',['scalar_packing.hpp',['../a00368.html',1,'']]], + ['scalar_5freciprocal_2ehpp_2002',['scalar_reciprocal.hpp',['../a00371.html',1,'']]], + ['scalar_5fuint_5fsized_2ehpp_2003',['scalar_uint_sized.hpp',['../a00377.html',1,'']]], + ['scalar_5fulp_2ehpp_2004',['scalar_ulp.hpp',['../a00380.html',1,'']]], + ['scale_2005',['scale',['../a00837.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00960.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00984.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], + ['scalebias_2006',['scaleBias',['../a00985.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00985.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], + ['sec_2007',['sec',['../a00871.html#ga225db01831b8a4b5a3d9bd3e486ed21c',1,'glm']]], + ['sech_2008',['sech',['../a00871.html#ga0e16a0de56f2bf9a432dc2776020fc7a',1,'glm']]], + ['shear_2009',['shear',['../a00837.html#ga391e0142852ab4139dcea0d9b1bbc048',1,'glm']]], + ['shearx_2010',['shearX',['../a00960.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], + ['shearx2d_2011',['shearX2D',['../a00985.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], + ['shearx3d_2012',['shearX3D',['../a00985.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], + ['sheary_2013',['shearY',['../a00960.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], + ['sheary2d_2014',['shearY2D',['../a00985.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], + ['sheary3d_2015',['shearY3D',['../a00985.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], + ['shearz3d_2016',['shearZ3D',['../a00985.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], + ['shortmix_2017',['shortMix',['../a00972.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], + ['sign_2018',['sign',['../a00812.html#ga589807f35ad0a1d173762bfac3288929',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00952.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], + ['simplex_2019',['simplex',['../a00915.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], + ['sin_2020',['sin',['../a00995.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], + ['sineeasein_2021',['sineEaseIn',['../a00936.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], + ['sineeaseinout_2022',['sineEaseInOut',['../a00936.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], + ['sineeaseout_2023',['sineEaseOut',['../a00936.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], + ['sinh_2024',['sinh',['../a00995.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], + ['sint_2025',['sint',['../a00948.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], + ['size1_2026',['size1',['../a00980.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], + ['size1_5ft_2027',['size1_t',['../a00980.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], + ['size2_2028',['size2',['../a00980.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], + ['size2_5ft_2029',['size2_t',['../a00980.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], + ['size3_2030',['size3',['../a00980.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], + ['size3_5ft_2031',['size3_t',['../a00980.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], + ['size4_2032',['size4',['../a00980.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], + ['size4_5ft_2033',['size4_t',['../a00980.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]], + ['slerp_2034',['slerp',['../a00856.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00856.html#ga8514da9c52cfee86f716cc0933ce118a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)'],['../a00976.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], + ['smoothstep_2035',['smoothstep',['../a00812.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], + ['sorteigenvalues_2036',['sortEigenvalues',['../a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f',1,'glm::sortEigenvalues(vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)'],['../a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5',1,'glm::sortEigenvalues(vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors)'],['../a00968.html#ga3fe570b4abe7eca8afb32896d77394f5',1,'glm::sortEigenvalues(vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)']]], + ['sphericalrand_2037',['sphericalRand',['../a00918.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], + ['spline_2ehpp_2038',['spline.hpp',['../a00731.html',1,'']]], + ['sqrt_2039',['sqrt',['../a00813.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00864.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00948.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00948.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], + ['squad_2040',['squad',['../a00972.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], + ['std_5fbased_5ftype_2ehpp_2041',['std_based_type.hpp',['../a00734.html',1,'']]], + ['step_2042',['step',['../a00812.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00812.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00812.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]], + ['string_5fcast_2ehpp_2043',['string_cast.hpp',['../a00737.html',1,'']]], + ['structured_5fbindings_2ehpp_2044',['structured_bindings.hpp',['../a00740.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_11.html b/include/glm/doc/api/search/all_11.html new file mode 100644 index 0000000..459c977 --- /dev/null +++ b/include/glm/doc/api/search/all_11.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_11.js b/include/glm/doc/api/search/all_11.js new file mode 100644 index 0000000..521f3fb --- /dev/null +++ b/include/glm/doc/api/search/all_11.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['tan_2045',['tan',['../a00995.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], + ['tanh_2046',['tanh',['../a00995.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], + ['tau_2047',['tau',['../a00908.html#gae645d3bb4076df6976b3c0821831b422',1,'glm']]], + ['texture_2ehpp_2048',['texture.hpp',['../a00743.html',1,'']]], + ['third_2049',['third',['../a00908.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], + ['three_5fover_5ftwo_5fpi_2050',['three_over_two_pi',['../a00908.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], + ['to_5fstring_2051',['to_string',['../a00981.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], + ['tomat3_2052',['toMat3',['../a00972.html#gac228e3fcfa813841804362fcae02b337',1,'glm']]], + ['tomat4_2053',['toMat4',['../a00972.html#gad0d0c14d7d3c852b41d6a6e4d1da6606',1,'glm']]], + ['toquat_2054',['toQuat',['../a00972.html#ga7b2be33d948db631c8815e9f2953a451',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00972.html#ga4cf12d456770d716b590fd498bce6136',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], + ['transform_2ehpp_2055',['transform.hpp',['../a00746.html',1,'']]], + ['transform2_2ehpp_2056',['transform2.hpp',['../a00749.html',1,'']]], + ['translate_2057',['translate',['../a00837.html#gac6b494bda2f47615b2fd3e70f3d2c912',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00960.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00984.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], + ['transpose_2058',['transpose',['../a00834.html#ga4bedcb9c511484f38fd30a60c95f4679',1,'glm']]], + ['trianglenormal_2059',['triangleNormal',['../a00963.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], + ['trigonometric_2ehpp_2060',['trigonometric.hpp',['../a00797.html',1,'']]], + ['trunc_2061',['trunc',['../a00812.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], + ['tweakedinfiniteperspective_2062',['tweakedInfinitePerspective',['../a00814.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00814.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], + ['two_5fover_5fpi_2063',['two_over_pi',['../a00908.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], + ['two_5fover_5froot_5fpi_2064',['two_over_root_pi',['../a00908.html#ga5827301817640843cf02026a8d493894',1,'glm']]], + ['two_5fpi_2065',['two_pi',['../a00908.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], + ['two_5fthirds_2066',['two_thirds',['../a00908.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]], + ['type_5fmat2x2_2ehpp_2067',['type_mat2x2.hpp',['../a00044.html',1,'']]], + ['type_5fmat2x3_2ehpp_2068',['type_mat2x3.hpp',['../a00047.html',1,'']]], + ['type_5fmat2x4_2ehpp_2069',['type_mat2x4.hpp',['../a00050.html',1,'']]], + ['type_5fmat3x2_2ehpp_2070',['type_mat3x2.hpp',['../a00053.html',1,'']]], + ['type_5fmat3x3_2ehpp_2071',['type_mat3x3.hpp',['../a00056.html',1,'']]], + ['type_5fmat3x4_2ehpp_2072',['type_mat3x4.hpp',['../a00059.html',1,'']]], + ['type_5fmat4x2_2ehpp_2073',['type_mat4x2.hpp',['../a00062.html',1,'']]], + ['type_5fmat4x3_2ehpp_2074',['type_mat4x3.hpp',['../a00065.html',1,'']]], + ['type_5fmat4x4_2ehpp_2075',['type_mat4x4.hpp',['../a00068.html',1,'']]], + ['type_5fprecision_2ehpp_2076',['type_precision.hpp',['../a00575.html',1,'']]], + ['type_5fptr_2ehpp_2077',['type_ptr.hpp',['../a00578.html',1,'']]], + ['type_5fquat_2ehpp_2078',['type_quat.hpp',['../a00071.html',1,'']]], + ['type_5ftrait_2ehpp_2079',['type_trait.hpp',['../a00752.html',1,'']]], + ['type_5fvec1_2ehpp_2080',['type_vec1.hpp',['../a00074.html',1,'']]], + ['type_5fvec2_2ehpp_2081',['type_vec2.hpp',['../a00077.html',1,'']]], + ['type_5fvec3_2ehpp_2082',['type_vec3.hpp',['../a00080.html',1,'']]], + ['type_5fvec4_2ehpp_2083',['type_vec4.hpp',['../a00083.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_12.html b/include/glm/doc/api/search/all_12.html new file mode 100644 index 0000000..290ee76 --- /dev/null +++ b/include/glm/doc/api/search/all_12.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_12.js b/include/glm/doc/api/search/all_12.js new file mode 100644 index 0000000..2016371 --- /dev/null +++ b/include/glm/doc/api/search/all_12.js @@ -0,0 +1,145 @@ +var searchData= +[ + ['u16_2084',['u16',['../a00922.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], + ['u16mat2_2085',['u16mat2',['../a00839.html#gab5b9f6f94a5b7190466cbce9a96f2151',1,'glm']]], + ['u16mat2x2_2086',['u16mat2x2',['../a00839.html#ga820fe7dddf5e891cf4345a23ce2ea813',1,'glm']]], + ['u16mat2x3_2087',['u16mat2x3',['../a00841.html#ga19d5860baba684549bd0774c36e48af2',1,'glm']]], + ['u16mat2x4_2088',['u16mat2x4',['../a00843.html#ga055726c5e617b57196bb8f4c695f5728',1,'glm']]], + ['u16mat3_2089',['u16mat3',['../a00847.html#ga8c37f20870755f50b73a689e08af8f88',1,'glm']]], + ['u16mat3x2_2090',['u16mat3x2',['../a00845.html#ga3311ce83a726e0153773bc42683434ed',1,'glm']]], + ['u16mat3x3_2091',['u16mat3x3',['../a00847.html#ga36803d6b625e15cda1579525b47eb859',1,'glm']]], + ['u16mat3x4_2092',['u16mat3x4',['../a00849.html#ga80afc1a131374aea2e16719c89cc9632',1,'glm']]], + ['u16mat4_2093',['u16mat4',['../a00855.html#gaabfaeee7099a24ea040a21c315564faf',1,'glm']]], + ['u16mat4x2_2094',['u16mat4x2',['../a00851.html#gad8c9aaf9191198e686af800ce8217449',1,'glm']]], + ['u16mat4x3_2095',['u16mat4x3',['../a00853.html#ga76c2c7a20b1012b4cc3374c47e2fe79c',1,'glm']]], + ['u16mat4x4_2096',['u16mat4x4',['../a00855.html#gadcf5da976c2ee709de8dd6dd65bca436',1,'glm']]], + ['u16vec1_2097',['u16vec1',['../a00892.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm']]], + ['u16vec2_2098',['u16vec2',['../a00893.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], + ['u16vec3_2099',['u16vec3',['../a00894.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], + ['u16vec4_2100',['u16vec4',['../a00895.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], + ['u32_2101',['u32',['../a00922.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], + ['u32mat2_2102',['u32mat2',['../a00839.html#ga811a43d955ef7caa919787e38abb1bab',1,'glm']]], + ['u32mat2x2_2103',['u32mat2x2',['../a00839.html#ga8426c09e876dc3837c2107b78a6a59b6',1,'glm']]], + ['u32mat2x3_2104',['u32mat2x3',['../a00841.html#ga0fd0b888a5973cfa8fcdab0dff8b6993',1,'glm']]], + ['u32mat2x4_2105',['u32mat2x4',['../a00843.html#ga544507f62e26969e98ce9a6afb5d2cad',1,'glm']]], + ['u32mat3_2106',['u32mat3',['../a00847.html#gac5c09be9a4646331e6e5d595316a3c29',1,'glm']]], + ['u32mat3x2_2107',['u32mat3x2',['../a00845.html#ga3ef030ce44dbd2e68bd12f1f7d47d242',1,'glm']]], + ['u32mat3x3_2108',['u32mat3x3',['../a00847.html#ga820b13b067c3bd0da9384d93b70ce9a6',1,'glm']]], + ['u32mat3x4_2109',['u32mat3x4',['../a00849.html#ga3fe03e2f7c65ded47c83f0efc3c584a1',1,'glm']]], + ['u32mat4_2110',['u32mat4',['../a00855.html#ga92fa0dd48e3a180a548e36ecd594224b',1,'glm']]], + ['u32mat4x2_2111',['u32mat4x2',['../a00851.html#gae4c874b9c833bedd7e67afaf159c350e',1,'glm']]], + ['u32mat4x3_2112',['u32mat4x3',['../a00853.html#ga03a1e404b5cd44e15f78cec8c9be1f58',1,'glm']]], + ['u32mat4x4_2113',['u32mat4x4',['../a00855.html#ga16e259d66272b5af0bb327896f461db6',1,'glm']]], + ['u32vec1_2114',['u32vec1',['../a00892.html#gae627372cfd5f20dd87db490387b71195',1,'glm']]], + ['u32vec2_2115',['u32vec2',['../a00893.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], + ['u32vec3_2116',['u32vec3',['../a00894.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], + ['u32vec4_2117',['u32vec4',['../a00895.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], + ['u64_2118',['u64',['../a00922.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], + ['u64mat2_2119',['u64mat2',['../a00839.html#ga19bf0cb18a85b0e0879f0f8f7fce6f43',1,'glm']]], + ['u64mat2x2_2120',['u64mat2x2',['../a00839.html#ga9e462f9cfd9026089ed140aadc91975b',1,'glm']]], + ['u64mat2x3_2121',['u64mat2x3',['../a00841.html#ga301b8f80a3a17c5bfa49f5225dec6888',1,'glm']]], + ['u64mat2x4_2122',['u64mat2x4',['../a00843.html#gaade09898ba32793e1a252330e881ebf4',1,'glm']]], + ['u64mat3_2123',['u64mat3',['../a00847.html#gafaaf26f1562308e1dc0889311e6e7a20',1,'glm']]], + ['u64mat3x2_2124',['u64mat3x2',['../a00845.html#ga4dc2fdfe9a3d2461101e017e1a24fef6',1,'glm']]], + ['u64mat3x3_2125',['u64mat3x3',['../a00847.html#ga5a750d248e0d1e2436b5b2c81b3b5896',1,'glm']]], + ['u64mat3x4_2126',['u64mat3x4',['../a00849.html#gaf7143266570d2647825063a9ede9f088',1,'glm']]], + ['u64mat4_2127',['u64mat4',['../a00855.html#ga878c0ff8a8ed0a7381216311bf0b9235',1,'glm']]], + ['u64mat4x2_2128',['u64mat4x2',['../a00851.html#ga4ca9245422ee360303ec8daab16e8572',1,'glm']]], + ['u64mat4x3_2129',['u64mat4x3',['../a00853.html#ga91a05c8024b2e745460a6606f17fc602',1,'glm']]], + ['u64mat4x4_2130',['u64mat4x4',['../a00855.html#gac1abc008e8233c926c8ee188c3958142',1,'glm']]], + ['u64vec1_2131',['u64vec1',['../a00892.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm']]], + ['u64vec2_2132',['u64vec2',['../a00893.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], + ['u64vec3_2133',['u64vec3',['../a00894.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], + ['u64vec4_2134',['u64vec4',['../a00895.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], + ['u8_2135',['u8',['../a00922.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], + ['u8mat2_2136',['u8mat2',['../a00839.html#ga222219d3aab9c3b2d835b55d7a961b4e',1,'glm']]], + ['u8mat2x2_2137',['u8mat2x2',['../a00839.html#gadc76d570d23f338a90e9d41d3279199e',1,'glm']]], + ['u8mat2x3_2138',['u8mat2x3',['../a00841.html#ga69282ea3f7a720c1b17c15d9add5444d',1,'glm']]], + ['u8mat2x4_2139',['u8mat2x4',['../a00843.html#gaf23eaa003d78c2eff52e35af503b4774',1,'glm']]], + ['u8mat3_2140',['u8mat3',['../a00847.html#ga765e47b3da32d6f8d7eafc246628a9a6',1,'glm']]], + ['u8mat3x2_2141',['u8mat3x2',['../a00845.html#ga61551e90468eb24390b045e6733fa9b4',1,'glm']]], + ['u8mat3x3_2142',['u8mat3x3',['../a00847.html#ga8bf749cc271c29f7042f9ea6c6907c82',1,'glm']]], + ['u8mat3x4_2143',['u8mat3x4',['../a00849.html#gaf76f5f883e1d87d56d6d3e53ec3c89b3',1,'glm']]], + ['u8mat4_2144',['u8mat4',['../a00855.html#ga5adf8e1402abec3ea43c1788832065ed',1,'glm']]], + ['u8mat4x2_2145',['u8mat4x2',['../a00851.html#gabf8d4cbe77031670484fd35eac3168b0',1,'glm']]], + ['u8mat4x3_2146',['u8mat4x3',['../a00853.html#ga43c213a100d91f4606b8008284aa4967',1,'glm']]], + ['u8mat4x4_2147',['u8mat4x4',['../a00855.html#gaa54ad379d3d259c67aa2f75f64670408',1,'glm']]], + ['u8vec1_2148',['u8vec1',['../a00892.html#ga29b349e037f0b24320b4548a143daee2',1,'glm']]], + ['u8vec2_2149',['u8vec2',['../a00893.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], + ['u8vec3_2150',['u8vec3',['../a00894.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], + ['u8vec4_2151',['u8vec4',['../a00895.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], + ['uaddcarry_2152',['uaddCarry',['../a00992.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], + ['uint16_2153',['uint16',['../a00873.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], + ['uint16_5ft_2154',['uint16_t',['../a00922.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], + ['uint32_2155',['uint32',['../a00873.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], + ['uint32_5ft_2156',['uint32_t',['../a00922.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], + ['uint64_2157',['uint64',['../a00873.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], + ['uint64_5ft_2158',['uint64_t',['../a00922.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], + ['uint8_2159',['uint8',['../a00873.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], + ['uint8_5ft_2160',['uint8_t',['../a00922.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], + ['uintbitstofloat_2161',['uintBitsToFloat',['../a00812.html#gac427a0b389f2c585269c36ccaee9c5ed',1,'glm::uintBitsToFloat(uint v)'],['../a00812.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], + ['ulp_2ehpp_2162',['ulp.hpp',['../a00581.html',1,'']]], + ['umat2_2163',['umat2',['../a00838.html#gac41defbdac8ca0edf9b21f4d4d16a508',1,'glm']]], + ['umat2x2_2164',['umat2x2',['../a00838.html#ga02daa4c5f3b185e8f99cd8a2f8bc7554',1,'glm']]], + ['umat2x3_2165',['umat2x3',['../a00840.html#ga89375c2308a3fa15f878394c7b38b224',1,'glm']]], + ['umat2x4_2166',['umat2x4',['../a00842.html#ga396cc751951467cc6ed570e158900813',1,'glm']]], + ['umat3_2167',['umat3',['../a00846.html#gaffdc395cb4be217d92a17235e8e0fc99',1,'glm']]], + ['umat3x2_2168',['umat3x2',['../a00844.html#ga9ca0dd40c861ee6307a97a242a91f119',1,'glm']]], + ['umat3x3_2169',['umat3x3',['../a00846.html#gaebb9027bcbaeb05e0678a00f03d2c312',1,'glm']]], + ['umat3x4_2170',['umat3x4',['../a00848.html#gafd52ce3ed03df04b38208e7ef7a6db28',1,'glm']]], + ['umat4_2171',['umat4',['../a00854.html#ga428a8d4d3e62d81b91c0fd4c3d5a905f',1,'glm']]], + ['umat4x2_2172',['umat4x2',['../a00850.html#ga03f2451aa64f11c36398dbc4db4b4ca5',1,'glm']]], + ['umat4x3_2173',['umat4x3',['../a00852.html#ga0aec0e4ce9f3197ec65d2d34c8fb69d2',1,'glm']]], + ['umat4x4_2174',['umat4x4',['../a00854.html#ga623eaba1dfb104d0ce01b3bb6852540a',1,'glm']]], + ['umulextended_2175',['umulExtended',['../a00992.html#gad22052a7e47d9408ad65ac675abe1663',1,'glm']]], + ['unpackdouble2x32_2176',['unpackDouble2x32',['../a00994.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], + ['unpackf2x11_5f1x10_2177',['unpackF2x11_1x10',['../a00916.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], + ['unpackf3x9_5fe1x5_2178',['unpackF3x9_E1x5',['../a00916.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], + ['unpackhalf_2179',['unpackHalf',['../a00916.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], + ['unpackhalf1x16_2180',['unpackHalf1x16',['../a00916.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], + ['unpackhalf2x16_2181',['unpackHalf2x16',['../a00994.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], + ['unpackhalf4x16_2182',['unpackHalf4x16',['../a00916.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], + ['unpacki3x10_5f1x2_2183',['unpackI3x10_1x2',['../a00916.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], + ['unpackint2x16_2184',['unpackInt2x16',['../a00916.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], + ['unpackint2x32_2185',['unpackInt2x32',['../a00916.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], + ['unpackint2x8_2186',['unpackInt2x8',['../a00916.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], + ['unpackint4x16_2187',['unpackInt4x16',['../a00916.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], + ['unpackint4x8_2188',['unpackInt4x8',['../a00916.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], + ['unpackrgbm_2189',['unpackRGBM',['../a00916.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], + ['unpacksnorm_2190',['unpackSnorm',['../a00916.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], + ['unpacksnorm1x16_2191',['unpackSnorm1x16',['../a00916.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], + ['unpacksnorm1x8_2192',['unpackSnorm1x8',['../a00916.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], + ['unpacksnorm2x16_2193',['unpackSnorm2x16',['../a00994.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], + ['unpacksnorm2x8_2194',['unpackSnorm2x8',['../a00916.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], + ['unpacksnorm3x10_5f1x2_2195',['unpackSnorm3x10_1x2',['../a00916.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], + ['unpacksnorm4x16_2196',['unpackSnorm4x16',['../a00916.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], + ['unpacksnorm4x8_2197',['unpackSnorm4x8',['../a00994.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], + ['unpacku3x10_5f1x2_2198',['unpackU3x10_1x2',['../a00916.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], + ['unpackuint2x16_2199',['unpackUint2x16',['../a00916.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], + ['unpackuint2x32_2200',['unpackUint2x32',['../a00916.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], + ['unpackuint2x8_2201',['unpackUint2x8',['../a00916.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], + ['unpackuint4x16_2202',['unpackUint4x16',['../a00916.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], + ['unpackuint4x8_2203',['unpackUint4x8',['../a00916.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], + ['unpackunorm_2204',['unpackUnorm',['../a00916.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], + ['unpackunorm1x16_2205',['unpackUnorm1x16',['../a00916.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], + ['unpackunorm1x5_5f1x6_5f1x5_2206',['unpackUnorm1x5_1x6_1x5',['../a00916.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], + ['unpackunorm1x8_2207',['unpackUnorm1x8',['../a00916.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], + ['unpackunorm2x16_2208',['unpackUnorm2x16',['../a00994.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], + ['unpackunorm2x3_5f1x2_2209',['unpackUnorm2x3_1x2',['../a00916.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], + ['unpackunorm2x4_2210',['unpackUnorm2x4',['../a00916.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], + ['unpackunorm2x8_2211',['unpackUnorm2x8',['../a00916.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], + ['unpackunorm3x10_5f1x2_2212',['unpackUnorm3x10_1x2',['../a00916.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], + ['unpackunorm3x5_5f1x1_2213',['unpackUnorm3x5_1x1',['../a00916.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], + ['unpackunorm4x16_2214',['unpackUnorm4x16',['../a00916.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], + ['unpackunorm4x4_2215',['unpackUnorm4x4',['../a00916.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], + ['unpackunorm4x8_2216',['unpackUnorm4x8',['../a00994.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], + ['unproject_2217',['unProject',['../a00835.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], + ['unprojectno_2218',['unProjectNO',['../a00835.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], + ['unprojectzo_2219',['unProjectZO',['../a00835.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], + ['uround_2220',['uround',['../a00866.html#ga9d915647ec33c4110946665f914d3abb',1,'glm::uround(genType const &x)'],['../a00877.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm::uround(vec< L, T, Q > const &x)']]], + ['usubborrow_2221',['usubBorrow',['../a00992.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]], + ['uvec1_2222',['uvec1',['../a00891.html#ga94fab575ce384c7ed3720debde574030',1,'glm']]], + ['uvec2_2223',['uvec2',['../a00899.html#gab173892ee0fd88db1e13a17b1d861326',1,'glm']]], + ['uvec3_2224',['uvec3',['../a00899.html#ga126b028d481b6dba20c90b1f87f09dbd',1,'glm']]], + ['uvec4_2225',['uvec4',['../a00899.html#ga4bb78ab04327c88f8e0eb8af30734851',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_13.html b/include/glm/doc/api/search/all_13.html new file mode 100644 index 0000000..f7d46e7 --- /dev/null +++ b/include/glm/doc/api/search/all_13.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_13.js b/include/glm/doc/api/search/all_13.js new file mode 100644 index 0000000..3336e60 --- /dev/null +++ b/include/glm/doc/api/search/all_13.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['vector_20relational_20functions_2226',['Vector Relational Functions',['../a00996.html',1,'']]], + ['vector_20types_2227',['Vector types',['../a00899.html',1,'']]], + ['vector_20types_20with_20precision_20qualifiers_2228',['Vector types with precision qualifiers',['../a00900.html',1,'']]], + ['value_5fptr_2229',['value_ptr',['../a00923.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]], + ['vec1_2230',['vec1',['../a00880.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], + ['vec1_2ehpp_2231',['vec1.hpp',['../a00584.html',1,'']]], + ['vec2_2232',['vec2',['../a00899.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], + ['vec2_2ehpp_2233',['vec2.hpp',['../a00800.html',1,'']]], + ['vec3_2234',['vec3',['../a00899.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], + ['vec3_2ehpp_2235',['vec3.hpp',['../a00803.html',1,'']]], + ['vec4_2236',['vec4',['../a00899.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]], + ['vec4_2ehpp_2237',['vec4.hpp',['../a00806.html',1,'']]], + ['vec_5fswizzle_2ehpp_2238',['vec_swizzle.hpp',['../a00755.html',1,'']]], + ['vector_5fangle_2ehpp_2239',['vector_angle.hpp',['../a00758.html',1,'']]], + ['vector_5fbool1_2ehpp_2240',['vector_bool1.hpp',['../a00383.html',1,'']]], + ['vector_5fbool1_5fprecision_2ehpp_2241',['vector_bool1_precision.hpp',['../a00386.html',1,'']]], + ['vector_5fbool2_2ehpp_2242',['vector_bool2.hpp',['../a00389.html',1,'']]], + ['vector_5fbool2_5fprecision_2ehpp_2243',['vector_bool2_precision.hpp',['../a00392.html',1,'']]], + ['vector_5fbool3_2ehpp_2244',['vector_bool3.hpp',['../a00395.html',1,'']]], + ['vector_5fbool3_5fprecision_2ehpp_2245',['vector_bool3_precision.hpp',['../a00398.html',1,'']]], + ['vector_5fbool4_2ehpp_2246',['vector_bool4.hpp',['../a00401.html',1,'']]], + ['vector_5fbool4_5fprecision_2ehpp_2247',['vector_bool4_precision.hpp',['../a00404.html',1,'']]], + ['vector_5fcommon_2ehpp_2248',['vector_common.hpp',['../a00407.html',1,'']]], + ['vector_5fdouble1_2ehpp_2249',['vector_double1.hpp',['../a00410.html',1,'']]], + ['vector_5fdouble1_5fprecision_2ehpp_2250',['vector_double1_precision.hpp',['../a00413.html',1,'']]], + ['vector_5fdouble2_2ehpp_2251',['vector_double2.hpp',['../a00416.html',1,'']]], + ['vector_5fdouble2_5fprecision_2ehpp_2252',['vector_double2_precision.hpp',['../a00419.html',1,'']]], + ['vector_5fdouble3_2ehpp_2253',['vector_double3.hpp',['../a00422.html',1,'']]], + ['vector_5fdouble3_5fprecision_2ehpp_2254',['vector_double3_precision.hpp',['../a00425.html',1,'']]], + ['vector_5fdouble4_2ehpp_2255',['vector_double4.hpp',['../a00428.html',1,'']]], + ['vector_5fdouble4_5fprecision_2ehpp_2256',['vector_double4_precision.hpp',['../a00431.html',1,'']]], + ['vector_5ffloat1_2ehpp_2257',['vector_float1.hpp',['../a00434.html',1,'']]], + ['vector_5ffloat1_5fprecision_2ehpp_2258',['vector_float1_precision.hpp',['../a00437.html',1,'']]], + ['vector_5ffloat2_2ehpp_2259',['vector_float2.hpp',['../a00440.html',1,'']]], + ['vector_5ffloat2_5fprecision_2ehpp_2260',['vector_float2_precision.hpp',['../a00443.html',1,'']]], + ['vector_5ffloat3_2ehpp_2261',['vector_float3.hpp',['../a00446.html',1,'']]], + ['vector_5ffloat3_5fprecision_2ehpp_2262',['vector_float3_precision.hpp',['../a00449.html',1,'']]], + ['vector_5ffloat4_2ehpp_2263',['vector_float4.hpp',['../a00452.html',1,'']]], + ['vector_5ffloat4_5fprecision_2ehpp_2264',['vector_float4_precision.hpp',['../a00455.html',1,'']]], + ['vector_5fint1_2ehpp_2265',['vector_int1.hpp',['../a00458.html',1,'']]], + ['vector_5fint1_5fsized_2ehpp_2266',['vector_int1_sized.hpp',['../a00461.html',1,'']]], + ['vector_5fint2_2ehpp_2267',['vector_int2.hpp',['../a00464.html',1,'']]], + ['vector_5fint2_5fsized_2ehpp_2268',['vector_int2_sized.hpp',['../a00467.html',1,'']]], + ['vector_5fint3_2ehpp_2269',['vector_int3.hpp',['../a00470.html',1,'']]], + ['vector_5fint3_5fsized_2ehpp_2270',['vector_int3_sized.hpp',['../a00473.html',1,'']]], + ['vector_5fint4_2ehpp_2271',['vector_int4.hpp',['../a00476.html',1,'']]], + ['vector_5fint4_5fsized_2ehpp_2272',['vector_int4_sized.hpp',['../a00479.html',1,'']]], + ['vector_5finteger_2ehpp_2273',['vector_integer.hpp',['../a00482.html',1,'']]], + ['vector_5fpacking_2ehpp_2274',['vector_packing.hpp',['../a00485.html',1,'']]], + ['vector_5fquery_2ehpp_2275',['vector_query.hpp',['../a00761.html',1,'']]], + ['vector_5freciprocal_2ehpp_2276',['vector_reciprocal.hpp',['../a00488.html',1,'']]], + ['vector_5frelational_2ehpp_2277',['vector_relational.hpp',['../a00491.html',1,'']]], + ['vector_5fuint1_2ehpp_2278',['vector_uint1.hpp',['../a00494.html',1,'']]], + ['vector_5fuint1_5fsized_2ehpp_2279',['vector_uint1_sized.hpp',['../a00497.html',1,'']]], + ['vector_5fuint2_2ehpp_2280',['vector_uint2.hpp',['../a00500.html',1,'']]], + ['vector_5fuint2_5fsized_2ehpp_2281',['vector_uint2_sized.hpp',['../a00503.html',1,'']]], + ['vector_5fuint3_2ehpp_2282',['vector_uint3.hpp',['../a00506.html',1,'']]], + ['vector_5fuint3_5fsized_2ehpp_2283',['vector_uint3_sized.hpp',['../a00509.html',1,'']]], + ['vector_5fuint4_2ehpp_2284',['vector_uint4.hpp',['../a00512.html',1,'']]], + ['vector_5fuint4_5fsized_2ehpp_2285',['vector_uint4_sized.hpp',['../a00515.html',1,'']]], + ['vector_5fulp_2ehpp_2286',['vector_ulp.hpp',['../a00518.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_14.html b/include/glm/doc/api/search/all_14.html new file mode 100644 index 0000000..c0e4c76 --- /dev/null +++ b/include/glm/doc/api/search/all_14.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_14.js b/include/glm/doc/api/search/all_14.js new file mode 100644 index 0000000..3ecf008 --- /dev/null +++ b/include/glm/doc/api/search/all_14.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['word_2287',['word',['../a00974.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]], + ['wrap_2ehpp_2288',['wrap.hpp',['../a00764.html',1,'']]], + ['wrapangle_2289',['wrapAngle',['../a00943.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_15.html b/include/glm/doc/api/search/all_15.html new file mode 100644 index 0000000..ff41552 --- /dev/null +++ b/include/glm/doc/api/search/all_15.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_15.js b/include/glm/doc/api/search/all_15.js new file mode 100644 index 0000000..5073695 --- /dev/null +++ b/include/glm/doc/api/search/all_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['yaw_2290',['yaw',['../a00917.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], + ['yawpitchroll_2291',['yawPitchRoll',['../a00937.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], + ['ycocg2rgb_2292',['YCoCg2rgb',['../a00931.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], + ['ycocgr2rgb_2293',['YCoCgR2rgb',['../a00931.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_16.html b/include/glm/doc/api/search/all_16.html new file mode 100644 index 0000000..936394c --- /dev/null +++ b/include/glm/doc/api/search/all_16.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_16.js b/include/glm/doc/api/search/all_16.js new file mode 100644 index 0000000..de2db9f --- /dev/null +++ b/include/glm/doc/api/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zero_2294',['zero',['../a00908.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_2.html b/include/glm/doc/api/search/all_2.html new file mode 100644 index 0000000..ffa7873 --- /dev/null +++ b/include/glm/doc/api/search/all_2.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_2.js b/include/glm/doc/api/search/all_2.js new file mode 100644 index 0000000..2ba118d --- /dev/null +++ b/include/glm/doc/api/search/all_2.js @@ -0,0 +1,53 @@ +var searchData= +[ + ['catmullrom_252',['catmullRom',['../a00979.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], + ['ceil_253',['ceil',['../a00812.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], + ['ceilmultiple_254',['ceilMultiple',['../a00920.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00920.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['ceilpoweroftwo_255',['ceilPowerOfTwo',['../a00920.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00920.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], + ['circulareasein_256',['circularEaseIn',['../a00936.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], + ['circulareaseinout_257',['circularEaseInOut',['../a00936.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], + ['circulareaseout_258',['circularEaseOut',['../a00936.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], + ['circularrand_259',['circularRand',['../a00918.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], + ['clamp_260',['clamp',['../a00812.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00812.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00812.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00866.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)'],['../a00877.html#gab43dbf24b7d827e293106d3e8096e065',1,'glm::clamp(vec< L, T, Q > const &Texcoord)']]], + ['closebounded_261',['closeBounded',['../a00932.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], + ['closest_5fpoint_2ehpp_262',['closest_point.hpp',['../a00593.html',1,'']]], + ['closestpointonline_263',['closestPointOnLine',['../a00928.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00928.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], + ['colmajor2_264',['colMajor2',['../a00957.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00957.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], + ['colmajor3_265',['colMajor3',['../a00957.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00957.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], + ['colmajor4_266',['colMajor4',['../a00957.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00957.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], + ['color_5fencoding_2ehpp_267',['color_encoding.hpp',['../a00596.html',1,'']]], + ['color_5fspace_5fycocg_2ehpp_268',['color_space_YCoCg.hpp',['../a00599.html',1,'']]], + ['column_269',['column',['../a00911.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00911.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], + ['common_2ehpp_270',['common.hpp',['../a00002.html',1,'']]], + ['compadd_271',['compAdd',['../a00934.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], + ['compatibility_2ehpp_272',['compatibility.hpp',['../a00602.html',1,'']]], + ['compmax_273',['compMax',['../a00934.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], + ['compmin_274',['compMin',['../a00934.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], + ['compmul_275',['compMul',['../a00934.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], + ['compnormalize_276',['compNormalize',['../a00934.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], + ['component_5fwise_2ehpp_277',['component_wise.hpp',['../a00605.html',1,'']]], + ['compscale_278',['compScale',['../a00934.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], + ['computecovariancematrix_279',['computeCovarianceMatrix',['../a00968.html#ga2d6dc3e25182cae243cdf55310059af0',1,'glm::computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n)'],['../a00968.html#gabfc7aba26da1eed6726f2484584f4077',1,'glm::computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c)'],['../a00968.html#ga2c7b5ff4e0f4132a23e58eeb0803b53a',1,'glm::computeCovarianceMatrix(I const &b, I const &e)'],['../a00968.html#ga666383aa52036f00f3b66e4e7e56da3a',1,'glm::computeCovarianceMatrix(I const &b, I const &e, vec< D, T, Q > const &c)']]], + ['conjugate_280',['conjugate',['../a00856.html#ga5b646f1cd4422eb76ab90496bcd0b60a',1,'glm']]], + ['constants_2ehpp_281',['constants.hpp',['../a00539.html',1,'']]], + ['convertd65xyztod50xyz_282',['convertD65XYZToD50XYZ',['../a00929.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], + ['convertd65xyztolinearsrgb_283',['convertD65XYZToLinearSRGB',['../a00929.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], + ['convertlinearsrgbtod50xyz_284',['convertLinearSRGBToD50XYZ',['../a00929.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], + ['convertlinearsrgbtod65xyz_285',['convertLinearSRGBToD65XYZ',['../a00929.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], + ['convertlineartosrgb_286',['convertLinearToSRGB',['../a00907.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00907.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], + ['convertsrgbtolinear_287',['convertSRGBToLinear',['../a00907.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00907.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], + ['core_20features_288',['Core features',['../a00898.html',1,'']]], + ['common_20functions_289',['Common functions',['../a00812.html',1,'']]], + ['cos_290',['cos',['../a00995.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], + ['cos_5fone_5fover_5ftwo_291',['cos_one_over_two',['../a00867.html#gae8d1938913da2e5b2e102b9076cd0389',1,'glm']]], + ['cosh_292',['cosh',['../a00995.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], + ['cot_293',['cot',['../a00871.html#ga1f347629f919b562d9d10951e3b80968',1,'glm']]], + ['coth_294',['coth',['../a00871.html#ga35710c9529d973ad01af024f9879fdf7',1,'glm']]], + ['cross_295',['cross',['../a00862.html#ga9a47ad9ca44bc04eeaac260d42105134',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00897.html#gaefe60743d7f415a33cbdddbe3bcf0258',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00940.html#gac5814d419dbc957de01dc9a3f3196be5',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00972.html#gacbbbf93d24828d6bd9ba48d43abc985e',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00972.html#ga7877a1ec00e43bbfccf6dd11894c0536',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], + ['csc_296',['csc',['../a00871.html#gaa6bf27b118f660387753bfa75af13b6d',1,'glm']]], + ['csch_297',['csch',['../a00871.html#ga0247051ce3b0bac747136e69b51ab853',1,'glm']]], + ['cubic_298',['cubic',['../a00979.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], + ['cubiceasein_299',['cubicEaseIn',['../a00936.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], + ['cubiceaseinout_300',['cubicEaseInOut',['../a00936.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], + ['cubiceaseout_301',['cubicEaseOut',['../a00936.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_3.html b/include/glm/doc/api/search/all_3.html new file mode 100644 index 0000000..f9df19b --- /dev/null +++ b/include/glm/doc/api/search/all_3.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_3.js b/include/glm/doc/api/search/all_3.js new file mode 100644 index 0000000..9039028 --- /dev/null +++ b/include/glm/doc/api/search/all_3.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['ddualquat_302',['ddualquat',['../a00935.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], + ['decompose_303',['decompose',['../a00954.html#gabd7878e1b23aab583bc01040c5ed2b71',1,'glm']]], + ['degrees_304',['degrees',['../a00995.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], + ['derivedeuleranglex_305',['derivedEulerAngleX',['../a00937.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], + ['derivedeulerangley_306',['derivedEulerAngleY',['../a00937.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], + ['derivedeuleranglez_307',['derivedEulerAngleZ',['../a00937.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], + ['determinant_308',['determinant',['../a00834.html#ga07f545826ec7726ca072e587246afdde',1,'glm']]], + ['diagonal2x2_309',['diagonal2x2',['../a00958.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], + ['diagonal2x3_310',['diagonal2x3',['../a00958.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], + ['diagonal2x4_311',['diagonal2x4',['../a00958.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], + ['diagonal3x2_312',['diagonal3x2',['../a00958.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], + ['diagonal3x3_313',['diagonal3x3',['../a00958.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], + ['diagonal3x4_314',['diagonal3x4',['../a00958.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], + ['diagonal4x2_315',['diagonal4x2',['../a00958.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], + ['diagonal4x3_316',['diagonal4x3',['../a00958.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], + ['diagonal4x4_317',['diagonal4x4',['../a00958.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], + ['diskrand_318',['diskRand',['../a00918.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], + ['distance_319',['distance',['../a00897.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], + ['distance2_320',['distance2',['../a00962.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], + ['dmat2_321',['dmat2',['../a00901.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], + ['dmat2x2_322',['dmat2x2',['../a00901.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], + ['dmat2x3_323',['dmat2x3',['../a00901.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], + ['dmat2x4_324',['dmat2x4',['../a00901.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], + ['dmat3_325',['dmat3',['../a00901.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], + ['dmat3x2_326',['dmat3x2',['../a00901.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], + ['dmat3x3_327',['dmat3x3',['../a00901.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], + ['dmat3x4_328',['dmat3x4',['../a00901.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], + ['dmat4_329',['dmat4',['../a00901.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], + ['dmat4x2_330',['dmat4x2',['../a00901.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], + ['dmat4x3_331',['dmat4x3',['../a00901.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], + ['dmat4x4_332',['dmat4x4',['../a00901.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], + ['dot_333',['dot',['../a00862.html#gadaab7b4495755b4102838d7834cd9544',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00897.html#gaec50c25dd3b13834af0bf6fd2ce3931c',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['double1_334',['double1',['../a00933.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], + ['double1x1_335',['double1x1',['../a00933.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], + ['double2_336',['double2',['../a00933.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], + ['double2x2_337',['double2x2',['../a00933.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], + ['double2x3_338',['double2x3',['../a00933.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], + ['double2x4_339',['double2x4',['../a00933.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], + ['double3_340',['double3',['../a00933.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], + ['double3x2_341',['double3x2',['../a00933.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], + ['double3x3_342',['double3x3',['../a00933.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], + ['double3x4_343',['double3x4',['../a00933.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], + ['double4_344',['double4',['../a00933.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], + ['double4x2_345',['double4x2',['../a00933.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], + ['double4x3_346',['double4x3',['../a00933.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], + ['double4x4_347',['double4x4',['../a00933.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], + ['dquat_348',['dquat',['../a00857.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], + ['dual_5fquat_5fidentity_349',['dual_quat_identity',['../a00935.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], + ['dual_5fquaternion_2ehpp_350',['dual_quaternion.hpp',['../a00608.html',1,'']]], + ['dualquat_351',['dualquat',['../a00935.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], + ['dualquat_5fcast_352',['dualquat_cast',['../a00935.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00935.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]], + ['dvec1_353',['dvec1',['../a00878.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], + ['dvec2_354',['dvec2',['../a00899.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], + ['dvec3_355',['dvec3',['../a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], + ['dvec4_356',['dvec4',['../a00899.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], + ['dword_357',['dword',['../a00974.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_4.html b/include/glm/doc/api/search/all_4.html new file mode 100644 index 0000000..aa2c933 --- /dev/null +++ b/include/glm/doc/api/search/all_4.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_4.js b/include/glm/doc/api/search/all_4.js new file mode 100644 index 0000000..42f4317 --- /dev/null +++ b/include/glm/doc/api/search/all_4.js @@ -0,0 +1,69 @@ +var searchData= +[ + ['exponential_20functions_358',['Exponential functions',['../a00813.html',1,'']]], + ['e_359',['e',['../a00908.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], + ['easing_2ehpp_360',['easing.hpp',['../a00611.html',1,'']]], + ['elasticeasein_361',['elasticEaseIn',['../a00936.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], + ['elasticeaseinout_362',['elasticEaseInOut',['../a00936.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], + ['elasticeaseout_363',['elasticEaseOut',['../a00936.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], + ['epsilon_364',['epsilon',['../a00867.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], + ['epsilon_2ehpp_365',['epsilon.hpp',['../a00542.html',1,'']]], + ['epsilonequal_366',['epsilonEqual',['../a00909.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00909.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], + ['epsilonnotequal_367',['epsilonNotEqual',['../a00909.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00909.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], + ['equal_368',['equal',['../a00836.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00836.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00836.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00836.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00836.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00863.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00863.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00872.html#ga90ebafeace352ccc14055418ebd220be',1,'glm::equal(genType const &x, genType const &y, genType const &epsilon)'],['../a00872.html#ga865b9a427c42df73b8af9cd3f7f25394',1,'glm::equal(genType const &x, genType const &y, int ULPs)'],['../a00890.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00890.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00890.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00890.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00996.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['euclidean_369',['euclidean',['../a00970.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], + ['euler_370',['euler',['../a00908.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], + ['euler_5fangles_2ehpp_371',['euler_angles.hpp',['../a00614.html',1,'']]], + ['eulerangles_372',['eulerAngles',['../a00917.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], + ['euleranglex_373',['eulerAngleX',['../a00937.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], + ['euleranglexy_374',['eulerAngleXY',['../a00937.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], + ['euleranglexyx_375',['eulerAngleXYX',['../a00937.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], + ['euleranglexyz_376',['eulerAngleXYZ',['../a00937.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], + ['euleranglexz_377',['eulerAngleXZ',['../a00937.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], + ['euleranglexzx_378',['eulerAngleXZX',['../a00937.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], + ['euleranglexzy_379',['eulerAngleXZY',['../a00937.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], + ['eulerangley_380',['eulerAngleY',['../a00937.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], + ['eulerangleyx_381',['eulerAngleYX',['../a00937.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], + ['eulerangleyxy_382',['eulerAngleYXY',['../a00937.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], + ['eulerangleyxz_383',['eulerAngleYXZ',['../a00937.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], + ['eulerangleyz_384',['eulerAngleYZ',['../a00937.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], + ['eulerangleyzx_385',['eulerAngleYZX',['../a00937.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], + ['eulerangleyzy_386',['eulerAngleYZY',['../a00937.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], + ['euleranglez_387',['eulerAngleZ',['../a00937.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], + ['euleranglezx_388',['eulerAngleZX',['../a00937.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], + ['euleranglezxy_389',['eulerAngleZXY',['../a00937.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], + ['euleranglezxz_390',['eulerAngleZXZ',['../a00937.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], + ['euleranglezy_391',['eulerAngleZY',['../a00937.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], + ['euleranglezyx_392',['eulerAngleZYX',['../a00937.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], + ['euleranglezyz_393',['eulerAngleZYZ',['../a00937.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], + ['exp_394',['exp',['../a00813.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00864.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], + ['exp2_395',['exp2',['../a00813.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], + ['exponential_2ehpp_396',['exponential.hpp',['../a00086.html',1,'']]], + ['exponentialeasein_397',['exponentialEaseIn',['../a00936.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], + ['exponentialeaseinout_398',['exponentialEaseInOut',['../a00936.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], + ['exponentialeaseout_399',['exponentialEaseOut',['../a00936.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], + ['ext_2ehpp_400',['ext.hpp',['../a00521.html',1,'']]], + ['extend_401',['extend',['../a00938.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], + ['extend_2ehpp_402',['extend.hpp',['../a00617.html',1,'']]], + ['extended_5fmin_5fmax_2ehpp_403',['extended_min_max.hpp',['../a00620.html',1,'']]], + ['exterior_5fproduct_2ehpp_404',['exterior_product.hpp',['../a00623.html',1,'']]], + ['extracteuleranglexyx_405',['extractEulerAngleXYX',['../a00937.html#gadec3152f46d46dcd32974f0a2c0a7735',1,'glm']]], + ['extracteuleranglexyz_406',['extractEulerAngleXYZ',['../a00937.html#ga866e1524edc5daaeee54cc9e11ec892e',1,'glm']]], + ['extracteuleranglexzx_407',['extractEulerAngleXZX',['../a00937.html#gaf58030785bc2cde1dcd95a04d50d64ff',1,'glm']]], + ['extracteuleranglexzy_408',['extractEulerAngleXZY',['../a00937.html#gaffe92a3c19724f523678cb67144fd569',1,'glm']]], + ['extracteulerangleyxy_409',['extractEulerAngleYXY',['../a00937.html#gae14dd2c752ed179325171f45f464c6d7',1,'glm']]], + ['extracteulerangleyxz_410',['extractEulerAngleYXZ',['../a00937.html#ga8dd77fb7274dd8916a98749b8ccb033a',1,'glm']]], + ['extracteulerangleyzx_411',['extractEulerAngleYZX',['../a00937.html#gadb39c3a164364100eff69e7db2a3269d',1,'glm']]], + ['extracteulerangleyzy_412',['extractEulerAngleYZY',['../a00937.html#gabe88a80471a85be2561430194009393a',1,'glm']]], + ['extracteuleranglezxy_413',['extractEulerAngleZXY',['../a00937.html#ga5ed7760c1140ff8ff8f8c444b8bb0612',1,'glm']]], + ['extracteuleranglezxz_414',['extractEulerAngleZXZ',['../a00937.html#ga698604d09198fa41207abc7f1a6ae6c1',1,'glm']]], + ['extracteuleranglezyx_415',['extractEulerAngleZYX',['../a00937.html#ga25c33ad5744c43d9601dc1c44a4b2696',1,'glm']]], + ['extracteuleranglezyz_416',['extractEulerAngleZYZ',['../a00937.html#ga6009526e30e85db3a40a2bb63b6c9442',1,'glm']]], + ['extractmatrixrotation_417',['extractMatrixRotation',['../a00956.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], + ['extractrealcomponent_418',['extractRealComponent',['../a00972.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]], + ['experimental_20extensions_419',['Experimental extensions',['../a00905.html',1,'']]], + ['matrix_5finteger_2ehpp_420',['matrix_integer.hpp',['../a01696.html',1,'']]], + ['matrix_5ftransform_2ehpp_421',['matrix_transform.hpp',['../a01702.html',1,'']]], + ['scalar_5frelational_2ehpp_422',['scalar_relational.hpp',['../a01717.html',1,'']]], + ['vector_5frelational_2ehpp_423',['vector_relational.hpp',['../a01729.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_5.html b/include/glm/doc/api/search/all_5.html new file mode 100644 index 0000000..71848af --- /dev/null +++ b/include/glm/doc/api/search/all_5.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_5.js b/include/glm/doc/api/search/all_5.js new file mode 100644 index 0000000..be1859c --- /dev/null +++ b/include/glm/doc/api/search/all_5.js @@ -0,0 +1,136 @@ +var searchData= +[ + ['floating_2dpoint_20pack_20and_20unpack_20functions_424',['Floating-Point Pack and Unpack Functions',['../a00994.html',1,'']]], + ['f32_425',['f32',['../a00922.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], + ['f32mat1_426',['f32mat1',['../a00965.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm']]], + ['f32mat1x1_427',['f32mat1x1',['../a00965.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm']]], + ['f32mat2_428',['f32mat2',['../a00922.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], + ['f32mat2x2_429',['f32mat2x2',['../a00922.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], + ['f32mat2x3_430',['f32mat2x3',['../a00922.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], + ['f32mat2x4_431',['f32mat2x4',['../a00922.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], + ['f32mat3_432',['f32mat3',['../a00922.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], + ['f32mat3x2_433',['f32mat3x2',['../a00922.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], + ['f32mat3x3_434',['f32mat3x3',['../a00922.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], + ['f32mat3x4_435',['f32mat3x4',['../a00922.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], + ['f32mat4_436',['f32mat4',['../a00922.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], + ['f32mat4x2_437',['f32mat4x2',['../a00922.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], + ['f32mat4x3_438',['f32mat4x3',['../a00922.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], + ['f32mat4x4_439',['f32mat4x4',['../a00922.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], + ['f32quat_440',['f32quat',['../a00922.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], + ['f32vec1_441',['f32vec1',['../a00922.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm']]], + ['f32vec2_442',['f32vec2',['../a00922.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], + ['f32vec3_443',['f32vec3',['../a00922.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], + ['f32vec4_444',['f32vec4',['../a00922.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], + ['f64_445',['f64',['../a00922.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], + ['f64mat1_446',['f64mat1',['../a00965.html#ga59bfa589419b5265d01314fcecd33435',1,'glm']]], + ['f64mat1x1_447',['f64mat1x1',['../a00965.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm']]], + ['f64mat2_448',['f64mat2',['../a00922.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], + ['f64mat2x2_449',['f64mat2x2',['../a00922.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], + ['f64mat2x3_450',['f64mat2x3',['../a00922.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], + ['f64mat2x4_451',['f64mat2x4',['../a00922.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], + ['f64mat3_452',['f64mat3',['../a00922.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], + ['f64mat3x2_453',['f64mat3x2',['../a00922.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], + ['f64mat3x3_454',['f64mat3x3',['../a00922.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], + ['f64mat3x4_455',['f64mat3x4',['../a00922.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], + ['f64mat4_456',['f64mat4',['../a00922.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], + ['f64mat4x2_457',['f64mat4x2',['../a00922.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], + ['f64mat4x3_458',['f64mat4x3',['../a00922.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], + ['f64mat4x4_459',['f64mat4x4',['../a00922.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], + ['f64quat_460',['f64quat',['../a00922.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], + ['f64vec1_461',['f64vec1',['../a00922.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm']]], + ['f64vec2_462',['f64vec2',['../a00922.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], + ['f64vec3_463',['f64vec3',['../a00922.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], + ['f64vec4_464',['f64vec4',['../a00922.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], + ['faceforward_465',['faceforward',['../a00897.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], + ['factorial_466',['factorial',['../a00948.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], + ['fast_5fexponential_2ehpp_467',['fast_exponential.hpp',['../a00626.html',1,'']]], + ['fast_5fsquare_5froot_2ehpp_468',['fast_square_root.hpp',['../a00629.html',1,'']]], + ['fast_5ftrigonometry_2ehpp_469',['fast_trigonometry.hpp',['../a00632.html',1,'']]], + ['fastacos_470',['fastAcos',['../a00943.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], + ['fastasin_471',['fastAsin',['../a00943.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], + ['fastatan_472',['fastAtan',['../a00943.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00943.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], + ['fastcos_473',['fastCos',['../a00943.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], + ['fastdistance_474',['fastDistance',['../a00942.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00942.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['fastexp_475',['fastExp',['../a00941.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00941.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], + ['fastexp2_476',['fastExp2',['../a00941.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00941.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], + ['fastinversesqrt_477',['fastInverseSqrt',['../a00942.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00942.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], + ['fastlength_478',['fastLength',['../a00942.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00942.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], + ['fastlog_479',['fastLog',['../a00941.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00941.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], + ['fastlog2_480',['fastLog2',['../a00941.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00941.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], + ['fastmix_481',['fastMix',['../a00972.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], + ['fastnormalize_482',['fastNormalize',['../a00942.html#gac0991240651a3f75792ff5de2e526b8c',1,'glm::fastNormalize(genType x)'],['../a00942.html#gaab477221230a6e12a3b9e22e750c8928',1,'glm::fastNormalize(vec< L, T, Q > const &x)']]], + ['fastnormalizedot_483',['fastNormalizeDot',['../a00964.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], + ['fastpow_484',['fastPow',['../a00941.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00941.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00941.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00941.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], + ['fastsin_485',['fastSin',['../a00943.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], + ['fastsqrt_486',['fastSqrt',['../a00942.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00942.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], + ['fasttan_487',['fastTan',['../a00943.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], + ['fclamp_488',['fclamp',['../a00866.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00877.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00877.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], + ['fcompmax_489',['fcompMax',['../a00934.html#gade3e58b5fb9ef711494b73bb9e77d263',1,'glm']]], + ['fcompmin_490',['fcompMin',['../a00934.html#gafb56d801a323e921076727df524de330',1,'glm']]], + ['fdualquat_491',['fdualquat',['../a00935.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], + ['findeigenvaluessymreal_492',['findEigenvaluesSymReal',['../a00968.html#ga0586007af1073c8b0f629bca0ee7c46c',1,'glm']]], + ['findlsb_493',['findLSB',['../a00992.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00992.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], + ['findmsb_494',['findMSB',['../a00992.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00992.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], + ['findnsb_495',['findNSB',['../a00869.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00887.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], + ['fliplr_496',['fliplr',['../a00955.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], + ['flipud_497',['flipud',['../a00955.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], + ['float1_498',['float1',['../a00933.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], + ['float1x1_499',['float1x1',['../a00933.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], + ['float2_500',['float2',['../a00933.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], + ['float2x2_501',['float2x2',['../a00933.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], + ['float2x3_502',['float2x3',['../a00933.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], + ['float2x4_503',['float2x4',['../a00933.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], + ['float3_504',['float3',['../a00933.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], + ['float32_505',['float32',['../a00922.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], + ['float32_5ft_506',['float32_t',['../a00922.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], + ['float3x2_507',['float3x2',['../a00933.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], + ['float3x3_508',['float3x3',['../a00933.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], + ['float3x4_509',['float3x4',['../a00933.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], + ['float4_510',['float4',['../a00933.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], + ['float4x2_511',['float4x2',['../a00933.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], + ['float4x3_512',['float4x3',['../a00933.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], + ['float4x4_513',['float4x4',['../a00933.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], + ['float64_514',['float64',['../a00922.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], + ['float64_5ft_515',['float64_t',['../a00922.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], + ['float_5fdistance_516',['float_distance',['../a00924.html#ga2358fa840554fa36531aee28f3e14d6b',1,'glm::float_distance(float x, float y)'],['../a00924.html#ga464d5c96158df04d96a11d97b00c51a7',1,'glm::float_distance(double x, double y)'],['../a00924.html#ga15349749edb8373079f4dcd518cc3d02',1,'glm::float_distance(vec< L, float, Q > const &x, vec< L, float, Q > const &y)'],['../a00924.html#gac0726cf2e5ce7d03b0ac4c81438c07fb',1,'glm::float_distance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)']]], + ['floatbitstoint_517',['floatBitsToInt',['../a00812.html#ga8a23e454d8ae48b8f6dfdaea4b756072',1,'glm::floatBitsToInt(float v)'],['../a00812.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], + ['floatbitstouint_518',['floatBitsToUint',['../a00812.html#ga1bbdafd513ece71856e66a8ab0ea10d1',1,'glm::floatBitsToUint(float v)'],['../a00812.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], + ['floatdistance_519',['floatDistance',['../a00874.html#gae609a2729cacccbabe966221d61e0dc4',1,'glm::floatDistance(float x, float y)'],['../a00874.html#ga4b76118ff56adfbc41a5925908b48606',1,'glm::floatDistance(double x, double y)'],['../a00896.html#ga03f464c6a03a725ea18e72cf1ed31417',1,'glm::floatDistance(vec< L, float, Q > const &x, vec< L, float, Q > const &y)'],['../a00896.html#gabe2040cbbe66a60cafb37f6155f78e4c',1,'glm::floatDistance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)']]], + ['floor_520',['floor',['../a00812.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], + ['floor_5flog2_521',['floor_log2',['../a00948.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], + ['floormultiple_522',['floorMultiple',['../a00920.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00920.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['floorpoweroftwo_523',['floorPowerOfTwo',['../a00920.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00920.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], + ['fma_524',['fma',['../a00812.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], + ['fmat2_525',['fmat2',['../a00922.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], + ['fmat2x2_526',['fmat2x2',['../a00922.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], + ['fmat2x3_527',['fmat2x3',['../a00922.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], + ['fmat2x4_528',['fmat2x4',['../a00922.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], + ['fmat3_529',['fmat3',['../a00922.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], + ['fmat3x2_530',['fmat3x2',['../a00922.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], + ['fmat3x3_531',['fmat3x3',['../a00922.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], + ['fmat3x4_532',['fmat3x4',['../a00922.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], + ['fmat4_533',['fmat4',['../a00922.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], + ['fmat4x2_534',['fmat4x2',['../a00922.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], + ['fmat4x3_535',['fmat4x3',['../a00922.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], + ['fmat4x4_536',['fmat4x4',['../a00922.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], + ['fmax_537',['fmax',['../a00866.html#ga9181453c527b05bddd32b1b09b8c80e6',1,'glm::fmax(T a, T b)'],['../a00866.html#ga65c5b6a8d1f1607fbcbf3a8ef2f93e3c',1,'glm::fmax(T a, T b, T C)'],['../a00866.html#gaed34015c7033417014cc9198a763c3e7',1,'glm::fmax(T a, T b, T C, T D)'],['../a00877.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00877.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00877.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)']]], + ['fmin_538',['fmin',['../a00866.html#ga2ca01149554244bc668afb3f2f95a1a1',1,'glm::fmin(T a, T b)'],['../a00866.html#ga2caf4c39dd5ebc2bbc577b03bebe4aa0',1,'glm::fmin(T a, T b, T c)'],['../a00866.html#ga2bbac70c680668b0b1019dcf8e6c03b6',1,'glm::fmin(T a, T b, T c, T d)'],['../a00877.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00877.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00877.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)']]], + ['fmod_539',['fmod',['../a00932.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], + ['four_5fover_5fpi_540',['four_over_pi',['../a00908.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], + ['fract_541',['fract',['../a00812.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00812.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], + ['frexp_542',['frexp',['../a00812.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], + ['frustum_543',['frustum',['../a00814.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], + ['frustumlh_544',['frustumLH',['../a00814.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], + ['frustumlh_5fno_545',['frustumLH_NO',['../a00814.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], + ['frustumlh_5fzo_546',['frustumLH_ZO',['../a00814.html#ga94218b094862d17798370242680b9030',1,'glm']]], + ['frustumno_547',['frustumNO',['../a00814.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], + ['frustumrh_548',['frustumRH',['../a00814.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], + ['frustumrh_5fno_549',['frustumRH_NO',['../a00814.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], + ['frustumrh_5fzo_550',['frustumRH_ZO',['../a00814.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], + ['frustumzo_551',['frustumZO',['../a00814.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]], + ['functions_2ehpp_552',['functions.hpp',['../a00635.html',1,'']]], + ['fvec1_553',['fvec1',['../a00922.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], + ['fvec2_554',['fvec2',['../a00922.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], + ['fvec3_555',['fvec3',['../a00922.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], + ['fvec4_556',['fvec4',['../a00922.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_6.html b/include/glm/doc/api/search/all_6.html new file mode 100644 index 0000000..a24601b --- /dev/null +++ b/include/glm/doc/api/search/all_6.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_6.js b/include/glm/doc/api/search/all_6.js new file mode 100644 index 0000000..35a1433 --- /dev/null +++ b/include/glm/doc/api/search/all_6.js @@ -0,0 +1,190 @@ +var searchData= +[ + ['color_5fspace_2ehpp_557',['color_space.hpp',['../a01681.html',1,'(Global Namespace)'],['../a01684.html',1,'(Global Namespace)']]], + ['common_2ehpp_558',['common.hpp',['../a01687.html',1,'']]], + ['geometric_20functions_559',['Geometric functions',['../a00897.html',1,'']]], + ['glm_5fext_5fmatrix_5fclip_5fspace_560',['GLM_EXT_matrix_clip_space',['../a00814.html',1,'']]], + ['glm_5fext_5fmatrix_5fcommon_561',['GLM_EXT_matrix_common',['../a00815.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x2_562',['GLM_EXT_matrix_int2x2',['../a00816.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x2_5fsized_563',['GLM_EXT_matrix_int2x2_sized',['../a00817.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x3_564',['GLM_EXT_matrix_int2x3',['../a00818.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x3_5fsized_565',['GLM_EXT_matrix_int2x3_sized',['../a00819.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_566',['GLM_EXT_matrix_int2x4',['../a00820.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_5fsized_567',['GLM_EXT_matrix_int2x4_sized',['../a00821.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x2_568',['GLM_EXT_matrix_int3x2',['../a00822.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x2_5fsized_569',['GLM_EXT_matrix_int3x2_sized',['../a00823.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x3_570',['GLM_EXT_matrix_int3x3',['../a00824.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x3_5fsized_571',['GLM_EXT_matrix_int3x3_sized',['../a00825.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x4_572',['GLM_EXT_matrix_int3x4',['../a00826.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x4_5fsized_573',['GLM_EXT_matrix_int3x4_sized',['../a00827.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x2_574',['GLM_EXT_matrix_int4x2',['../a00828.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x2_5fsized_575',['GLM_EXT_matrix_int4x2_sized',['../a00829.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x3_576',['GLM_EXT_matrix_int4x3',['../a00830.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x3_5fsized_577',['GLM_EXT_matrix_int4x3_sized',['../a00831.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x4_578',['GLM_EXT_matrix_int4x4',['../a00832.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x4_5fsized_579',['GLM_EXT_matrix_int4x4_sized',['../a00833.html',1,'']]], + ['glm_5fext_5fmatrix_5finteger_580',['GLM_EXT_matrix_integer',['../a00834.html',1,'']]], + ['glm_5fext_5fmatrix_5fprojection_581',['GLM_EXT_matrix_projection',['../a00835.html',1,'']]], + ['glm_5fext_5fmatrix_5frelational_582',['GLM_EXT_matrix_relational',['../a00836.html',1,'']]], + ['glm_5fext_5fmatrix_5ftransform_583',['GLM_EXT_matrix_transform',['../a00837.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x2_584',['GLM_EXT_matrix_uint2x2',['../a00838.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x2_5fsized_585',['GLM_EXT_matrix_uint2x2_sized',['../a00839.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x3_586',['GLM_EXT_matrix_uint2x3',['../a00840.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x3_5fsized_587',['GLM_EXT_matrix_uint2x3_sized',['../a00841.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_588',['GLM_EXT_matrix_int2x4',['../a00842.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x4_5fsized_589',['GLM_EXT_matrix_uint2x4_sized',['../a00843.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x2_590',['GLM_EXT_matrix_uint3x2',['../a00844.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x2_5fsized_591',['GLM_EXT_matrix_uint3x2_sized',['../a00845.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x3_592',['GLM_EXT_matrix_uint3x3',['../a00846.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x3_5fsized_593',['GLM_EXT_matrix_uint3x3_sized',['../a00847.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x4_594',['GLM_EXT_matrix_uint3x4',['../a00848.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x4_5fsized_595',['GLM_EXT_matrix_uint3x4_sized',['../a00849.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x2_596',['GLM_EXT_matrix_uint4x2',['../a00850.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x2_5fsized_597',['GLM_EXT_matrix_uint4x2_sized',['../a00851.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x3_598',['GLM_EXT_matrix_uint4x3',['../a00852.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x3_5fsized_599',['GLM_EXT_matrix_uint4x3_sized',['../a00853.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x4_600',['GLM_EXT_matrix_uint4x4',['../a00854.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x4_5fsized_601',['GLM_EXT_matrix_uint4x4_sized',['../a00855.html',1,'']]], + ['glm_5fext_5fquaternion_5fcommon_602',['GLM_EXT_quaternion_common',['../a00856.html',1,'']]], + ['glm_5fext_5fquaternion_5fdouble_603',['GLM_EXT_quaternion_double',['../a00857.html',1,'']]], + ['glm_5fext_5fquaternion_5fdouble_5fprecision_604',['GLM_EXT_quaternion_double_precision',['../a00858.html',1,'']]], + ['glm_5fext_5fquaternion_5fexponential_605',['GLM_EXT_quaternion_exponential',['../a00859.html',1,'']]], + ['glm_5fext_5fquaternion_5ffloat_606',['GLM_EXT_quaternion_float',['../a00860.html',1,'']]], + ['glm_5fext_5fquaternion_5ffloat_5fprecision_607',['GLM_EXT_quaternion_float_precision',['../a00861.html',1,'']]], + ['glm_5fext_5fquaternion_5fgeometric_608',['GLM_EXT_quaternion_geometric',['../a00862.html',1,'']]], + ['glm_5fext_5fquaternion_5frelational_609',['GLM_EXT_quaternion_relational',['../a00863.html',1,'']]], + ['glm_5fext_5fquaternion_5ftransform_610',['GLM_EXT_quaternion_transform',['../a00864.html',1,'']]], + ['glm_5fext_5fquaternion_5ftrigonometric_611',['GLM_EXT_quaternion_trigonometric',['../a00865.html',1,'']]], + ['glm_5fext_5fscalar_5fcommon_612',['GLM_EXT_scalar_common',['../a00866.html',1,'']]], + ['glm_5fext_5fscalar_5fconstants_613',['GLM_EXT_scalar_constants',['../a00867.html',1,'']]], + ['glm_5fext_5fscalar_5fint_5fsized_614',['GLM_EXT_scalar_int_sized',['../a00868.html',1,'']]], + ['glm_5fext_5fscalar_5finteger_615',['GLM_EXT_scalar_integer',['../a00869.html',1,'']]], + ['glm_5fext_5fscalar_5fpacking_616',['GLM_EXT_scalar_packing',['../a00870.html',1,'']]], + ['glm_5fext_5fscalar_5freciprocal_617',['GLM_EXT_scalar_reciprocal',['../a00871.html',1,'']]], + ['glm_5fext_5fscalar_5frelational_618',['GLM_EXT_scalar_relational',['../a00872.html',1,'']]], + ['glm_5fext_5fscalar_5fuint_5fsized_619',['GLM_EXT_scalar_uint_sized',['../a00873.html',1,'']]], + ['glm_5fext_5fscalar_5fulp_620',['GLM_EXT_scalar_ulp',['../a00874.html',1,'']]], + ['glm_5fext_5fvector_5fbool1_621',['GLM_EXT_vector_bool1',['../a00875.html',1,'']]], + ['glm_5fext_5fvector_5fbool1_5fprecision_622',['GLM_EXT_vector_bool1_precision',['../a00876.html',1,'']]], + ['glm_5fext_5fvector_5fcommon_623',['GLM_EXT_vector_common',['../a00877.html',1,'']]], + ['glm_5fext_5fvector_5fdouble1_624',['GLM_EXT_vector_double1',['../a00878.html',1,'']]], + ['glm_5fext_5fvector_5fdouble1_5fprecision_625',['GLM_EXT_vector_double1_precision',['../a00879.html',1,'']]], + ['glm_5fext_5fvector_5ffloat1_626',['GLM_EXT_vector_float1',['../a00880.html',1,'']]], + ['glm_5fext_5fvector_5ffloat1_5fprecision_627',['GLM_EXT_vector_float1_precision',['../a00881.html',1,'']]], + ['glm_5fext_5fvector_5fint1_628',['GLM_EXT_vector_int1',['../a00882.html',1,'']]], + ['glm_5fext_5fvector_5fint1_5fsized_629',['GLM_EXT_vector_int1_sized',['../a00883.html',1,'']]], + ['glm_5fext_5fvector_5fint2_5fsized_630',['GLM_EXT_vector_int2_sized',['../a00884.html',1,'']]], + ['glm_5fext_5fvector_5fint3_5fsized_631',['GLM_EXT_vector_int3_sized',['../a00885.html',1,'']]], + ['glm_5fext_5fvector_5fint4_5fsized_632',['GLM_EXT_vector_int4_sized',['../a00886.html',1,'']]], + ['glm_5fext_5fvector_5finteger_633',['GLM_EXT_vector_integer',['../a00887.html',1,'']]], + ['glm_5fext_5fvector_5fpacking_634',['GLM_EXT_vector_packing',['../a00888.html',1,'']]], + ['glm_5fext_5fvector_5freciprocal_635',['GLM_EXT_vector_reciprocal',['../a00889.html',1,'']]], + ['glm_5fext_5fvector_5frelational_636',['GLM_EXT_vector_relational',['../a00890.html',1,'']]], + ['glm_5fext_5fvector_5fuint1_637',['GLM_EXT_vector_uint1',['../a00891.html',1,'']]], + ['glm_5fext_5fvector_5fuint1_5fsized_638',['GLM_EXT_vector_uint1_sized',['../a00892.html',1,'']]], + ['glm_5fext_5fvector_5fuint2_5fsized_639',['GLM_EXT_vector_uint2_sized',['../a00893.html',1,'']]], + ['glm_5fext_5fvector_5fuint3_5fsized_640',['GLM_EXT_vector_uint3_sized',['../a00894.html',1,'']]], + ['glm_5fext_5fvector_5fuint4_5fsized_641',['GLM_EXT_vector_uint4_sized',['../a00895.html',1,'']]], + ['glm_5fext_5fvector_5fulp_642',['GLM_EXT_vector_ulp',['../a00896.html',1,'']]], + ['gauss_643',['gauss',['../a00944.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00944.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], + ['gaussrand_644',['gaussRand',['../a00918.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], + ['geometric_2ehpp_645',['geometric.hpp',['../a00527.html',1,'']]], + ['glm_5faligned_5ftypedef_646',['GLM_ALIGNED_TYPEDEF',['../a00986.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00986.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00986.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00986.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00986.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00986.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00986.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00986.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00986.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00986.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00986.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00986.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00986.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00986.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00986.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00986.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00986.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00986.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00986.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00986.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00986.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00986.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00986.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00986.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00986.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00986.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00986.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00986.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00986.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00986.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00986.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00986.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00986.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00986.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00986.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00986.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00986.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00986.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00986.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00986.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00986.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00986.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00986.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00986.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00986.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00986.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00986.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00986.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00986.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00986.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00986.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00986.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00986.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00986.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00986.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00986.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00986.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00986.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00986.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00986.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00986.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00986.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00986.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00986.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00986.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00986.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00986.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00986.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00986.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00986.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00986.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00986.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00986.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00986.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00986.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00986.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00986.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00986.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00986.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00986.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00986.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00986.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00986.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00986.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00986.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00986.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00986.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00986.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00986.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00986.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00986.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00986.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00986.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00986.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00986.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00986.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00986.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00986.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00986.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00986.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00986.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00986.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00986.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00986.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00986.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00986.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00986.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00986.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00986.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00986.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00986.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00986.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00986.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00986.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00986.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00986.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00986.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00986.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00986.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00986.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00986.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00986.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00986.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00986.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00986.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00986.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00986.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00986.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00986.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00986.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00986.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00986.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00986.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00986.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00986.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00986.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00986.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00986.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00986.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00986.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00986.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00986.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00986.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00986.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00986.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00986.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00986.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00986.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00986.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00986.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00986.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00986.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00986.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00986.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00986.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00986.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00986.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00986.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00986.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00986.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00986.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00986.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00986.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00986.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00986.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00986.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00986.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00986.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00986.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00986.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00986.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00986.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00986.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00986.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00986.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00986.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00986.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00986.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00986.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00986.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00986.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00986.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00986.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00986.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00986.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00986.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00986.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00986.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00986.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00986.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00986.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00986.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00986.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00986.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00986.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00986.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00986.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00986.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00986.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00986.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00986.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00986.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00986.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00986.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00986.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00986.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], + ['golden_5fratio_647',['golden_ratio',['../a00908.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], + ['gradient_5fpaint_2ehpp_648',['gradient_paint.hpp',['../a00638.html',1,'']]], + ['greaterthan_649',['greaterThan',['../a00917.html#gab52513c338f90e9ba249faabdc115b67',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['greaterthanequal_650',['greaterThanEqual',['../a00917.html#gaa71814c544f0ed99ba6d141b17e026ae',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['glm_5fgtc_5fbitfield_651',['GLM_GTC_bitfield',['../a00906.html',1,'']]], + ['glm_5fgtc_5fcolor_5fspace_652',['GLM_GTC_color_space',['../a00907.html',1,'']]], + ['glm_5fgtc_5fconstants_653',['GLM_GTC_constants',['../a00908.html',1,'']]], + ['glm_5fgtc_5fepsilon_654',['GLM_GTC_epsilon',['../a00909.html',1,'']]], + ['glm_5fgtc_5finteger_655',['GLM_GTC_integer',['../a00910.html',1,'']]], + ['glm_5fgtc_5fmatrix_5faccess_656',['GLM_GTC_matrix_access',['../a00911.html',1,'']]], + ['glm_5fgtc_5fmatrix_5finteger_657',['GLM_GTC_matrix_integer',['../a00912.html',1,'']]], + ['glm_5fgtc_5fmatrix_5finverse_658',['GLM_GTC_matrix_inverse',['../a00913.html',1,'']]], + ['glm_5fgtc_5fmatrix_5ftransform_659',['GLM_GTC_matrix_transform',['../a00914.html',1,'']]], + ['glm_5fgtc_5fnoise_660',['GLM_GTC_noise',['../a00915.html',1,'']]], + ['glm_5fgtc_5fpacking_661',['GLM_GTC_packing',['../a00916.html',1,'']]], + ['glm_5fgtc_5fquaternion_662',['GLM_GTC_quaternion',['../a00917.html',1,'']]], + ['glm_5fgtc_5frandom_663',['GLM_GTC_random',['../a00918.html',1,'']]], + ['glm_5fgtc_5freciprocal_664',['GLM_GTC_reciprocal',['../a00919.html',1,'']]], + ['glm_5fgtc_5fround_665',['GLM_GTC_round',['../a00920.html',1,'']]], + ['glm_5fgtc_5ftype_5faligned_666',['GLM_GTC_type_aligned',['../a00921.html',1,'']]], + ['glm_5fgtc_5ftype_5fprecision_667',['GLM_GTC_type_precision',['../a00922.html',1,'']]], + ['glm_5fgtc_5ftype_5fptr_668',['GLM_GTC_type_ptr',['../a00923.html',1,'']]], + ['glm_5fgtc_5fulp_669',['GLM_GTC_ulp',['../a00924.html',1,'']]], + ['glm_5fgtc_5fvec1_670',['GLM_GTC_vec1',['../a00925.html',1,'']]], + ['glm_5fgtx_5fassociated_5fmin_5fmax_671',['GLM_GTX_associated_min_max',['../a00926.html',1,'']]], + ['glm_5fgtx_5fbit_672',['GLM_GTX_bit',['../a00927.html',1,'']]], + ['glm_5fgtx_5fclosest_5fpoint_673',['GLM_GTX_closest_point',['../a00928.html',1,'']]], + ['glm_5fgtx_5fcolor_5fencoding_674',['GLM_GTX_color_encoding',['../a00929.html',1,'']]], + ['glm_5fgtx_5fcolor_5fspace_675',['GLM_GTX_color_space',['../a00930.html',1,'']]], + ['glm_5fgtx_5fcolor_5fspace_5fycocg_676',['GLM_GTX_color_space_YCoCg',['../a00931.html',1,'']]], + ['glm_5fgtx_5fcommon_677',['GLM_GTX_common',['../a00932.html',1,'']]], + ['glm_5fgtx_5fcompatibility_678',['GLM_GTX_compatibility',['../a00933.html',1,'']]], + ['glm_5fgtx_5fcomponent_5fwise_679',['GLM_GTX_component_wise',['../a00934.html',1,'']]], + ['glm_5fgtx_5fdual_5fquaternion_680',['GLM_GTX_dual_quaternion',['../a00935.html',1,'']]], + ['glm_5fgtx_5feasing_681',['GLM_GTX_easing',['../a00936.html',1,'']]], + ['glm_5fgtx_5feuler_5fangles_682',['GLM_GTX_euler_angles',['../a00937.html',1,'']]], + ['glm_5fgtx_5fextend_683',['GLM_GTX_extend',['../a00938.html',1,'']]], + ['glm_5fgtx_5fextended_5fmin_5fmax_684',['GLM_GTX_extended_min_max',['../a00939.html',1,'']]], + ['glm_5fgtx_5fexterior_5fproduct_685',['GLM_GTX_exterior_product',['../a00940.html',1,'']]], + ['glm_5fgtx_5ffast_5fexponential_686',['GLM_GTX_fast_exponential',['../a00941.html',1,'']]], + ['glm_5fgtx_5ffast_5fsquare_5froot_687',['GLM_GTX_fast_square_root',['../a00942.html',1,'']]], + ['glm_5fgtx_5ffast_5ftrigonometry_688',['GLM_GTX_fast_trigonometry',['../a00943.html',1,'']]], + ['glm_5fgtx_5ffunctions_689',['GLM_GTX_functions',['../a00944.html',1,'']]], + ['glm_5fgtx_5fgradient_5fpaint_690',['GLM_GTX_gradient_paint',['../a00945.html',1,'']]], + ['glm_5fgtx_5fhanded_5fcoordinate_5fspace_691',['GLM_GTX_handed_coordinate_space',['../a00946.html',1,'']]], + ['glm_5fgtx_5fhash_692',['GLM_GTX_hash',['../a00947.html',1,'']]], + ['glm_5fgtx_5finteger_693',['GLM_GTX_integer',['../a00948.html',1,'']]], + ['glm_5fgtx_5fintersect_694',['GLM_GTX_intersect',['../a00949.html',1,'']]], + ['glm_5fgtx_5fio_695',['GLM_GTX_io',['../a00950.html',1,'']]], + ['glm_5fgtx_5fiteration_696',['GLM_GTX_iteration',['../a00951.html',1,'']]], + ['glm_5fgtx_5flog_5fbase_697',['GLM_GTX_log_base',['../a00952.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fcross_5fproduct_698',['GLM_GTX_matrix_cross_product',['../a00953.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fdecompose_699',['GLM_GTX_matrix_decompose',['../a00954.html',1,'']]], + ['glm_5fgtx_5fmatrix_5ffactorisation_700',['GLM_GTX_matrix_factorisation',['../a00955.html',1,'']]], + ['glm_5fgtx_5fmatrix_5finterpolation_701',['GLM_GTX_matrix_interpolation',['../a00956.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fmajor_5fstorage_702',['GLM_GTX_matrix_major_storage',['../a00957.html',1,'']]], + ['glm_5fgtx_5fmatrix_5foperation_703',['GLM_GTX_matrix_operation',['../a00958.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fquery_704',['GLM_GTX_matrix_query',['../a00959.html',1,'']]], + ['glm_5fgtx_5fmatrix_5ftransform_5f2d_705',['GLM_GTX_matrix_transform_2d',['../a00960.html',1,'']]], + ['glm_5fgtx_5fmixed_5fproducte_706',['GLM_GTX_mixed_producte',['../a00961.html',1,'']]], + ['glm_5fgtx_5fnorm_707',['GLM_GTX_norm',['../a00962.html',1,'']]], + ['glm_5fgtx_5fnormal_708',['GLM_GTX_normal',['../a00963.html',1,'']]], + ['glm_5fgtx_5fnormalize_5fdot_709',['GLM_GTX_normalize_dot',['../a00964.html',1,'']]], + ['glm_5fgtx_5fnumber_5fprecision_710',['GLM_GTX_number_precision',['../a00965.html',1,'']]], + ['glm_5fgtx_5foptimum_5fpow_711',['GLM_GTX_optimum_pow',['../a00966.html',1,'']]], + ['glm_5fgtx_5forthonormalize_712',['GLM_GTX_orthonormalize',['../a00967.html',1,'']]], + ['glm_5fgtx_5fpca_713',['GLM_GTX_pca',['../a00968.html',1,'']]], + ['glm_5fgtx_5fperpendicular_714',['GLM_GTX_perpendicular',['../a00969.html',1,'']]], + ['glm_5fgtx_5fpolar_5fcoordinates_715',['GLM_GTX_polar_coordinates',['../a00970.html',1,'']]], + ['glm_5fgtx_5fprojection_716',['GLM_GTX_projection',['../a00971.html',1,'']]], + ['glm_5fgtx_5fquaternion_717',['GLM_GTX_quaternion',['../a00972.html',1,'']]], + ['glm_5fgtx_5frange_718',['GLM_GTX_range',['../a00973.html',1,'']]], + ['glm_5fgtx_5fraw_5fdata_719',['GLM_GTX_raw_data',['../a00974.html',1,'']]], + ['glm_5fgtx_5frotate_5fnormalized_5faxis_720',['GLM_GTX_rotate_normalized_axis',['../a00975.html',1,'']]], + ['glm_5fgtx_5frotate_5fvector_721',['GLM_GTX_rotate_vector',['../a00976.html',1,'']]], + ['glm_5fgtx_5fscalar_5fmultiplication_722',['GLM_GTX_scalar_multiplication',['../a00977.html',1,'']]], + ['glm_5fgtx_5fscalar_5frelational_723',['GLM_GTX_scalar_relational',['../a00978.html',1,'']]], + ['glm_5fgtx_5fspline_724',['GLM_GTX_spline',['../a00979.html',1,'']]], + ['glm_5fgtx_5fstd_5fbased_5ftype_725',['GLM_GTX_std_based_type',['../a00980.html',1,'']]], + ['glm_5fgtx_5fstring_5fcast_726',['GLM_GTX_string_cast',['../a00981.html',1,'']]], + ['glm_5fgtx_5fstructured_5fbindings_727',['GLM_GTX_structured_bindings',['../a00982.html',1,'']]], + ['glm_5fgtx_5ftexture_728',['GLM_GTX_texture',['../a00983.html',1,'']]], + ['glm_5fgtx_5ftransform_729',['GLM_GTX_transform',['../a00984.html',1,'']]], + ['glm_5fgtx_5ftransform2_730',['GLM_GTX_transform2',['../a00985.html',1,'']]], + ['glm_5fgtx_5ftype_5faligned_731',['GLM_GTX_type_aligned',['../a00986.html',1,'']]], + ['glm_5fgtx_5ftype_5ftrait_732',['GLM_GTX_type_trait',['../a00987.html',1,'']]], + ['glm_5fgtx_5fvec_5fswizzle_733',['GLM_GTX_vec_swizzle',['../a00988.html',1,'']]], + ['glm_5fgtx_5fvector_5fangle_734',['GLM_GTX_vector_angle',['../a00989.html',1,'']]], + ['glm_5fgtx_5fvector_5fquery_735',['GLM_GTX_vector_query',['../a00990.html',1,'']]], + ['glm_5fgtx_5fwrap_736',['GLM_GTX_wrap',['../a00991.html',1,'']]], + ['integer_2ehpp_737',['integer.hpp',['../a01690.html',1,'(Global Namespace)'],['../a01693.html',1,'(Global Namespace)']]], + ['matrix_5finteger_2ehpp_738',['matrix_integer.hpp',['../a01699.html',1,'']]], + ['matrix_5ftransform_2ehpp_739',['matrix_transform.hpp',['../a01705.html',1,'']]], + ['packing_2ehpp_740',['packing.hpp',['../a01708.html',1,'']]], + ['quaternion_2ehpp_741',['quaternion.hpp',['../a01711.html',1,'(Global Namespace)'],['../a01714.html',1,'(Global Namespace)']]], + ['scalar_5frelational_2ehpp_742',['scalar_relational.hpp',['../a01720.html',1,'']]], + ['type_5faligned_2ehpp_743',['type_aligned.hpp',['../a01723.html',1,'(Global Namespace)'],['../a01726.html',1,'(Global Namespace)']]] +]; diff --git a/include/glm/doc/api/search/all_7.html b/include/glm/doc/api/search/all_7.html new file mode 100644 index 0000000..e42e45b --- /dev/null +++ b/include/glm/doc/api/search/all_7.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_7.js b/include/glm/doc/api/search/all_7.js new file mode 100644 index 0000000..abcf6d8 --- /dev/null +++ b/include/glm/doc/api/search/all_7.js @@ -0,0 +1,194 @@ +var searchData= +[ + ['half_5fpi_744',['half_pi',['../a00908.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], + ['handed_5fcoordinate_5fspace_2ehpp_745',['handed_coordinate_space.hpp',['../a00641.html',1,'']]], + ['hash_2ehpp_746',['hash.hpp',['../a00644.html',1,'']]], + ['hermite_747',['hermite',['../a00979.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], + ['highestbitvalue_748',['highestBitValue',['../a00927.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00927.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], + ['highp_5fbvec1_749',['highp_bvec1',['../a00876.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], + ['highp_5fbvec2_750',['highp_bvec2',['../a00900.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], + ['highp_5fbvec3_751',['highp_bvec3',['../a00900.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], + ['highp_5fbvec4_752',['highp_bvec4',['../a00900.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], + ['highp_5fddualquat_753',['highp_ddualquat',['../a00935.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], + ['highp_5fdmat2_754',['highp_dmat2',['../a00902.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], + ['highp_5fdmat2x2_755',['highp_dmat2x2',['../a00902.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], + ['highp_5fdmat2x3_756',['highp_dmat2x3',['../a00902.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], + ['highp_5fdmat2x4_757',['highp_dmat2x4',['../a00902.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], + ['highp_5fdmat3_758',['highp_dmat3',['../a00902.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], + ['highp_5fdmat3x2_759',['highp_dmat3x2',['../a00902.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], + ['highp_5fdmat3x3_760',['highp_dmat3x3',['../a00902.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], + ['highp_5fdmat3x4_761',['highp_dmat3x4',['../a00902.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], + ['highp_5fdmat4_762',['highp_dmat4',['../a00902.html#ga945254f459860741138bceb74da496b9',1,'glm']]], + ['highp_5fdmat4x2_763',['highp_dmat4x2',['../a00902.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], + ['highp_5fdmat4x3_764',['highp_dmat4x3',['../a00902.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], + ['highp_5fdmat4x4_765',['highp_dmat4x4',['../a00902.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], + ['highp_5fdquat_766',['highp_dquat',['../a00858.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], + ['highp_5fdualquat_767',['highp_dualquat',['../a00935.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], + ['highp_5fdvec1_768',['highp_dvec1',['../a00879.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], + ['highp_5fdvec2_769',['highp_dvec2',['../a00900.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], + ['highp_5fdvec3_770',['highp_dvec3',['../a00900.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], + ['highp_5fdvec4_771',['highp_dvec4',['../a00900.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], + ['highp_5ff32_772',['highp_f32',['../a00922.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], + ['highp_5ff32mat2_773',['highp_f32mat2',['../a00922.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], + ['highp_5ff32mat2x2_774',['highp_f32mat2x2',['../a00922.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], + ['highp_5ff32mat2x3_775',['highp_f32mat2x3',['../a00922.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], + ['highp_5ff32mat2x4_776',['highp_f32mat2x4',['../a00922.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], + ['highp_5ff32mat3_777',['highp_f32mat3',['../a00922.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], + ['highp_5ff32mat3x2_778',['highp_f32mat3x2',['../a00922.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], + ['highp_5ff32mat3x3_779',['highp_f32mat3x3',['../a00922.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], + ['highp_5ff32mat3x4_780',['highp_f32mat3x4',['../a00922.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], + ['highp_5ff32mat4_781',['highp_f32mat4',['../a00922.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], + ['highp_5ff32mat4x2_782',['highp_f32mat4x2',['../a00922.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], + ['highp_5ff32mat4x3_783',['highp_f32mat4x3',['../a00922.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], + ['highp_5ff32mat4x4_784',['highp_f32mat4x4',['../a00922.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], + ['highp_5ff32quat_785',['highp_f32quat',['../a00922.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], + ['highp_5ff32vec1_786',['highp_f32vec1',['../a00922.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], + ['highp_5ff32vec2_787',['highp_f32vec2',['../a00922.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], + ['highp_5ff32vec3_788',['highp_f32vec3',['../a00922.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], + ['highp_5ff32vec4_789',['highp_f32vec4',['../a00922.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], + ['highp_5ff64_790',['highp_f64',['../a00922.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], + ['highp_5ff64mat2_791',['highp_f64mat2',['../a00922.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], + ['highp_5ff64mat2x2_792',['highp_f64mat2x2',['../a00922.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], + ['highp_5ff64mat2x3_793',['highp_f64mat2x3',['../a00922.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], + ['highp_5ff64mat2x4_794',['highp_f64mat2x4',['../a00922.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], + ['highp_5ff64mat3_795',['highp_f64mat3',['../a00922.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], + ['highp_5ff64mat3x2_796',['highp_f64mat3x2',['../a00922.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], + ['highp_5ff64mat3x3_797',['highp_f64mat3x3',['../a00922.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], + ['highp_5ff64mat3x4_798',['highp_f64mat3x4',['../a00922.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], + ['highp_5ff64mat4_799',['highp_f64mat4',['../a00922.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], + ['highp_5ff64mat4x2_800',['highp_f64mat4x2',['../a00922.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], + ['highp_5ff64mat4x3_801',['highp_f64mat4x3',['../a00922.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], + ['highp_5ff64mat4x4_802',['highp_f64mat4x4',['../a00922.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], + ['highp_5ff64quat_803',['highp_f64quat',['../a00922.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], + ['highp_5ff64vec1_804',['highp_f64vec1',['../a00922.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], + ['highp_5ff64vec2_805',['highp_f64vec2',['../a00922.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], + ['highp_5ff64vec3_806',['highp_f64vec3',['../a00922.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], + ['highp_5ff64vec4_807',['highp_f64vec4',['../a00922.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], + ['highp_5ffdualquat_808',['highp_fdualquat',['../a00935.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], + ['highp_5ffloat32_809',['highp_float32',['../a00922.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], + ['highp_5ffloat32_5ft_810',['highp_float32_t',['../a00922.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], + ['highp_5ffloat64_811',['highp_float64',['../a00922.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], + ['highp_5ffloat64_5ft_812',['highp_float64_t',['../a00922.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], + ['highp_5ffmat2_813',['highp_fmat2',['../a00922.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], + ['highp_5ffmat2x2_814',['highp_fmat2x2',['../a00922.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], + ['highp_5ffmat2x3_815',['highp_fmat2x3',['../a00922.html#gacf111095594996fef29067b2454fccad',1,'glm']]], + ['highp_5ffmat2x4_816',['highp_fmat2x4',['../a00922.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], + ['highp_5ffmat3_817',['highp_fmat3',['../a00922.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], + ['highp_5ffmat3x2_818',['highp_fmat3x2',['../a00922.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], + ['highp_5ffmat3x3_819',['highp_fmat3x3',['../a00922.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], + ['highp_5ffmat3x4_820',['highp_fmat3x4',['../a00922.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], + ['highp_5ffmat4_821',['highp_fmat4',['../a00922.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], + ['highp_5ffmat4x2_822',['highp_fmat4x2',['../a00922.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], + ['highp_5ffmat4x3_823',['highp_fmat4x3',['../a00922.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], + ['highp_5ffmat4x4_824',['highp_fmat4x4',['../a00922.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], + ['highp_5ffvec1_825',['highp_fvec1',['../a00922.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], + ['highp_5ffvec2_826',['highp_fvec2',['../a00922.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], + ['highp_5ffvec3_827',['highp_fvec3',['../a00922.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], + ['highp_5ffvec4_828',['highp_fvec4',['../a00922.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], + ['highp_5fi16_829',['highp_i16',['../a00922.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], + ['highp_5fi16vec1_830',['highp_i16vec1',['../a00922.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], + ['highp_5fi16vec2_831',['highp_i16vec2',['../a00922.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], + ['highp_5fi16vec3_832',['highp_i16vec3',['../a00922.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], + ['highp_5fi16vec4_833',['highp_i16vec4',['../a00922.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], + ['highp_5fi32_834',['highp_i32',['../a00922.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], + ['highp_5fi32vec1_835',['highp_i32vec1',['../a00922.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], + ['highp_5fi32vec2_836',['highp_i32vec2',['../a00922.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], + ['highp_5fi32vec3_837',['highp_i32vec3',['../a00922.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], + ['highp_5fi32vec4_838',['highp_i32vec4',['../a00922.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], + ['highp_5fi64_839',['highp_i64',['../a00922.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], + ['highp_5fi64vec1_840',['highp_i64vec1',['../a00922.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], + ['highp_5fi64vec2_841',['highp_i64vec2',['../a00922.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], + ['highp_5fi64vec3_842',['highp_i64vec3',['../a00922.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], + ['highp_5fi64vec4_843',['highp_i64vec4',['../a00922.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], + ['highp_5fi8_844',['highp_i8',['../a00922.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], + ['highp_5fi8vec1_845',['highp_i8vec1',['../a00922.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], + ['highp_5fi8vec2_846',['highp_i8vec2',['../a00922.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], + ['highp_5fi8vec3_847',['highp_i8vec3',['../a00922.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], + ['highp_5fi8vec4_848',['highp_i8vec4',['../a00922.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], + ['highp_5fimat2_849',['highp_imat2',['../a00912.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], + ['highp_5fimat2x2_850',['highp_imat2x2',['../a00912.html#ga02470e29b72461d18b0ca69abedd7ed9',1,'glm']]], + ['highp_5fimat2x3_851',['highp_imat2x3',['../a00912.html#gaa9cc128d4b33a9a3d9c41945409c6a09',1,'glm']]], + ['highp_5fimat2x4_852',['highp_imat2x4',['../a00912.html#gafc4c0a84e63da3c5dd49fb893c036f03',1,'glm']]], + ['highp_5fimat3_853',['highp_imat3',['../a00912.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], + ['highp_5fimat3x2_854',['highp_imat3x2',['../a00912.html#ga5ad2efa5da7d3331f264c9623e3def51',1,'glm']]], + ['highp_5fimat3x3_855',['highp_imat3x3',['../a00912.html#ga92349a807c25033fad67f0d402d4cb98',1,'glm']]], + ['highp_5fimat3x4_856',['highp_imat3x4',['../a00912.html#ga314765ba5934d6fe6e8ca189417e2ab6',1,'glm']]], + ['highp_5fimat4_857',['highp_imat4',['../a00912.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], + ['highp_5fimat4x2_858',['highp_imat4x2',['../a00912.html#ga89f150a46de983f1e27d0045ec05b4e3',1,'glm']]], + ['highp_5fimat4x3_859',['highp_imat4x3',['../a00912.html#gadbccb0a2e7f43c31baea7fecbfa10bbf',1,'glm']]], + ['highp_5fimat4x4_860',['highp_imat4x4',['../a00912.html#gabb667869006fd8b1944bbd03c6d56690',1,'glm']]], + ['highp_5fint16_861',['highp_int16',['../a00922.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], + ['highp_5fint16_5ft_862',['highp_int16_t',['../a00922.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], + ['highp_5fint32_863',['highp_int32',['../a00922.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], + ['highp_5fint32_5ft_864',['highp_int32_t',['../a00922.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], + ['highp_5fint64_865',['highp_int64',['../a00922.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], + ['highp_5fint64_5ft_866',['highp_int64_t',['../a00922.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], + ['highp_5fint8_867',['highp_int8',['../a00922.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], + ['highp_5fint8_5ft_868',['highp_int8_t',['../a00922.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], + ['highp_5fivec1_869',['highp_ivec1',['../a00922.html#gacf8589dd33b79b1637fecd546f4ce4ef',1,'glm']]], + ['highp_5fivec2_870',['highp_ivec2',['../a00922.html#ga9003b53a8b6e86061e9713001e32fb2a',1,'glm']]], + ['highp_5fivec3_871',['highp_ivec3',['../a00922.html#ga53216c727940d2679d1192600bd29282',1,'glm']]], + ['highp_5fivec4_872',['highp_ivec4',['../a00922.html#ga81bd289ae2a99f7b957c1d3d7fba278b',1,'glm']]], + ['highp_5fmat2_873',['highp_mat2',['../a00902.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], + ['highp_5fmat2x2_874',['highp_mat2x2',['../a00902.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], + ['highp_5fmat2x3_875',['highp_mat2x3',['../a00902.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], + ['highp_5fmat2x4_876',['highp_mat2x4',['../a00902.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], + ['highp_5fmat3_877',['highp_mat3',['../a00902.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], + ['highp_5fmat3x2_878',['highp_mat3x2',['../a00902.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], + ['highp_5fmat3x3_879',['highp_mat3x3',['../a00902.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], + ['highp_5fmat3x4_880',['highp_mat3x4',['../a00902.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], + ['highp_5fmat4_881',['highp_mat4',['../a00902.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], + ['highp_5fmat4x2_882',['highp_mat4x2',['../a00902.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], + ['highp_5fmat4x3_883',['highp_mat4x3',['../a00902.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], + ['highp_5fmat4x4_884',['highp_mat4x4',['../a00902.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], + ['highp_5fquat_885',['highp_quat',['../a00861.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], + ['highp_5fu16_886',['highp_u16',['../a00922.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], + ['highp_5fu16vec1_887',['highp_u16vec1',['../a00922.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], + ['highp_5fu16vec2_888',['highp_u16vec2',['../a00922.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], + ['highp_5fu16vec3_889',['highp_u16vec3',['../a00922.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], + ['highp_5fu16vec4_890',['highp_u16vec4',['../a00922.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], + ['highp_5fu32_891',['highp_u32',['../a00922.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], + ['highp_5fu32vec1_892',['highp_u32vec1',['../a00922.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], + ['highp_5fu32vec2_893',['highp_u32vec2',['../a00922.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], + ['highp_5fu32vec3_894',['highp_u32vec3',['../a00922.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], + ['highp_5fu32vec4_895',['highp_u32vec4',['../a00922.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], + ['highp_5fu64_896',['highp_u64',['../a00922.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], + ['highp_5fu64vec1_897',['highp_u64vec1',['../a00922.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], + ['highp_5fu64vec2_898',['highp_u64vec2',['../a00922.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], + ['highp_5fu64vec3_899',['highp_u64vec3',['../a00922.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], + ['highp_5fu64vec4_900',['highp_u64vec4',['../a00922.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], + ['highp_5fu8_901',['highp_u8',['../a00922.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], + ['highp_5fu8vec1_902',['highp_u8vec1',['../a00922.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], + ['highp_5fu8vec2_903',['highp_u8vec2',['../a00922.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], + ['highp_5fu8vec3_904',['highp_u8vec3',['../a00922.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], + ['highp_5fu8vec4_905',['highp_u8vec4',['../a00922.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], + ['highp_5fuint16_906',['highp_uint16',['../a00922.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], + ['highp_5fuint16_5ft_907',['highp_uint16_t',['../a00922.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], + ['highp_5fuint32_908',['highp_uint32',['../a00922.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], + ['highp_5fuint32_5ft_909',['highp_uint32_t',['../a00922.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], + ['highp_5fuint64_910',['highp_uint64',['../a00922.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], + ['highp_5fuint64_5ft_911',['highp_uint64_t',['../a00922.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], + ['highp_5fuint8_912',['highp_uint8',['../a00922.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], + ['highp_5fuint8_5ft_913',['highp_uint8_t',['../a00922.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], + ['highp_5fumat2_914',['highp_umat2',['../a00912.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], + ['highp_5fumat2x2_915',['highp_umat2x2',['../a00912.html#ga2dad0e8e8c909d3f5c74aa981384a7b9',1,'glm']]], + ['highp_5fumat2x3_916',['highp_umat2x3',['../a00912.html#ga2c2bd3cf2b66069fcc70f5ba958ae48a',1,'glm']]], + ['highp_5fumat2x4_917',['highp_umat2x4',['../a00912.html#ga57eed9d47bfb9a454d1310e84b11b3b8',1,'glm']]], + ['highp_5fumat3_918',['highp_umat3',['../a00912.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], + ['highp_5fumat3x2_919',['highp_umat3x2',['../a00912.html#gaeed2950bed2c5014c932e78be4164ab6',1,'glm']]], + ['highp_5fumat3x3_920',['highp_umat3x3',['../a00912.html#ga53564c99d65d1dad4835a9286cee0961',1,'glm']]], + ['highp_5fumat3x4_921',['highp_umat3x4',['../a00912.html#gae4c04a557db14157f2627e0a5136843b',1,'glm']]], + ['highp_5fumat4_922',['highp_umat4',['../a00912.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], + ['highp_5fumat4x2_923',['highp_umat4x2',['../a00912.html#ga1a236f645cb1dfb43f6207a46cd59aea',1,'glm']]], + ['highp_5fumat4x3_924',['highp_umat4x3',['../a00912.html#ga730c61696dbb99b9a4be0732091a8fd3',1,'glm']]], + ['highp_5fumat4x4_925',['highp_umat4x4',['../a00912.html#ga0d2e3526972ef22c088a529ebc790023',1,'glm']]], + ['highp_5fuvec1_926',['highp_uvec1',['../a00922.html#ga1379900164b52f6495186b536e63219a',1,'glm']]], + ['highp_5fuvec2_927',['highp_uvec2',['../a00922.html#gaff3354c7f0e39561f3594d496f2d12b1',1,'glm']]], + ['highp_5fuvec3_928',['highp_uvec3',['../a00922.html#gab4c04fa2a3006e977f220f4f58eed009',1,'glm']]], + ['highp_5fuvec4_929',['highp_uvec4',['../a00922.html#ga8d1fff5168a6ef78c138f99a56f0f588',1,'glm']]], + ['highp_5fvec1_930',['highp_vec1',['../a00881.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], + ['highp_5fvec2_931',['highp_vec2',['../a00900.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], + ['highp_5fvec3_932',['highp_vec3',['../a00900.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], + ['highp_5fvec4_933',['highp_vec4',['../a00900.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]], + ['hsvcolor_934',['hsvColor',['../a00930.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_8.html b/include/glm/doc/api/search/all_8.html new file mode 100644 index 0000000..888e619 --- /dev/null +++ b/include/glm/doc/api/search/all_8.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_8.js b/include/glm/doc/api/search/all_8.js new file mode 100644 index 0000000..519bf0c --- /dev/null +++ b/include/glm/doc/api/search/all_8.js @@ -0,0 +1,146 @@ +var searchData= +[ + ['integer_20functions_935',['Integer functions',['../a00992.html',1,'']]], + ['i16_936',['i16',['../a00922.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], + ['i16mat2_937',['i16mat2',['../a00817.html#gad6e608aaaf7c28f1e659e40b62e1ae07',1,'glm']]], + ['i16mat2x2_938',['i16mat2x2',['../a00817.html#ga47065ee69513dc0289a613eb3c32df60',1,'glm']]], + ['i16mat2x3_939',['i16mat2x3',['../a00819.html#gaa71b21babc9d8a224e92d60703979448',1,'glm']]], + ['i16mat2x4_940',['i16mat2x4',['../a00821.html#ga928a7def71f463e661f197ba9620208b',1,'glm']]], + ['i16mat3_941',['i16mat3',['../a00825.html#ga7b4f37f881ec3362f134bd944560fe3f',1,'glm']]], + ['i16mat3x2_942',['i16mat3x2',['../a00823.html#ga72ee4f64752177f6f5978c6a49cfe3db',1,'glm']]], + ['i16mat3x3_943',['i16mat3x3',['../a00825.html#ga361b2094238f92774c8db5093b44566b',1,'glm']]], + ['i16mat3x4_944',['i16mat3x4',['../a00827.html#ga71beebbf7447d8a32e5cc681d2db7849',1,'glm']]], + ['i16mat4_945',['i16mat4',['../a00833.html#ga6ed05bec8bbe6c06fa9c7dc981c892f4',1,'glm']]], + ['i16mat4x2_946',['i16mat4x2',['../a00829.html#ga1cd9115b5627b6e9c0ce423d450ded3b',1,'glm']]], + ['i16mat4x3_947',['i16mat4x3',['../a00831.html#gae16035341f36e5afd002bdc7fc19ffbd',1,'glm']]], + ['i16mat4x4_948',['i16mat4x4',['../a00833.html#ga3e9865fa750ba5a1f2a78a64d3128e96',1,'glm']]], + ['i16vec1_949',['i16vec1',['../a00883.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], + ['i16vec2_950',['i16vec2',['../a00884.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], + ['i16vec3_951',['i16vec3',['../a00885.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], + ['i16vec4_952',['i16vec4',['../a00886.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], + ['i32_953',['i32',['../a00922.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], + ['i32mat2_954',['i32mat2',['../a00817.html#ga29cc4fc2d059a71f654db8ffd6a0d1c8',1,'glm']]], + ['i32mat2x2_955',['i32mat2x2',['../a00817.html#gaf39b46daac3fdc9580a8186d50bdc49b',1,'glm']]], + ['i32mat2x3_956',['i32mat2x3',['../a00819.html#gabda3a64e16d3cf3826b630aee9e01421',1,'glm']]], + ['i32mat2x4_957',['i32mat2x4',['../a00821.html#gac91b19cd25751d92107963f2eb819477',1,'glm']]], + ['i32mat3_958',['i32mat3',['../a00825.html#gaeee8d25ed2061b68720bcb831327ffd4',1,'glm']]], + ['i32mat3x2_959',['i32mat3x2',['../a00823.html#ga57877f8bbc5921651ad29935792f41a0',1,'glm']]], + ['i32mat3x3_960',['i32mat3x3',['../a00825.html#ga75af30ee79bc6f01be007e6762e369aa',1,'glm']]], + ['i32mat3x4_961',['i32mat3x4',['../a00827.html#gaa08c324017c156ad33b5240f38b1e2ae',1,'glm']]], + ['i32mat4_962',['i32mat4',['../a00833.html#gae251517f782cb11ff0d9b79fcd13540e',1,'glm']]], + ['i32mat4x2_963',['i32mat4x2',['../a00829.html#ga9b4aeda66c6da4e92c97977ac9c8423c',1,'glm']]], + ['i32mat4x3_964',['i32mat4x3',['../a00831.html#gaeac0a48bdf2051127669ea8f52661b1f',1,'glm']]], + ['i32mat4x4_965',['i32mat4x4',['../a00833.html#ga70bc41754e5d5a63ea90b04fd29a7e38',1,'glm']]], + ['i32vec1_966',['i32vec1',['../a00883.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], + ['i32vec2_967',['i32vec2',['../a00884.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], + ['i32vec3_968',['i32vec3',['../a00885.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], + ['i32vec4_969',['i32vec4',['../a00886.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], + ['i64_970',['i64',['../a00922.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], + ['i64mat2_971',['i64mat2',['../a00817.html#ga991f07e78a27044a26b55befae3a769a',1,'glm']]], + ['i64mat2x2_972',['i64mat2x2',['../a00817.html#ga41c7a91e1c92094912f8bc5b823c1ce7',1,'glm']]], + ['i64mat2x3_973',['i64mat2x3',['../a00819.html#ga086f53f13530ed954ed6845c27e2f765',1,'glm']]], + ['i64mat2x4_974',['i64mat2x4',['../a00821.html#ga2b589f8bcde400f09bd606476c715f28',1,'glm']]], + ['i64mat3_975',['i64mat3',['../a00825.html#ga94bbe4d004cd4507d370e529540e5c40',1,'glm']]], + ['i64mat3x2_976',['i64mat3x2',['../a00823.html#ga87de638d4758ece144b404acbdbaaa74',1,'glm']]], + ['i64mat3x3_977',['i64mat3x3',['../a00825.html#ga2d994eec234bb2f1f12d6c89519099e3',1,'glm']]], + ['i64mat3x4_978',['i64mat3x4',['../a00827.html#gae298b2ac37981b232789b5a313c81ccc',1,'glm']]], + ['i64mat4_979',['i64mat4',['../a00833.html#ga137dbc4ffc97899595676e737df3de71',1,'glm']]], + ['i64mat4x2_980',['i64mat4x2',['../a00829.html#gaa078eeba33f2ee96c60cf7cab7299e66',1,'glm']]], + ['i64mat4x3_981',['i64mat4x3',['../a00831.html#gafa6ab9b0940008de60ee78bbebba2306',1,'glm']]], + ['i64mat4x4_982',['i64mat4x4',['../a00833.html#gaa56fe396b8efe61daadfd55782e1df93',1,'glm']]], + ['i64vec1_983',['i64vec1',['../a00883.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], + ['i64vec2_984',['i64vec2',['../a00884.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], + ['i64vec3_985',['i64vec3',['../a00885.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], + ['i64vec4_986',['i64vec4',['../a00886.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], + ['i8_987',['i8',['../a00922.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], + ['i8mat2_988',['i8mat2',['../a00817.html#ga982fb047723bc5fd4dd2106d8bcf0dfe',1,'glm']]], + ['i8mat2x2_989',['i8mat2x2',['../a00817.html#ga2588340ecf113b18a1bb08c20f7c2989',1,'glm']]], + ['i8mat2x3_990',['i8mat2x3',['../a00819.html#ga07be66899f390d383f7c9b59d03a711d',1,'glm']]], + ['i8mat2x4_991',['i8mat2x4',['../a00821.html#ga16f963e233d40cae586c0670605acf64',1,'glm']]], + ['i8mat3_992',['i8mat3',['../a00825.html#ga09dd4ed01cbdbaabea98ee994b6ae578',1,'glm']]], + ['i8mat3x2_993',['i8mat3x2',['../a00823.html#ga457df325132fb92e9f023fae7ee6ecec',1,'glm']]], + ['i8mat3x3_994',['i8mat3x3',['../a00825.html#gac6702a5f34779f892e8bcd4f9db8cc96',1,'glm']]], + ['i8mat3x4_995',['i8mat3x4',['../a00827.html#ga92da3ce32ed1bdede71bc7028a856c25',1,'glm']]], + ['i8mat4_996',['i8mat4',['../a00833.html#ga5a13150a001c529121c442acf997c1da',1,'glm']]], + ['i8mat4x2_997',['i8mat4x2',['../a00829.html#ga9a40d61581a8f4db0c94eb6507fc441a',1,'glm']]], + ['i8mat4x3_998',['i8mat4x3',['../a00831.html#ga81ddc1238242fea1d7462050e5609889',1,'glm']]], + ['i8mat4x4_999',['i8mat4x4',['../a00833.html#gace28977d2e296a7d23fa466f55b114f7',1,'glm']]], + ['i8vec1_1000',['i8vec1',['../a00883.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], + ['i8vec2_1001',['i8vec2',['../a00884.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], + ['i8vec3_1002',['i8vec3',['../a00885.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], + ['i8vec4_1003',['i8vec4',['../a00886.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], + ['identity_1004',['identity',['../a00837.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], + ['imat2_1005',['imat2',['../a00816.html#gaea0d06425d5020c7302df6cb412b9477',1,'glm']]], + ['imat2x2_1006',['imat2x2',['../a00816.html#ga8f9969e26ffeef99610abfd22577f5f1',1,'glm']]], + ['imat2x3_1007',['imat2x3',['../a00818.html#ga73766aa25add75d432e8d12890558edf',1,'glm']]], + ['imat2x4_1008',['imat2x4',['../a00820.html#ga4b0d247c6fe04618569092682ce26934',1,'glm']]], + ['imat3_1009',['imat3',['../a00824.html#gaf317be550c62aa66309b251526ee40ec',1,'glm']]], + ['imat3x2_1010',['imat3x2',['../a00822.html#gad47291b91ea6304a7c7e2c02caf5fad1',1,'glm']]], + ['imat3x3_1011',['imat3x3',['../a00824.html#gab82b19595eb6bad1bdc164b8d1ace60f',1,'glm']]], + ['imat3x4_1012',['imat3x4',['../a00826.html#ga03dcdd1a5cc6a0f59afaee28f68649c2',1,'glm']]], + ['imat4_1013',['imat4',['../a00832.html#gace7a6b13b37c7a530c676caf07e8876c',1,'glm']]], + ['imat4x2_1014',['imat4x2',['../a00828.html#ga422267d95355713db46e782b39746c0a',1,'glm']]], + ['imat4x3_1015',['imat4x3',['../a00830.html#ga5b02c51f7ee5924911b3d82faf3e2cc2',1,'glm']]], + ['imat4x4_1016',['imat4x4',['../a00832.html#ga76545537d9bf3a1be1458dd0a5ebbe1d',1,'glm']]], + ['imulextended_1017',['imulExtended',['../a00992.html#ga3d262b3633cde7a67530c6172424ce37',1,'glm']]], + ['infiniteperspective_1018',['infinitePerspective',['../a00814.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], + ['infiniteperspectivelh_1019',['infinitePerspectiveLH',['../a00814.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], + ['infiniteperspectivelh_5fno_1020',['infinitePerspectiveLH_NO',['../a00814.html#ga8034759052b6d0f27fcb9e6d94d81d00',1,'glm']]], + ['infiniteperspectivelh_5fzo_1021',['infinitePerspectiveLH_ZO',['../a00814.html#gac814a56c1b1120aab3d10c8e6e955a89',1,'glm']]], + ['infiniteperspectiverh_1022',['infinitePerspectiveRH',['../a00814.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], + ['infiniteperspectiverh_5fno_1023',['infinitePerspectiveRH_NO',['../a00814.html#gaf50823c0bed37d4f07891888f42a3a06',1,'glm']]], + ['infiniteperspectiverh_5fzo_1024',['infinitePerspectiveRH_ZO',['../a00814.html#gac8ab661bde7995c977393c5e69cb9dae',1,'glm']]], + ['int1_1025',['int1',['../a00933.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], + ['int16_1026',['int16',['../a00868.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], + ['int16_5ft_1027',['int16_t',['../a00922.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], + ['int1x1_1028',['int1x1',['../a00933.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], + ['int2_1029',['int2',['../a00933.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], + ['int2x2_1030',['int2x2',['../a00933.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], + ['int2x3_1031',['int2x3',['../a00933.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], + ['int2x4_1032',['int2x4',['../a00933.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], + ['int3_1033',['int3',['../a00933.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], + ['int32_1034',['int32',['../a00868.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], + ['int32_5ft_1035',['int32_t',['../a00922.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], + ['int3x2_1036',['int3x2',['../a00933.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], + ['int3x3_1037',['int3x3',['../a00933.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], + ['int3x4_1038',['int3x4',['../a00933.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], + ['int4_1039',['int4',['../a00933.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], + ['int4x2_1040',['int4x2',['../a00933.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], + ['int4x3_1041',['int4x3',['../a00933.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], + ['int4x4_1042',['int4x4',['../a00933.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], + ['int64_1043',['int64',['../a00868.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], + ['int64_5ft_1044',['int64_t',['../a00922.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], + ['int8_1045',['int8',['../a00868.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], + ['int8_5ft_1046',['int8_t',['../a00922.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], + ['intbitstofloat_1047',['intBitsToFloat',['../a00812.html#gad780bbd088b64d823ad7049c42b157da',1,'glm::intBitsToFloat(int v)'],['../a00812.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], + ['integer_2ehpp_1048',['integer.hpp',['../a00545.html',1,'']]], + ['intermediate_1049',['intermediate',['../a00972.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], + ['interpolate_1050',['interpolate',['../a00956.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], + ['intersect_2ehpp_1051',['intersect.hpp',['../a00647.html',1,'']]], + ['intersectlinesphere_1052',['intersectLineSphere',['../a00949.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], + ['intersectlinetriangle_1053',['intersectLineTriangle',['../a00949.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], + ['intersectrayplane_1054',['intersectRayPlane',['../a00949.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], + ['intersectraysphere_1055',['intersectRaySphere',['../a00949.html#ga69367b81be6a589e3a1f9661b4430a27',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)'],['../a00949.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], + ['intersectraytriangle_1056',['intersectRayTriangle',['../a00949.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], + ['inverse_1057',['inverse',['../a00856.html#ga50db49335150de11562052667537e517',1,'glm::inverse(qua< T, Q > const &q)'],['../a00935.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00993.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], + ['inversesqrt_1058',['inversesqrt',['../a00813.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], + ['inversetranspose_1059',['inverseTranspose',['../a00913.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], + ['io_2ehpp_1060',['io.hpp',['../a00650.html',1,'']]], + ['iround_1061',['iround',['../a00866.html#gaa45ff5782fde5182afa7ab211f9758a3',1,'glm::iround(genType const &x)'],['../a00877.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm::iround(vec< L, T, Q > const &x)']]], + ['iscompnull_1062',['isCompNull',['../a00990.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], + ['isdenormal_1063',['isdenormal',['../a00932.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], + ['isfinite_1064',['isfinite',['../a00933.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00933.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00933.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00933.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00933.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)'],['../a00933.html#gac5ce300d95da1649147adddbc80af5e5',1,'glm::isfinite(const qua< T, Q > &x)']]], + ['isidentity_1065',['isIdentity',['../a00959.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], + ['isinf_1066',['isinf',['../a00812.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00856.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], + ['ismultiple_1067',['isMultiple',['../a00869.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['isnan_1068',['isnan',['../a00812.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00856.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], + ['isnormalized_1069',['isNormalized',['../a00959.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00959.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00959.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00990.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], + ['isnull_1070',['isNull',['../a00959.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00959.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00959.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00990.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], + ['isorthogonal_1071',['isOrthogonal',['../a00959.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], + ['ispoweroftwo_1072',['isPowerOfTwo',['../a00869.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00887.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]], + ['iteration_2ehpp_1073',['iteration.hpp',['../a00653.html',1,'']]], + ['ivec1_1074',['ivec1',['../a00882.html#gac5197e18f85a147ad178c1a786afcc4d',1,'glm']]], + ['ivec2_1075',['ivec2',['../a00899.html#gaed4cbdb97920de4fabfdff438379ba40',1,'glm']]], + ['ivec3_1076',['ivec3',['../a00899.html#gad540fb5cf526e14b4729c2cb34e7b962',1,'glm']]], + ['ivec4_1077',['ivec4',['../a00899.html#ga791d3c7534500f15ef3eb97113f3f82a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_9.html b/include/glm/doc/api/search/all_9.html new file mode 100644 index 0000000..dc988f4 --- /dev/null +++ b/include/glm/doc/api/search/all_9.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_9.js b/include/glm/doc/api/search/all_9.js new file mode 100644 index 0000000..62d7658 --- /dev/null +++ b/include/glm/doc/api/search/all_9.js @@ -0,0 +1,214 @@ +var searchData= +[ + ['l1norm_1078',['l1Norm',['../a00962.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], + ['l2norm_1079',['l2Norm',['../a00962.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], + ['ldexp_1080',['ldexp',['../a00812.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], + ['lefthanded_1081',['leftHanded',['../a00946.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], + ['length_1082',['length',['../a00862.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00897.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], + ['length2_1083',['length2',['../a00962.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00972.html#ga08eb643306c5ba9211a81b322bc89543',1,'glm::length2(qua< T, Q > const &q)']]], + ['lerp_1084',['lerp',['../a00856.html#gaacd3d0591852faa4bc291b61da88ad44',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00933.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00933.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00933.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00933.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00933.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00933.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00933.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00935.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], + ['lessthan_1085',['lessThan',['../a00917.html#gae0ed978b5c2588d53b220e9ceebaca0b',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['lessthanequal_1086',['lessThanEqual',['../a00917.html#ga3ee1ffe56e5428f659c51a5bfd67ab33',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['levels_1087',['levels',['../a00983.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], + ['lineargradient_1088',['linearGradient',['../a00945.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], + ['linearinterpolation_1089',['linearInterpolation',['../a00936.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], + ['linearrand_1090',['linearRand',['../a00918.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00918.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], + ['lmaxnorm_1091',['lMaxNorm',['../a00962.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], + ['ln_5fln_5ftwo_1092',['ln_ln_two',['../a00908.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], + ['ln_5ften_1093',['ln_ten',['../a00908.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], + ['ln_5ftwo_1094',['ln_two',['../a00908.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], + ['log_1095',['log',['../a00813.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00864.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00952.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], + ['log2_1096',['log2',['../a00813.html#ga5a5bd81210e6b0c0c6038f637a8185e3',1,'glm']]], + ['log_5fbase_2ehpp_1097',['log_base.hpp',['../a00656.html',1,'']]], + ['lookat_1098',['lookAt',['../a00837.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], + ['lookatlh_1099',['lookAtLH',['../a00837.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], + ['lookatrh_1100',['lookAtRH',['../a00837.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], + ['lowestbitvalue_1101',['lowestBitValue',['../a00927.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], + ['lowp_5fbvec1_1102',['lowp_bvec1',['../a00876.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], + ['lowp_5fbvec2_1103',['lowp_bvec2',['../a00900.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], + ['lowp_5fbvec3_1104',['lowp_bvec3',['../a00900.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], + ['lowp_5fbvec4_1105',['lowp_bvec4',['../a00900.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], + ['lowp_5fddualquat_1106',['lowp_ddualquat',['../a00935.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], + ['lowp_5fdmat2_1107',['lowp_dmat2',['../a00902.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], + ['lowp_5fdmat2x2_1108',['lowp_dmat2x2',['../a00902.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], + ['lowp_5fdmat2x3_1109',['lowp_dmat2x3',['../a00902.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], + ['lowp_5fdmat2x4_1110',['lowp_dmat2x4',['../a00902.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], + ['lowp_5fdmat3_1111',['lowp_dmat3',['../a00902.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], + ['lowp_5fdmat3x2_1112',['lowp_dmat3x2',['../a00902.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], + ['lowp_5fdmat3x3_1113',['lowp_dmat3x3',['../a00902.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], + ['lowp_5fdmat3x4_1114',['lowp_dmat3x4',['../a00902.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], + ['lowp_5fdmat4_1115',['lowp_dmat4',['../a00902.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], + ['lowp_5fdmat4x2_1116',['lowp_dmat4x2',['../a00902.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], + ['lowp_5fdmat4x3_1117',['lowp_dmat4x3',['../a00902.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], + ['lowp_5fdmat4x4_1118',['lowp_dmat4x4',['../a00902.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], + ['lowp_5fdquat_1119',['lowp_dquat',['../a00858.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], + ['lowp_5fdualquat_1120',['lowp_dualquat',['../a00935.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], + ['lowp_5fdvec1_1121',['lowp_dvec1',['../a00879.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], + ['lowp_5fdvec2_1122',['lowp_dvec2',['../a00900.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], + ['lowp_5fdvec3_1123',['lowp_dvec3',['../a00900.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], + ['lowp_5fdvec4_1124',['lowp_dvec4',['../a00900.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], + ['lowp_5ff32_1125',['lowp_f32',['../a00922.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], + ['lowp_5ff32mat2_1126',['lowp_f32mat2',['../a00922.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], + ['lowp_5ff32mat2x2_1127',['lowp_f32mat2x2',['../a00922.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], + ['lowp_5ff32mat2x3_1128',['lowp_f32mat2x3',['../a00922.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], + ['lowp_5ff32mat2x4_1129',['lowp_f32mat2x4',['../a00922.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], + ['lowp_5ff32mat3_1130',['lowp_f32mat3',['../a00922.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], + ['lowp_5ff32mat3x2_1131',['lowp_f32mat3x2',['../a00922.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], + ['lowp_5ff32mat3x3_1132',['lowp_f32mat3x3',['../a00922.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], + ['lowp_5ff32mat3x4_1133',['lowp_f32mat3x4',['../a00922.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], + ['lowp_5ff32mat4_1134',['lowp_f32mat4',['../a00922.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], + ['lowp_5ff32mat4x2_1135',['lowp_f32mat4x2',['../a00922.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], + ['lowp_5ff32mat4x3_1136',['lowp_f32mat4x3',['../a00922.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], + ['lowp_5ff32mat4x4_1137',['lowp_f32mat4x4',['../a00922.html#ga4143d129898f91545948c46859adce44',1,'glm']]], + ['lowp_5ff32quat_1138',['lowp_f32quat',['../a00922.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], + ['lowp_5ff32vec1_1139',['lowp_f32vec1',['../a00922.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], + ['lowp_5ff32vec2_1140',['lowp_f32vec2',['../a00922.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], + ['lowp_5ff32vec3_1141',['lowp_f32vec3',['../a00922.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], + ['lowp_5ff32vec4_1142',['lowp_f32vec4',['../a00922.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], + ['lowp_5ff64_1143',['lowp_f64',['../a00922.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], + ['lowp_5ff64mat2_1144',['lowp_f64mat2',['../a00922.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], + ['lowp_5ff64mat2x2_1145',['lowp_f64mat2x2',['../a00922.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], + ['lowp_5ff64mat2x3_1146',['lowp_f64mat2x3',['../a00922.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], + ['lowp_5ff64mat2x4_1147',['lowp_f64mat2x4',['../a00922.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], + ['lowp_5ff64mat3_1148',['lowp_f64mat3',['../a00922.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], + ['lowp_5ff64mat3x2_1149',['lowp_f64mat3x2',['../a00922.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], + ['lowp_5ff64mat3x3_1150',['lowp_f64mat3x3',['../a00922.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], + ['lowp_5ff64mat3x4_1151',['lowp_f64mat3x4',['../a00922.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], + ['lowp_5ff64mat4_1152',['lowp_f64mat4',['../a00922.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], + ['lowp_5ff64mat4x2_1153',['lowp_f64mat4x2',['../a00922.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], + ['lowp_5ff64mat4x3_1154',['lowp_f64mat4x3',['../a00922.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], + ['lowp_5ff64mat4x4_1155',['lowp_f64mat4x4',['../a00922.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], + ['lowp_5ff64quat_1156',['lowp_f64quat',['../a00922.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], + ['lowp_5ff64vec1_1157',['lowp_f64vec1',['../a00922.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], + ['lowp_5ff64vec2_1158',['lowp_f64vec2',['../a00922.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], + ['lowp_5ff64vec3_1159',['lowp_f64vec3',['../a00922.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], + ['lowp_5ff64vec4_1160',['lowp_f64vec4',['../a00922.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], + ['lowp_5ffdualquat_1161',['lowp_fdualquat',['../a00935.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], + ['lowp_5ffloat32_1162',['lowp_float32',['../a00922.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], + ['lowp_5ffloat32_5ft_1163',['lowp_float32_t',['../a00922.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], + ['lowp_5ffloat64_1164',['lowp_float64',['../a00922.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], + ['lowp_5ffloat64_5ft_1165',['lowp_float64_t',['../a00922.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], + ['lowp_5ffmat2_1166',['lowp_fmat2',['../a00922.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], + ['lowp_5ffmat2x2_1167',['lowp_fmat2x2',['../a00922.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], + ['lowp_5ffmat2x3_1168',['lowp_fmat2x3',['../a00922.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], + ['lowp_5ffmat2x4_1169',['lowp_fmat2x4',['../a00922.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], + ['lowp_5ffmat3_1170',['lowp_fmat3',['../a00922.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], + ['lowp_5ffmat3x2_1171',['lowp_fmat3x2',['../a00922.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], + ['lowp_5ffmat3x3_1172',['lowp_fmat3x3',['../a00922.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], + ['lowp_5ffmat3x4_1173',['lowp_fmat3x4',['../a00922.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], + ['lowp_5ffmat4_1174',['lowp_fmat4',['../a00922.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], + ['lowp_5ffmat4x2_1175',['lowp_fmat4x2',['../a00922.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], + ['lowp_5ffmat4x3_1176',['lowp_fmat4x3',['../a00922.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], + ['lowp_5ffmat4x4_1177',['lowp_fmat4x4',['../a00922.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], + ['lowp_5ffvec1_1178',['lowp_fvec1',['../a00922.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], + ['lowp_5ffvec2_1179',['lowp_fvec2',['../a00922.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], + ['lowp_5ffvec3_1180',['lowp_fvec3',['../a00922.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], + ['lowp_5ffvec4_1181',['lowp_fvec4',['../a00922.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], + ['lowp_5fi16_1182',['lowp_i16',['../a00922.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], + ['lowp_5fi16vec1_1183',['lowp_i16vec1',['../a00922.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], + ['lowp_5fi16vec2_1184',['lowp_i16vec2',['../a00922.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], + ['lowp_5fi16vec3_1185',['lowp_i16vec3',['../a00922.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], + ['lowp_5fi16vec4_1186',['lowp_i16vec4',['../a00922.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], + ['lowp_5fi32_1187',['lowp_i32',['../a00922.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], + ['lowp_5fi32vec1_1188',['lowp_i32vec1',['../a00922.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], + ['lowp_5fi32vec2_1189',['lowp_i32vec2',['../a00922.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], + ['lowp_5fi32vec3_1190',['lowp_i32vec3',['../a00922.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], + ['lowp_5fi32vec4_1191',['lowp_i32vec4',['../a00922.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], + ['lowp_5fi64_1192',['lowp_i64',['../a00922.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], + ['lowp_5fi64vec1_1193',['lowp_i64vec1',['../a00922.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], + ['lowp_5fi64vec2_1194',['lowp_i64vec2',['../a00922.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], + ['lowp_5fi64vec3_1195',['lowp_i64vec3',['../a00922.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], + ['lowp_5fi64vec4_1196',['lowp_i64vec4',['../a00922.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], + ['lowp_5fi8_1197',['lowp_i8',['../a00922.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], + ['lowp_5fi8vec1_1198',['lowp_i8vec1',['../a00922.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], + ['lowp_5fi8vec2_1199',['lowp_i8vec2',['../a00922.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], + ['lowp_5fi8vec3_1200',['lowp_i8vec3',['../a00922.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], + ['lowp_5fi8vec4_1201',['lowp_i8vec4',['../a00922.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], + ['lowp_5fimat2_1202',['lowp_imat2',['../a00912.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], + ['lowp_5fimat2x2_1203',['lowp_imat2x2',['../a00912.html#ga1437ac5564f56cbce31a920f363e166b',1,'glm']]], + ['lowp_5fimat2x3_1204',['lowp_imat2x3',['../a00912.html#ga8ac369996a5362cdf1abf8c36e3172f3',1,'glm']]], + ['lowp_5fimat2x4_1205',['lowp_imat2x4',['../a00912.html#ga6fe559c2ca940c01b91cf8c1de37c026',1,'glm']]], + ['lowp_5fimat3_1206',['lowp_imat3',['../a00912.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], + ['lowp_5fimat3x2_1207',['lowp_imat3x2',['../a00912.html#gac59ceadfa1b442c50784b5e16523d1a1',1,'glm']]], + ['lowp_5fimat3x3_1208',['lowp_imat3x3',['../a00912.html#gaedb738acb8400e3dd8ab0ea6ee3a60cb',1,'glm']]], + ['lowp_5fimat3x4_1209',['lowp_imat3x4',['../a00912.html#ga05c27e87f62296a72f96d3cc4d9b3b9e',1,'glm']]], + ['lowp_5fimat4_1210',['lowp_imat4',['../a00912.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], + ['lowp_5fimat4x2_1211',['lowp_imat4x2',['../a00912.html#ga838ff669fc2f7693f34356481603815a',1,'glm']]], + ['lowp_5fimat4x3_1212',['lowp_imat4x3',['../a00912.html#gaf3951f4c614e337fcd66b7bd43c688fb',1,'glm']]], + ['lowp_5fimat4x4_1213',['lowp_imat4x4',['../a00912.html#gadb109b0a3ddb1471ddff260980eace7d',1,'glm']]], + ['lowp_5fint16_1214',['lowp_int16',['../a00922.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], + ['lowp_5fint16_5ft_1215',['lowp_int16_t',['../a00922.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], + ['lowp_5fint32_1216',['lowp_int32',['../a00922.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], + ['lowp_5fint32_5ft_1217',['lowp_int32_t',['../a00922.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], + ['lowp_5fint64_1218',['lowp_int64',['../a00922.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], + ['lowp_5fint64_5ft_1219',['lowp_int64_t',['../a00922.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], + ['lowp_5fint8_1220',['lowp_int8',['../a00922.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], + ['lowp_5fint8_5ft_1221',['lowp_int8_t',['../a00922.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], + ['lowp_5fivec1_1222',['lowp_ivec1',['../a00922.html#ga68a0c853c31c372ee8e41358810b0c17',1,'glm']]], + ['lowp_5fivec2_1223',['lowp_ivec2',['../a00922.html#gaf6e144ceb74bc745aee2d2acaf19b1fd',1,'glm']]], + ['lowp_5fivec3_1224',['lowp_ivec3',['../a00922.html#ga0b0ead399b82f280988acb3b8c3f9995',1,'glm']]], + ['lowp_5fivec4_1225',['lowp_ivec4',['../a00922.html#gaec9094fb1d7d627a1410f3a10330df6d',1,'glm']]], + ['lowp_5fmat2_1226',['lowp_mat2',['../a00902.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], + ['lowp_5fmat2x2_1227',['lowp_mat2x2',['../a00902.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], + ['lowp_5fmat2x3_1228',['lowp_mat2x3',['../a00902.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], + ['lowp_5fmat2x4_1229',['lowp_mat2x4',['../a00902.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], + ['lowp_5fmat3_1230',['lowp_mat3',['../a00902.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], + ['lowp_5fmat3x2_1231',['lowp_mat3x2',['../a00902.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], + ['lowp_5fmat3x3_1232',['lowp_mat3x3',['../a00902.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], + ['lowp_5fmat3x4_1233',['lowp_mat3x4',['../a00902.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], + ['lowp_5fmat4_1234',['lowp_mat4',['../a00902.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], + ['lowp_5fmat4x2_1235',['lowp_mat4x2',['../a00902.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], + ['lowp_5fmat4x3_1236',['lowp_mat4x3',['../a00902.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], + ['lowp_5fmat4x4_1237',['lowp_mat4x4',['../a00902.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], + ['lowp_5fquat_1238',['lowp_quat',['../a00861.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], + ['lowp_5fu16_1239',['lowp_u16',['../a00922.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], + ['lowp_5fu16vec1_1240',['lowp_u16vec1',['../a00922.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], + ['lowp_5fu16vec2_1241',['lowp_u16vec2',['../a00922.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], + ['lowp_5fu16vec3_1242',['lowp_u16vec3',['../a00922.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], + ['lowp_5fu16vec4_1243',['lowp_u16vec4',['../a00922.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], + ['lowp_5fu32_1244',['lowp_u32',['../a00922.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], + ['lowp_5fu32vec1_1245',['lowp_u32vec1',['../a00922.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], + ['lowp_5fu32vec2_1246',['lowp_u32vec2',['../a00922.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], + ['lowp_5fu32vec3_1247',['lowp_u32vec3',['../a00922.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], + ['lowp_5fu32vec4_1248',['lowp_u32vec4',['../a00922.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], + ['lowp_5fu64_1249',['lowp_u64',['../a00922.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], + ['lowp_5fu64vec1_1250',['lowp_u64vec1',['../a00922.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], + ['lowp_5fu64vec2_1251',['lowp_u64vec2',['../a00922.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], + ['lowp_5fu64vec3_1252',['lowp_u64vec3',['../a00922.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], + ['lowp_5fu64vec4_1253',['lowp_u64vec4',['../a00922.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], + ['lowp_5fu8_1254',['lowp_u8',['../a00922.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], + ['lowp_5fu8vec1_1255',['lowp_u8vec1',['../a00922.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], + ['lowp_5fu8vec2_1256',['lowp_u8vec2',['../a00922.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], + ['lowp_5fu8vec3_1257',['lowp_u8vec3',['../a00922.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], + ['lowp_5fu8vec4_1258',['lowp_u8vec4',['../a00922.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], + ['lowp_5fuint16_1259',['lowp_uint16',['../a00922.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], + ['lowp_5fuint16_5ft_1260',['lowp_uint16_t',['../a00922.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], + ['lowp_5fuint32_1261',['lowp_uint32',['../a00922.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], + ['lowp_5fuint32_5ft_1262',['lowp_uint32_t',['../a00922.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], + ['lowp_5fuint64_1263',['lowp_uint64',['../a00922.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], + ['lowp_5fuint64_5ft_1264',['lowp_uint64_t',['../a00922.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], + ['lowp_5fuint8_1265',['lowp_uint8',['../a00922.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], + ['lowp_5fuint8_5ft_1266',['lowp_uint8_t',['../a00922.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], + ['lowp_5fumat2_1267',['lowp_umat2',['../a00912.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], + ['lowp_5fumat2x2_1268',['lowp_umat2x2',['../a00912.html#gaa0e5a396da00c84e9d25666f83249bd4',1,'glm']]], + ['lowp_5fumat2x3_1269',['lowp_umat2x3',['../a00912.html#ga85ee1aa570068452f193970783ff2f4c',1,'glm']]], + ['lowp_5fumat2x4_1270',['lowp_umat2x4',['../a00912.html#ga23d07feb07f73d74a2f1e332869f1607',1,'glm']]], + ['lowp_5fumat3_1271',['lowp_umat3',['../a00912.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], + ['lowp_5fumat3x2_1272',['lowp_umat3x2',['../a00912.html#gafdc099cf3533b3fcdedd8547afa3670c',1,'glm']]], + ['lowp_5fumat3x3_1273',['lowp_umat3x3',['../a00912.html#gac02216341c63cd454968a81d4859bff2',1,'glm']]], + ['lowp_5fumat3x4_1274',['lowp_umat3x4',['../a00912.html#ga8a0ee76f801a451ff1c4c55c97c6204b',1,'glm']]], + ['lowp_5fumat4_1275',['lowp_umat4',['../a00912.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], + ['lowp_5fumat4x2_1276',['lowp_umat4x2',['../a00912.html#ga25ec0b4a1dfcd2b9e37a5026a85e04a1',1,'glm']]], + ['lowp_5fumat4x3_1277',['lowp_umat4x3',['../a00912.html#ga0d7cf5fef436d7368b4a3d9bc3284549',1,'glm']]], + ['lowp_5fumat4x4_1278',['lowp_umat4x4',['../a00912.html#ga9dd0a988cce4208c4b3d43d50af7d056',1,'glm']]], + ['lowp_5fuvec1_1279',['lowp_uvec1',['../a00922.html#ga02cec5a492d6603014b6138e4ec876de',1,'glm']]], + ['lowp_5fuvec2_1280',['lowp_uvec2',['../a00922.html#ga87227fe1e39b5b03ab9a163d1984965e',1,'glm']]], + ['lowp_5fuvec3_1281',['lowp_uvec3',['../a00922.html#ga19866dd9e66f20301de4d084f0063c59',1,'glm']]], + ['lowp_5fuvec4_1282',['lowp_uvec4',['../a00922.html#ga247ee8f72db6d7cbc822721822d57e28',1,'glm']]], + ['lowp_5fvec1_1283',['lowp_vec1',['../a00881.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], + ['lowp_5fvec2_1284',['lowp_vec2',['../a00900.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], + ['lowp_5fvec3_1285',['lowp_vec3',['../a00900.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], + ['lowp_5fvec4_1286',['lowp_vec4',['../a00900.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]], + ['luminosity_1287',['luminosity',['../a00930.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], + ['lxnorm_1288',['lxNorm',['../a00962.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00962.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] +]; diff --git a/include/glm/doc/api/search/all_a.html b/include/glm/doc/api/search/all_a.html new file mode 100644 index 0000000..0ce816b --- /dev/null +++ b/include/glm/doc/api/search/all_a.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_a.js b/include/glm/doc/api/search/all_a.js new file mode 100644 index 0000000..5967d12 --- /dev/null +++ b/include/glm/doc/api/search/all_a.js @@ -0,0 +1,330 @@ +var searchData= +[ + ['matrix_20functions_1289',['Matrix functions',['../a00993.html',1,'']]], + ['matrix_20types_1290',['Matrix types',['../a00901.html',1,'']]], + ['matrix_20types_20with_20precision_20qualifiers_1291',['Matrix types with precision qualifiers',['../a00902.html',1,'']]], + ['make_5fmat2_1292',['make_mat2',['../a00923.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], + ['make_5fmat2x2_1293',['make_mat2x2',['../a00923.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], + ['make_5fmat2x3_1294',['make_mat2x3',['../a00923.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], + ['make_5fmat2x4_1295',['make_mat2x4',['../a00923.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], + ['make_5fmat3_1296',['make_mat3',['../a00923.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], + ['make_5fmat3x2_1297',['make_mat3x2',['../a00923.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], + ['make_5fmat3x3_1298',['make_mat3x3',['../a00923.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], + ['make_5fmat3x4_1299',['make_mat3x4',['../a00923.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], + ['make_5fmat4_1300',['make_mat4',['../a00923.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], + ['make_5fmat4x2_1301',['make_mat4x2',['../a00923.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], + ['make_5fmat4x3_1302',['make_mat4x3',['../a00923.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], + ['make_5fmat4x4_1303',['make_mat4x4',['../a00923.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], + ['make_5fquat_1304',['make_quat',['../a00923.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], + ['make_5fvec1_1305',['make_vec1',['../a00923.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00923.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00923.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00923.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], + ['make_5fvec2_1306',['make_vec2',['../a00923.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00923.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00923.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00923.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00923.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], + ['make_5fvec3_1307',['make_vec3',['../a00923.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00923.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00923.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00923.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00923.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], + ['make_5fvec4_1308',['make_vec4',['../a00923.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00923.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00923.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00923.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00923.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], + ['mask_1309',['mask',['../a00906.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00906.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], + ['mat2_1310',['mat2',['../a00901.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], + ['mat2x2_1311',['mat2x2',['../a00901.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], + ['mat2x2_2ehpp_1312',['mat2x2.hpp',['../a00767.html',1,'']]], + ['mat2x3_1313',['mat2x3',['../a00901.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], + ['mat2x3_2ehpp_1314',['mat2x3.hpp',['../a00770.html',1,'']]], + ['mat2x4_1315',['mat2x4',['../a00901.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], + ['mat2x4_2ehpp_1316',['mat2x4.hpp',['../a00773.html',1,'']]], + ['mat2x4_5fcast_1317',['mat2x4_cast',['../a00935.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], + ['mat3_1318',['mat3',['../a00901.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], + ['mat3_5fcast_1319',['mat3_cast',['../a00917.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], + ['mat3x2_1320',['mat3x2',['../a00901.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], + ['mat3x2_2ehpp_1321',['mat3x2.hpp',['../a00776.html',1,'']]], + ['mat3x3_1322',['mat3x3',['../a00901.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], + ['mat3x3_2ehpp_1323',['mat3x3.hpp',['../a00779.html',1,'']]], + ['mat3x4_1324',['mat3x4',['../a00901.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], + ['mat3x4_2ehpp_1325',['mat3x4.hpp',['../a00782.html',1,'']]], + ['mat3x4_5fcast_1326',['mat3x4_cast',['../a00935.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], + ['mat4_1327',['mat4',['../a00901.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], + ['mat4_5fcast_1328',['mat4_cast',['../a00917.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], + ['mat4x2_1329',['mat4x2',['../a00901.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], + ['mat4x2_2ehpp_1330',['mat4x2.hpp',['../a00785.html',1,'']]], + ['mat4x3_1331',['mat4x3',['../a00901.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], + ['mat4x3_2ehpp_1332',['mat4x3.hpp',['../a00788.html',1,'']]], + ['mat4x4_1333',['mat4x4',['../a00901.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], + ['mat4x4_2ehpp_1334',['mat4x4.hpp',['../a00791.html',1,'']]], + ['matrix_2ehpp_1335',['matrix.hpp',['../a00794.html',1,'']]], + ['matrix_5faccess_2ehpp_1336',['matrix_access.hpp',['../a00548.html',1,'']]], + ['matrix_5fclip_5fspace_2ehpp_1337',['matrix_clip_space.hpp',['../a00092.html',1,'']]], + ['matrix_5fcommon_2ehpp_1338',['matrix_common.hpp',['../a00095.html',1,'']]], + ['matrix_5fcross_5fproduct_2ehpp_1339',['matrix_cross_product.hpp',['../a00659.html',1,'']]], + ['matrix_5fdecompose_2ehpp_1340',['matrix_decompose.hpp',['../a00662.html',1,'']]], + ['matrix_5fdouble2x2_2ehpp_1341',['matrix_double2x2.hpp',['../a00098.html',1,'']]], + ['matrix_5fdouble2x2_5fprecision_2ehpp_1342',['matrix_double2x2_precision.hpp',['../a00101.html',1,'']]], + ['matrix_5fdouble2x3_2ehpp_1343',['matrix_double2x3.hpp',['../a00104.html',1,'']]], + ['matrix_5fdouble2x3_5fprecision_2ehpp_1344',['matrix_double2x3_precision.hpp',['../a00107.html',1,'']]], + ['matrix_5fdouble2x4_2ehpp_1345',['matrix_double2x4.hpp',['../a00110.html',1,'']]], + ['matrix_5fdouble2x4_5fprecision_2ehpp_1346',['matrix_double2x4_precision.hpp',['../a00113.html',1,'']]], + ['matrix_5fdouble3x2_2ehpp_1347',['matrix_double3x2.hpp',['../a00116.html',1,'']]], + ['matrix_5fdouble3x2_5fprecision_2ehpp_1348',['matrix_double3x2_precision.hpp',['../a00119.html',1,'']]], + ['matrix_5fdouble3x3_2ehpp_1349',['matrix_double3x3.hpp',['../a00122.html',1,'']]], + ['matrix_5fdouble3x3_5fprecision_2ehpp_1350',['matrix_double3x3_precision.hpp',['../a00125.html',1,'']]], + ['matrix_5fdouble3x4_2ehpp_1351',['matrix_double3x4.hpp',['../a00128.html',1,'']]], + ['matrix_5fdouble3x4_5fprecision_2ehpp_1352',['matrix_double3x4_precision.hpp',['../a00131.html',1,'']]], + ['matrix_5fdouble4x2_2ehpp_1353',['matrix_double4x2.hpp',['../a00134.html',1,'']]], + ['matrix_5fdouble4x2_5fprecision_2ehpp_1354',['matrix_double4x2_precision.hpp',['../a00137.html',1,'']]], + ['matrix_5fdouble4x3_2ehpp_1355',['matrix_double4x3.hpp',['../a00140.html',1,'']]], + ['matrix_5fdouble4x3_5fprecision_2ehpp_1356',['matrix_double4x3_precision.hpp',['../a00143.html',1,'']]], + ['matrix_5fdouble4x4_2ehpp_1357',['matrix_double4x4.hpp',['../a00146.html',1,'']]], + ['matrix_5fdouble4x4_5fprecision_2ehpp_1358',['matrix_double4x4_precision.hpp',['../a00149.html',1,'']]], + ['matrix_5ffactorisation_2ehpp_1359',['matrix_factorisation.hpp',['../a00665.html',1,'']]], + ['matrix_5ffloat2x2_2ehpp_1360',['matrix_float2x2.hpp',['../a00152.html',1,'']]], + ['matrix_5ffloat2x2_5fprecision_2ehpp_1361',['matrix_float2x2_precision.hpp',['../a00155.html',1,'']]], + ['matrix_5ffloat2x3_2ehpp_1362',['matrix_float2x3.hpp',['../a00158.html',1,'']]], + ['matrix_5ffloat2x3_5fprecision_2ehpp_1363',['matrix_float2x3_precision.hpp',['../a00161.html',1,'']]], + ['matrix_5ffloat2x4_2ehpp_1364',['matrix_float2x4.hpp',['../a00164.html',1,'']]], + ['matrix_5ffloat2x4_5fprecision_2ehpp_1365',['matrix_float2x4_precision.hpp',['../a00167.html',1,'']]], + ['matrix_5ffloat3x2_2ehpp_1366',['matrix_float3x2.hpp',['../a00170.html',1,'']]], + ['matrix_5ffloat3x2_5fprecision_2ehpp_1367',['matrix_float3x2_precision.hpp',['../a00173.html',1,'']]], + ['matrix_5ffloat3x3_2ehpp_1368',['matrix_float3x3.hpp',['../a00176.html',1,'']]], + ['matrix_5ffloat3x3_5fprecision_2ehpp_1369',['matrix_float3x3_precision.hpp',['../a00179.html',1,'']]], + ['matrix_5ffloat3x4_2ehpp_1370',['matrix_float3x4.hpp',['../a00182.html',1,'']]], + ['matrix_5ffloat3x4_5fprecision_2ehpp_1371',['matrix_float3x4_precision.hpp',['../a00185.html',1,'']]], + ['matrix_5ffloat4x2_2ehpp_1372',['matrix_float4x2.hpp',['../a00188.html',1,'']]], + ['matrix_5ffloat4x3_2ehpp_1373',['matrix_float4x3.hpp',['../a00194.html',1,'']]], + ['matrix_5ffloat4x3_5fprecision_2ehpp_1374',['matrix_float4x3_precision.hpp',['../a00197.html',1,'']]], + ['matrix_5ffloat4x4_2ehpp_1375',['matrix_float4x4.hpp',['../a00200.html',1,'']]], + ['matrix_5ffloat4x4_5fprecision_2ehpp_1376',['matrix_float4x4_precision.hpp',['../a00203.html',1,'']]], + ['matrix_5fint2x2_2ehpp_1377',['matrix_int2x2.hpp',['../a00206.html',1,'']]], + ['matrix_5fint2x2_5fsized_2ehpp_1378',['matrix_int2x2_sized.hpp',['../a00209.html',1,'']]], + ['matrix_5fint2x3_2ehpp_1379',['matrix_int2x3.hpp',['../a00212.html',1,'']]], + ['matrix_5fint2x3_5fsized_2ehpp_1380',['matrix_int2x3_sized.hpp',['../a00215.html',1,'']]], + ['matrix_5fint2x4_2ehpp_1381',['matrix_int2x4.hpp',['../a00218.html',1,'']]], + ['matrix_5fint2x4_5fsized_2ehpp_1382',['matrix_int2x4_sized.hpp',['../a00221.html',1,'']]], + ['matrix_5fint3x2_2ehpp_1383',['matrix_int3x2.hpp',['../a00224.html',1,'']]], + ['matrix_5fint3x2_5fsized_2ehpp_1384',['matrix_int3x2_sized.hpp',['../a00227.html',1,'']]], + ['matrix_5fint3x3_2ehpp_1385',['matrix_int3x3.hpp',['../a00230.html',1,'']]], + ['matrix_5fint3x3_5fsized_2ehpp_1386',['matrix_int3x3_sized.hpp',['../a00233.html',1,'']]], + ['matrix_5fint3x4_2ehpp_1387',['matrix_int3x4.hpp',['../a00236.html',1,'']]], + ['matrix_5fint4x2_2ehpp_1388',['matrix_int4x2.hpp',['../a00242.html',1,'']]], + ['matrix_5fint4x2_5fsized_2ehpp_1389',['matrix_int4x2_sized.hpp',['../a00245.html',1,'']]], + ['matrix_5fint4x3_2ehpp_1390',['matrix_int4x3.hpp',['../a00248.html',1,'']]], + ['matrix_5fint4x3_5fsized_2ehpp_1391',['matrix_int4x3_sized.hpp',['../a00251.html',1,'']]], + ['matrix_5fint4x4_2ehpp_1392',['matrix_int4x4.hpp',['../a00254.html',1,'']]], + ['matrix_5fint4x4_5fsized_2ehpp_1393',['matrix_int4x4_sized.hpp',['../a00257.html',1,'']]], + ['matrix_5finterpolation_2ehpp_1394',['matrix_interpolation.hpp',['../a00668.html',1,'']]], + ['matrix_5finverse_2ehpp_1395',['matrix_inverse.hpp',['../a00551.html',1,'']]], + ['matrix_5fmajor_5fstorage_2ehpp_1396',['matrix_major_storage.hpp',['../a00671.html',1,'']]], + ['matrix_5foperation_2ehpp_1397',['matrix_operation.hpp',['../a00674.html',1,'']]], + ['matrix_5fprojection_2ehpp_1398',['matrix_projection.hpp',['../a00263.html',1,'']]], + ['matrix_5fquery_2ehpp_1399',['matrix_query.hpp',['../a00677.html',1,'']]], + ['matrix_5frelational_2ehpp_1400',['matrix_relational.hpp',['../a00266.html',1,'']]], + ['matrix_5ftransform_5f2d_2ehpp_1401',['matrix_transform_2d.hpp',['../a00680.html',1,'']]], + ['matrix_5fuint2x2_2ehpp_1402',['matrix_uint2x2.hpp',['../a00272.html',1,'']]], + ['matrix_5fuint2x2_5fsized_2ehpp_1403',['matrix_uint2x2_sized.hpp',['../a00275.html',1,'']]], + ['matrix_5fuint2x3_2ehpp_1404',['matrix_uint2x3.hpp',['../a00278.html',1,'']]], + ['matrix_5fuint2x3_5fsized_2ehpp_1405',['matrix_uint2x3_sized.hpp',['../a00281.html',1,'']]], + ['matrix_5fuint2x4_2ehpp_1406',['matrix_uint2x4.hpp',['../a00284.html',1,'']]], + ['matrix_5fuint2x4_5fsized_2ehpp_1407',['matrix_uint2x4_sized.hpp',['../a00287.html',1,'']]], + ['matrix_5fuint3x2_2ehpp_1408',['matrix_uint3x2.hpp',['../a00290.html',1,'']]], + ['matrix_5fuint3x2_5fsized_2ehpp_1409',['matrix_uint3x2_sized.hpp',['../a00293.html',1,'']]], + ['matrix_5fuint3x3_2ehpp_1410',['matrix_uint3x3.hpp',['../a00296.html',1,'']]], + ['matrix_5fuint3x3_5fsized_2ehpp_1411',['matrix_uint3x3_sized.hpp',['../a00299.html',1,'']]], + ['matrix_5fuint3x4_2ehpp_1412',['matrix_uint3x4.hpp',['../a00302.html',1,'']]], + ['matrix_5fuint4x2_2ehpp_1413',['matrix_uint4x2.hpp',['../a00308.html',1,'']]], + ['matrix_5fuint4x2_5fsized_2ehpp_1414',['matrix_uint4x2_sized.hpp',['../a00311.html',1,'']]], + ['matrix_5fuint4x3_2ehpp_1415',['matrix_uint4x3.hpp',['../a00314.html',1,'']]], + ['matrix_5fuint4x3_5fsized_2ehpp_1416',['matrix_uint4x3_sized.hpp',['../a00317.html',1,'']]], + ['matrix_5fuint4x4_2ehpp_1417',['matrix_uint4x4.hpp',['../a00320.html',1,'']]], + ['matrix_5fuint4x4_5fsized_2ehpp_1418',['matrix_uint4x4_sized.hpp',['../a00323.html',1,'']]], + ['matrixcompmult_1419',['matrixCompMult',['../a00834.html#ga514c5f14f88b22355731a992e683fc90',1,'glm']]], + ['matrixcross3_1420',['matrixCross3',['../a00953.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], + ['matrixcross4_1421',['matrixCross4',['../a00953.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], + ['max_1422',['max',['../a00812.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00812.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00812.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00866.html#gae7224c683ea72d2a6a395529b8c14a4c',1,'glm::max(T a, T b, T c)'],['../a00866.html#gae7fcb461017290d4a34e688fb9ae41ab',1,'glm::max(T a, T b, T c, T d)'],['../a00877.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00877.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00939.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00939.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00939.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00939.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00939.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00939.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], + ['mediump_5fbvec1_1423',['mediump_bvec1',['../a00876.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], + ['mediump_5fbvec2_1424',['mediump_bvec2',['../a00900.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], + ['mediump_5fbvec3_1425',['mediump_bvec3',['../a00900.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], + ['mediump_5fbvec4_1426',['mediump_bvec4',['../a00900.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], + ['mediump_5fddualquat_1427',['mediump_ddualquat',['../a00935.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], + ['mediump_5fdmat2_1428',['mediump_dmat2',['../a00902.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], + ['mediump_5fdmat2x2_1429',['mediump_dmat2x2',['../a00902.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], + ['mediump_5fdmat2x3_1430',['mediump_dmat2x3',['../a00902.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], + ['mediump_5fdmat2x4_1431',['mediump_dmat2x4',['../a00902.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], + ['mediump_5fdmat3_1432',['mediump_dmat3',['../a00902.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], + ['mediump_5fdmat3x2_1433',['mediump_dmat3x2',['../a00902.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], + ['mediump_5fdmat3x3_1434',['mediump_dmat3x3',['../a00902.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], + ['mediump_5fdmat3x4_1435',['mediump_dmat3x4',['../a00902.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], + ['mediump_5fdmat4_1436',['mediump_dmat4',['../a00902.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], + ['mediump_5fdmat4x2_1437',['mediump_dmat4x2',['../a00902.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], + ['mediump_5fdmat4x3_1438',['mediump_dmat4x3',['../a00902.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], + ['mediump_5fdmat4x4_1439',['mediump_dmat4x4',['../a00902.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], + ['mediump_5fdquat_1440',['mediump_dquat',['../a00858.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], + ['mediump_5fdualquat_1441',['mediump_dualquat',['../a00935.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], + ['mediump_5fdvec1_1442',['mediump_dvec1',['../a00879.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], + ['mediump_5fdvec2_1443',['mediump_dvec2',['../a00900.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], + ['mediump_5fdvec3_1444',['mediump_dvec3',['../a00900.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], + ['mediump_5fdvec4_1445',['mediump_dvec4',['../a00900.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], + ['mediump_5ff32_1446',['mediump_f32',['../a00922.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], + ['mediump_5ff32mat2_1447',['mediump_f32mat2',['../a00922.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], + ['mediump_5ff32mat2x2_1448',['mediump_f32mat2x2',['../a00922.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], + ['mediump_5ff32mat2x3_1449',['mediump_f32mat2x3',['../a00922.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], + ['mediump_5ff32mat2x4_1450',['mediump_f32mat2x4',['../a00922.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], + ['mediump_5ff32mat3_1451',['mediump_f32mat3',['../a00922.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], + ['mediump_5ff32mat3x2_1452',['mediump_f32mat3x2',['../a00922.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], + ['mediump_5ff32mat3x3_1453',['mediump_f32mat3x3',['../a00922.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], + ['mediump_5ff32mat3x4_1454',['mediump_f32mat3x4',['../a00922.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], + ['mediump_5ff32mat4_1455',['mediump_f32mat4',['../a00922.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], + ['mediump_5ff32mat4x2_1456',['mediump_f32mat4x2',['../a00922.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], + ['mediump_5ff32mat4x3_1457',['mediump_f32mat4x3',['../a00922.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], + ['mediump_5ff32mat4x4_1458',['mediump_f32mat4x4',['../a00922.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], + ['mediump_5ff32quat_1459',['mediump_f32quat',['../a00922.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], + ['mediump_5ff32vec1_1460',['mediump_f32vec1',['../a00922.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], + ['mediump_5ff32vec2_1461',['mediump_f32vec2',['../a00922.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], + ['mediump_5ff32vec3_1462',['mediump_f32vec3',['../a00922.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], + ['mediump_5ff32vec4_1463',['mediump_f32vec4',['../a00922.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], + ['mediump_5ff64_1464',['mediump_f64',['../a00922.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], + ['mediump_5ff64mat2_1465',['mediump_f64mat2',['../a00922.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], + ['mediump_5ff64mat2x2_1466',['mediump_f64mat2x2',['../a00922.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], + ['mediump_5ff64mat2x3_1467',['mediump_f64mat2x3',['../a00922.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], + ['mediump_5ff64mat2x4_1468',['mediump_f64mat2x4',['../a00922.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], + ['mediump_5ff64mat3_1469',['mediump_f64mat3',['../a00922.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], + ['mediump_5ff64mat3x2_1470',['mediump_f64mat3x2',['../a00922.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], + ['mediump_5ff64mat3x3_1471',['mediump_f64mat3x3',['../a00922.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], + ['mediump_5ff64mat3x4_1472',['mediump_f64mat3x4',['../a00922.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], + ['mediump_5ff64mat4_1473',['mediump_f64mat4',['../a00922.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], + ['mediump_5ff64mat4x2_1474',['mediump_f64mat4x2',['../a00922.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], + ['mediump_5ff64mat4x3_1475',['mediump_f64mat4x3',['../a00922.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], + ['mediump_5ff64mat4x4_1476',['mediump_f64mat4x4',['../a00922.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], + ['mediump_5ff64quat_1477',['mediump_f64quat',['../a00922.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], + ['mediump_5ff64vec1_1478',['mediump_f64vec1',['../a00922.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], + ['mediump_5ff64vec2_1479',['mediump_f64vec2',['../a00922.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], + ['mediump_5ff64vec3_1480',['mediump_f64vec3',['../a00922.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], + ['mediump_5ff64vec4_1481',['mediump_f64vec4',['../a00922.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], + ['mediump_5ffdualquat_1482',['mediump_fdualquat',['../a00935.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], + ['mediump_5ffloat32_1483',['mediump_float32',['../a00922.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], + ['mediump_5ffloat32_5ft_1484',['mediump_float32_t',['../a00922.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], + ['mediump_5ffloat64_1485',['mediump_float64',['../a00922.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], + ['mediump_5ffloat64_5ft_1486',['mediump_float64_t',['../a00922.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], + ['mediump_5ffmat2_1487',['mediump_fmat2',['../a00922.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], + ['mediump_5ffmat2x2_1488',['mediump_fmat2x2',['../a00922.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], + ['mediump_5ffmat2x3_1489',['mediump_fmat2x3',['../a00922.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], + ['mediump_5ffmat2x4_1490',['mediump_fmat2x4',['../a00922.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], + ['mediump_5ffmat3_1491',['mediump_fmat3',['../a00922.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], + ['mediump_5ffmat3x2_1492',['mediump_fmat3x2',['../a00922.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], + ['mediump_5ffmat3x3_1493',['mediump_fmat3x3',['../a00922.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], + ['mediump_5ffmat3x4_1494',['mediump_fmat3x4',['../a00922.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], + ['mediump_5ffmat4_1495',['mediump_fmat4',['../a00922.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], + ['mediump_5ffmat4x2_1496',['mediump_fmat4x2',['../a00922.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], + ['mediump_5ffmat4x3_1497',['mediump_fmat4x3',['../a00922.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], + ['mediump_5ffmat4x4_1498',['mediump_fmat4x4',['../a00922.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], + ['mediump_5ffvec1_1499',['mediump_fvec1',['../a00922.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], + ['mediump_5ffvec2_1500',['mediump_fvec2',['../a00922.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], + ['mediump_5ffvec3_1501',['mediump_fvec3',['../a00922.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], + ['mediump_5ffvec4_1502',['mediump_fvec4',['../a00922.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], + ['mediump_5fi16_1503',['mediump_i16',['../a00922.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], + ['mediump_5fi16vec1_1504',['mediump_i16vec1',['../a00922.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], + ['mediump_5fi16vec2_1505',['mediump_i16vec2',['../a00922.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], + ['mediump_5fi16vec3_1506',['mediump_i16vec3',['../a00922.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], + ['mediump_5fi16vec4_1507',['mediump_i16vec4',['../a00922.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], + ['mediump_5fi32_1508',['mediump_i32',['../a00922.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], + ['mediump_5fi32vec1_1509',['mediump_i32vec1',['../a00922.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], + ['mediump_5fi32vec2_1510',['mediump_i32vec2',['../a00922.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], + ['mediump_5fi32vec3_1511',['mediump_i32vec3',['../a00922.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], + ['mediump_5fi32vec4_1512',['mediump_i32vec4',['../a00922.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], + ['mediump_5fi64_1513',['mediump_i64',['../a00922.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], + ['mediump_5fi64vec1_1514',['mediump_i64vec1',['../a00922.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], + ['mediump_5fi64vec2_1515',['mediump_i64vec2',['../a00922.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], + ['mediump_5fi64vec3_1516',['mediump_i64vec3',['../a00922.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], + ['mediump_5fi64vec4_1517',['mediump_i64vec4',['../a00922.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], + ['mediump_5fi8_1518',['mediump_i8',['../a00922.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], + ['mediump_5fi8vec1_1519',['mediump_i8vec1',['../a00922.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], + ['mediump_5fi8vec2_1520',['mediump_i8vec2',['../a00922.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], + ['mediump_5fi8vec3_1521',['mediump_i8vec3',['../a00922.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], + ['mediump_5fi8vec4_1522',['mediump_i8vec4',['../a00922.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], + ['mediump_5fimat2_1523',['mediump_imat2',['../a00912.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], + ['mediump_5fimat2x2_1524',['mediump_imat2x2',['../a00912.html#gaaa39fcf19d3b30ace619e1cd813be8c1',1,'glm']]], + ['mediump_5fimat2x3_1525',['mediump_imat2x3',['../a00912.html#gace3b4f5065f6e6793db8179161bc0c15',1,'glm']]], + ['mediump_5fimat2x4_1526',['mediump_imat2x4',['../a00912.html#gabf8b6cc6c5250d43e57c6a9d419d11d0',1,'glm']]], + ['mediump_5fimat3_1527',['mediump_imat3',['../a00912.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], + ['mediump_5fimat3x2_1528',['mediump_imat3x2',['../a00912.html#ga4a85a15738d7a789f81a0ac8d2147c5f',1,'glm']]], + ['mediump_5fimat3x3_1529',['mediump_imat3x3',['../a00912.html#gad3d76765685183bab97e9a9cf91ea26e',1,'glm']]], + ['mediump_5fimat3x4_1530',['mediump_imat3x4',['../a00912.html#ga3cef6f8fd891e0e8a44aabafb2df1d58',1,'glm']]], + ['mediump_5fimat4_1531',['mediump_imat4',['../a00912.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], + ['mediump_5fimat4x2_1532',['mediump_imat4x2',['../a00912.html#ga8254ea8195f5675afea4be98e64dd04d',1,'glm']]], + ['mediump_5fimat4x3_1533',['mediump_imat4x3',['../a00912.html#gad15630b8337c9becd8c3f4e9b901bce9',1,'glm']]], + ['mediump_5fimat4x4_1534',['mediump_imat4x4',['../a00912.html#ga93d485d0de7835c4679e2cced1b7f033',1,'glm']]], + ['mediump_5fint16_1535',['mediump_int16',['../a00922.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], + ['mediump_5fint16_5ft_1536',['mediump_int16_t',['../a00922.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], + ['mediump_5fint32_1537',['mediump_int32',['../a00922.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], + ['mediump_5fint32_5ft_1538',['mediump_int32_t',['../a00922.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], + ['mediump_5fint64_1539',['mediump_int64',['../a00922.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], + ['mediump_5fint64_5ft_1540',['mediump_int64_t',['../a00922.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], + ['mediump_5fint8_1541',['mediump_int8',['../a00922.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], + ['mediump_5fint8_5ft_1542',['mediump_int8_t',['../a00922.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], + ['mediump_5fivec1_1543',['mediump_ivec1',['../a00922.html#ga6fde13de973ad9ae82839389353f8529',1,'glm']]], + ['mediump_5fivec2_1544',['mediump_ivec2',['../a00922.html#gaf39bf0b097a5c16905c28a31766b7e27',1,'glm']]], + ['mediump_5fivec3_1545',['mediump_ivec3',['../a00922.html#gaebbb60a777cc21c3e63154c23b02817d',1,'glm']]], + ['mediump_5fivec4_1546',['mediump_ivec4',['../a00922.html#ga15c4b5e063630bef11347f98de373ed9',1,'glm']]], + ['mediump_5fmat2_1547',['mediump_mat2',['../a00902.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], + ['mediump_5fmat2x2_1548',['mediump_mat2x2',['../a00902.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], + ['mediump_5fmat2x3_1549',['mediump_mat2x3',['../a00902.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], + ['mediump_5fmat2x4_1550',['mediump_mat2x4',['../a00902.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], + ['mediump_5fmat3_1551',['mediump_mat3',['../a00902.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], + ['mediump_5fmat3x2_1552',['mediump_mat3x2',['../a00902.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], + ['mediump_5fmat3x3_1553',['mediump_mat3x3',['../a00902.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], + ['mediump_5fmat3x4_1554',['mediump_mat3x4',['../a00902.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], + ['mediump_5fmat4_1555',['mediump_mat4',['../a00902.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], + ['mediump_5fmat4x2_1556',['mediump_mat4x2',['../a00902.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], + ['mediump_5fmat4x3_1557',['mediump_mat4x3',['../a00902.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], + ['mediump_5fmat4x4_1558',['mediump_mat4x4',['../a00902.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], + ['mediump_5fquat_1559',['mediump_quat',['../a00861.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], + ['mediump_5fu16_1560',['mediump_u16',['../a00922.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], + ['mediump_5fu16vec1_1561',['mediump_u16vec1',['../a00922.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], + ['mediump_5fu16vec2_1562',['mediump_u16vec2',['../a00922.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], + ['mediump_5fu16vec3_1563',['mediump_u16vec3',['../a00922.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], + ['mediump_5fu16vec4_1564',['mediump_u16vec4',['../a00922.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], + ['mediump_5fu32_1565',['mediump_u32',['../a00922.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], + ['mediump_5fu32vec1_1566',['mediump_u32vec1',['../a00922.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], + ['mediump_5fu32vec2_1567',['mediump_u32vec2',['../a00922.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], + ['mediump_5fu32vec3_1568',['mediump_u32vec3',['../a00922.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], + ['mediump_5fu32vec4_1569',['mediump_u32vec4',['../a00922.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], + ['mediump_5fu64_1570',['mediump_u64',['../a00922.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], + ['mediump_5fu64vec1_1571',['mediump_u64vec1',['../a00922.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], + ['mediump_5fu64vec2_1572',['mediump_u64vec2',['../a00922.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], + ['mediump_5fu64vec3_1573',['mediump_u64vec3',['../a00922.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], + ['mediump_5fu64vec4_1574',['mediump_u64vec4',['../a00922.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], + ['mediump_5fu8_1575',['mediump_u8',['../a00922.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], + ['mediump_5fu8vec1_1576',['mediump_u8vec1',['../a00922.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], + ['mediump_5fu8vec2_1577',['mediump_u8vec2',['../a00922.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], + ['mediump_5fu8vec3_1578',['mediump_u8vec3',['../a00922.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], + ['mediump_5fu8vec4_1579',['mediump_u8vec4',['../a00922.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], + ['mediump_5fuint16_1580',['mediump_uint16',['../a00922.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], + ['mediump_5fuint16_5ft_1581',['mediump_uint16_t',['../a00922.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], + ['mediump_5fuint32_1582',['mediump_uint32',['../a00922.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], + ['mediump_5fuint32_5ft_1583',['mediump_uint32_t',['../a00922.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], + ['mediump_5fuint64_1584',['mediump_uint64',['../a00922.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], + ['mediump_5fuint64_5ft_1585',['mediump_uint64_t',['../a00922.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], + ['mediump_5fuint8_1586',['mediump_uint8',['../a00922.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], + ['mediump_5fuint8_5ft_1587',['mediump_uint8_t',['../a00922.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], + ['mediump_5fumat2_1588',['mediump_umat2',['../a00912.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], + ['mediump_5fumat2x2_1589',['mediump_umat2x2',['../a00912.html#ga124680e6605446ee2c5003afe6a3c5ad',1,'glm']]], + ['mediump_5fumat2x3_1590',['mediump_umat2x3',['../a00912.html#ga7fcb637b3a741d958930091049e93dc3',1,'glm']]], + ['mediump_5fumat2x4_1591',['mediump_umat2x4',['../a00912.html#ga02cf42c69be99ffd657d9e6f63c17bb5',1,'glm']]], + ['mediump_5fumat3_1592',['mediump_umat3',['../a00912.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], + ['mediump_5fumat3x2_1593',['mediump_umat3x2',['../a00912.html#gae83b65eb313187fe4bff3f1d20cf8443',1,'glm']]], + ['mediump_5fumat3x3_1594',['mediump_umat3x3',['../a00912.html#gac84034b2c48971dcf45194c87ef30da5',1,'glm']]], + ['mediump_5fumat3x4_1595',['mediump_umat3x4',['../a00912.html#gad7e5b8bb3bfe4d8db6980743e48a8281',1,'glm']]], + ['mediump_5fumat4_1596',['mediump_umat4',['../a00912.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], + ['mediump_5fumat4x2_1597',['mediump_umat4x2',['../a00912.html#gac47efafc2e8446b53245f1cf71ee302d',1,'glm']]], + ['mediump_5fumat4x3_1598',['mediump_umat4x3',['../a00912.html#gadb5f724533a1c3cd150b8d25860fe34a',1,'glm']]], + ['mediump_5fumat4x4_1599',['mediump_umat4x4',['../a00912.html#ga331d718d5b35ab5c3d6bdf923263b8aa',1,'glm']]], + ['mediump_5fuvec1_1600',['mediump_uvec1',['../a00922.html#ga63844d22efcd376cb66a8bab1aad9c40',1,'glm']]], + ['mediump_5fuvec2_1601',['mediump_uvec2',['../a00922.html#ga5b85f66da9cf7c90e595b94cc95d237a',1,'glm']]], + ['mediump_5fuvec3_1602',['mediump_uvec3',['../a00922.html#ga394fa81d7e8d12cd2aaeabb2c9d4b031',1,'glm']]], + ['mediump_5fuvec4_1603',['mediump_uvec4',['../a00922.html#gade9d6be4502877f7e6e7ffb54d46ac3f',1,'glm']]], + ['mediump_5fvec1_1604',['mediump_vec1',['../a00881.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], + ['mediump_5fvec2_1605',['mediump_vec2',['../a00900.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], + ['mediump_5fvec3_1606',['mediump_vec3',['../a00900.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], + ['mediump_5fvec4_1607',['mediump_vec4',['../a00900.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]], + ['min_1608',['min',['../a00812.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00812.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00812.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00866.html#gae7a84710d9b7dee05eb0b2a68630cab4',1,'glm::min(T a, T b, T c)'],['../a00866.html#ga0f57f64fe8994fb4b6f7eebb6466a4e7',1,'glm::min(T a, T b, T c, T d)'],['../a00877.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00939.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00939.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00939.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00939.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00939.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00939.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], + ['mirrorclamp_1609',['mirrorClamp',['../a00866.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm::mirrorClamp(genType const &Texcoord)'],['../a00877.html#gaf72b0749a21162aebcd47d9acd22e0df',1,'glm::mirrorClamp(vec< L, T, Q > const &Texcoord)']]], + ['mirrorrepeat_1610',['mirrorRepeat',['../a00866.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm::mirrorRepeat(genType const &Texcoord)'],['../a00877.html#ga9cfc26d9710a853d764dcac518fb42ec',1,'glm::mirrorRepeat(vec< L, T, Q > const &Texcoord)']]], + ['mix_1611',['mix',['../a00812.html#ga6b6e0c7ecb4a5b78f929566355bb7416',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00856.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], + ['mixed_5fproduct_2ehpp_1612',['mixed_product.hpp',['../a00683.html',1,'']]], + ['mixedproduct_1613',['mixedProduct',['../a00961.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], + ['mod_1614',['mod',['../a00812.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00948.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00948.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], + ['modf_1615',['modf',['../a00812.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_b.html b/include/glm/doc/api/search/all_b.html new file mode 100644 index 0000000..28c2413 --- /dev/null +++ b/include/glm/doc/api/search/all_b.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_b.js b/include/glm/doc/api/search/all_b.js new file mode 100644 index 0000000..ba7c106 --- /dev/null +++ b/include/glm/doc/api/search/all_b.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['next_5ffloat_1616',['next_float',['../a00924.html#gab21fbe69182da4f378862feeffe24b16',1,'glm::next_float(genType x)'],['../a00924.html#gaf8540f4caeba5037dee6506184f360b0',1,'glm::next_float(genType x, int ULPs)'],['../a00924.html#ga72c18d50df8ef360960ddf1f5d09c728',1,'glm::next_float(vec< L, T, Q > const &x)'],['../a00924.html#ga78b63ddacacb9e0e8f4172d85f4373aa',1,'glm::next_float(vec< L, T, Q > const &x, int ULPs)'],['../a00924.html#ga48e17607989d47bc99e16cce74543e19',1,'glm::next_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['nextfloat_1617',['nextFloat',['../a00874.html#ga30bc0280e7cefd159867b1aa5050b94a',1,'glm::nextFloat(genType x)'],['../a00874.html#ga54eb5916c5250c8f0ad8224fb8e0d392',1,'glm::nextFloat(genType x, int ULPs)'],['../a00896.html#gadbd6e5dff9c0ae4567b3edd9019c1bee',1,'glm::nextFloat(vec< L, T, Q > const &x)'],['../a00896.html#ga92f82c4f45b5b43ccc29533990db079d',1,'glm::nextFloat(vec< L, T, Q > const &x, int ULPs)'],['../a00896.html#ga48e9b73c50fcf589e0032b8dbed9a3f9',1,'glm::nextFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['nextmultiple_1618',['nextMultiple',['../a00869.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['nextpoweroftwo_1619',['nextPowerOfTwo',['../a00869.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00887.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], + ['nlz_1620',['nlz',['../a00948.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], + ['noise_2ehpp_1621',['noise.hpp',['../a00554.html',1,'']]], + ['norm_2ehpp_1622',['norm.hpp',['../a00686.html',1,'']]], + ['normal_2ehpp_1623',['normal.hpp',['../a00689.html',1,'']]], + ['normalize_1624',['normalize',['../a00862.html#gad815f4de07f2fe6502cdd2cd86c3dabd',1,'glm::normalize(qua< T, Q > const &q)'],['../a00897.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00935.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], + ['normalize_5fdot_2ehpp_1625',['normalize_dot.hpp',['../a00692.html',1,'']]], + ['normalizedot_1626',['normalizeDot',['../a00964.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], + ['not_5f_1627',['not_',['../a00996.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], + ['notequal_1628',['notEqual',['../a00836.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00836.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00836.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00836.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00836.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00863.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00863.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00872.html#ga835ecf946c74f3d68be93e70b10821e7',1,'glm::notEqual(genType const &x, genType const &y, genType const &epsilon)'],['../a00872.html#gabd21e65b2e4c9d501d51536c4a6ef7cb',1,'glm::notEqual(genType const &x, genType const &y, int ULPs)'],['../a00890.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00890.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00890.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00890.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00996.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['number_5fprecision_2ehpp_1629',['number_precision.hpp',['../a00695.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/all_c.html b/include/glm/doc/api/search/all_c.html new file mode 100644 index 0000000..39fc49b --- /dev/null +++ b/include/glm/doc/api/search/all_c.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_c.js b/include/glm/doc/api/search/all_c.js new file mode 100644 index 0000000..584327f --- /dev/null +++ b/include/glm/doc/api/search/all_c.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['opengl_20mathematics_20_28glm_29_1630',['OpenGL Mathematics (GLM)',['../index.html',1,'']]], + ['one_1631',['one',['../a00908.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], + ['one_5fover_5fpi_1632',['one_over_pi',['../a00908.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], + ['one_5fover_5froot_5ftwo_1633',['one_over_root_two',['../a00908.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], + ['one_5fover_5ftwo_5fpi_1634',['one_over_two_pi',['../a00908.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], + ['openbounded_1635',['openBounded',['../a00932.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], + ['optimum_5fpow_2ehpp_1636',['optimum_pow.hpp',['../a00698.html',1,'']]], + ['orientate2_1637',['orientate2',['../a00937.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], + ['orientate3_1638',['orientate3',['../a00937.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00937.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], + ['orientate4_1639',['orientate4',['../a00937.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], + ['orientation_1640',['orientation',['../a00976.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], + ['orientedangle_1641',['orientedAngle',['../a00989.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00989.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], + ['ortho_1642',['ortho',['../a00814.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00814.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], + ['ortholh_1643',['orthoLH',['../a00814.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], + ['ortholh_5fno_1644',['orthoLH_NO',['../a00814.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], + ['ortholh_5fzo_1645',['orthoLH_ZO',['../a00814.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], + ['orthono_1646',['orthoNO',['../a00814.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], + ['orthonormalize_1647',['orthonormalize',['../a00967.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00967.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], + ['orthonormalize_2ehpp_1648',['orthonormalize.hpp',['../a00701.html',1,'']]], + ['orthorh_1649',['orthoRH',['../a00814.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], + ['orthorh_5fno_1650',['orthoRH_NO',['../a00814.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], + ['orthorh_5fzo_1651',['orthoRH_ZO',['../a00814.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], + ['orthozo_1652',['orthoZO',['../a00814.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], + ['outerproduct_1653',['outerProduct',['../a00834.html#ga80d31e9320fd77035336e01d0228321f',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_d.html b/include/glm/doc/api/search/all_d.html new file mode 100644 index 0000000..cc470e5 --- /dev/null +++ b/include/glm/doc/api/search/all_d.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_d.js b/include/glm/doc/api/search/all_d.js new file mode 100644 index 0000000..4951cbb --- /dev/null +++ b/include/glm/doc/api/search/all_d.js @@ -0,0 +1,274 @@ +var searchData= +[ + ['packdouble2x32_1654',['packDouble2x32',['../a00994.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], + ['packed_5fbvec1_1655',['packed_bvec1',['../a00921.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], + ['packed_5fbvec2_1656',['packed_bvec2',['../a00921.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], + ['packed_5fbvec3_1657',['packed_bvec3',['../a00921.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], + ['packed_5fbvec4_1658',['packed_bvec4',['../a00921.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], + ['packed_5fdmat2_1659',['packed_dmat2',['../a00921.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], + ['packed_5fdmat2x2_1660',['packed_dmat2x2',['../a00921.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], + ['packed_5fdmat2x3_1661',['packed_dmat2x3',['../a00921.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], + ['packed_5fdmat2x4_1662',['packed_dmat2x4',['../a00921.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], + ['packed_5fdmat3_1663',['packed_dmat3',['../a00921.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], + ['packed_5fdmat3x2_1664',['packed_dmat3x2',['../a00921.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], + ['packed_5fdmat3x3_1665',['packed_dmat3x3',['../a00921.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], + ['packed_5fdmat3x4_1666',['packed_dmat3x4',['../a00921.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], + ['packed_5fdmat4_1667',['packed_dmat4',['../a00921.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], + ['packed_5fdmat4x2_1668',['packed_dmat4x2',['../a00921.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], + ['packed_5fdmat4x3_1669',['packed_dmat4x3',['../a00921.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], + ['packed_5fdmat4x4_1670',['packed_dmat4x4',['../a00921.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], + ['packed_5fdquat_1671',['packed_dquat',['../a00921.html#gab81f0e92623c05b97a66c5efd1e29475',1,'glm']]], + ['packed_5fdvec1_1672',['packed_dvec1',['../a00921.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], + ['packed_5fdvec2_1673',['packed_dvec2',['../a00921.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], + ['packed_5fdvec3_1674',['packed_dvec3',['../a00921.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], + ['packed_5fdvec4_1675',['packed_dvec4',['../a00921.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], + ['packed_5fhighp_5fbvec1_1676',['packed_highp_bvec1',['../a00921.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], + ['packed_5fhighp_5fbvec2_1677',['packed_highp_bvec2',['../a00921.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], + ['packed_5fhighp_5fbvec3_1678',['packed_highp_bvec3',['../a00921.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], + ['packed_5fhighp_5fbvec4_1679',['packed_highp_bvec4',['../a00921.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], + ['packed_5fhighp_5fdmat2_1680',['packed_highp_dmat2',['../a00921.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], + ['packed_5fhighp_5fdmat2x2_1681',['packed_highp_dmat2x2',['../a00921.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], + ['packed_5fhighp_5fdmat2x3_1682',['packed_highp_dmat2x3',['../a00921.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], + ['packed_5fhighp_5fdmat2x4_1683',['packed_highp_dmat2x4',['../a00921.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], + ['packed_5fhighp_5fdmat3_1684',['packed_highp_dmat3',['../a00921.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], + ['packed_5fhighp_5fdmat3x2_1685',['packed_highp_dmat3x2',['../a00921.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], + ['packed_5fhighp_5fdmat3x3_1686',['packed_highp_dmat3x3',['../a00921.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], + ['packed_5fhighp_5fdmat3x4_1687',['packed_highp_dmat3x4',['../a00921.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], + ['packed_5fhighp_5fdmat4_1688',['packed_highp_dmat4',['../a00921.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], + ['packed_5fhighp_5fdmat4x2_1689',['packed_highp_dmat4x2',['../a00921.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], + ['packed_5fhighp_5fdmat4x3_1690',['packed_highp_dmat4x3',['../a00921.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], + ['packed_5fhighp_5fdmat4x4_1691',['packed_highp_dmat4x4',['../a00921.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], + ['packed_5fhighp_5fdquat_1692',['packed_highp_dquat',['../a00921.html#ga2181ff3f0e91250807f0233b1493d8eb',1,'glm']]], + ['packed_5fhighp_5fdvec1_1693',['packed_highp_dvec1',['../a00921.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], + ['packed_5fhighp_5fdvec2_1694',['packed_highp_dvec2',['../a00921.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], + ['packed_5fhighp_5fdvec3_1695',['packed_highp_dvec3',['../a00921.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], + ['packed_5fhighp_5fdvec4_1696',['packed_highp_dvec4',['../a00921.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], + ['packed_5fhighp_5fivec1_1697',['packed_highp_ivec1',['../a00921.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], + ['packed_5fhighp_5fivec2_1698',['packed_highp_ivec2',['../a00921.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], + ['packed_5fhighp_5fivec3_1699',['packed_highp_ivec3',['../a00921.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], + ['packed_5fhighp_5fivec4_1700',['packed_highp_ivec4',['../a00921.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], + ['packed_5fhighp_5fmat2_1701',['packed_highp_mat2',['../a00921.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], + ['packed_5fhighp_5fmat2x2_1702',['packed_highp_mat2x2',['../a00921.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], + ['packed_5fhighp_5fmat2x3_1703',['packed_highp_mat2x3',['../a00921.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], + ['packed_5fhighp_5fmat2x4_1704',['packed_highp_mat2x4',['../a00921.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], + ['packed_5fhighp_5fmat3_1705',['packed_highp_mat3',['../a00921.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], + ['packed_5fhighp_5fmat3x2_1706',['packed_highp_mat3x2',['../a00921.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], + ['packed_5fhighp_5fmat3x3_1707',['packed_highp_mat3x3',['../a00921.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], + ['packed_5fhighp_5fmat3x4_1708',['packed_highp_mat3x4',['../a00921.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], + ['packed_5fhighp_5fmat4_1709',['packed_highp_mat4',['../a00921.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], + ['packed_5fhighp_5fmat4x2_1710',['packed_highp_mat4x2',['../a00921.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], + ['packed_5fhighp_5fmat4x3_1711',['packed_highp_mat4x3',['../a00921.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], + ['packed_5fhighp_5fmat4x4_1712',['packed_highp_mat4x4',['../a00921.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], + ['packed_5fhighp_5fquat_1713',['packed_highp_quat',['../a00921.html#ga473ba40eeb4448ccba73dfff3cc10fe8',1,'glm']]], + ['packed_5fhighp_5fuvec1_1714',['packed_highp_uvec1',['../a00921.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], + ['packed_5fhighp_5fuvec2_1715',['packed_highp_uvec2',['../a00921.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], + ['packed_5fhighp_5fuvec3_1716',['packed_highp_uvec3',['../a00921.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], + ['packed_5fhighp_5fuvec4_1717',['packed_highp_uvec4',['../a00921.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], + ['packed_5fhighp_5fvec1_1718',['packed_highp_vec1',['../a00921.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], + ['packed_5fhighp_5fvec2_1719',['packed_highp_vec2',['../a00921.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], + ['packed_5fhighp_5fvec3_1720',['packed_highp_vec3',['../a00921.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], + ['packed_5fhighp_5fvec4_1721',['packed_highp_vec4',['../a00921.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], + ['packed_5fivec1_1722',['packed_ivec1',['../a00921.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], + ['packed_5fivec2_1723',['packed_ivec2',['../a00921.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], + ['packed_5fivec3_1724',['packed_ivec3',['../a00921.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], + ['packed_5fivec4_1725',['packed_ivec4',['../a00921.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], + ['packed_5flowp_5fbvec1_1726',['packed_lowp_bvec1',['../a00921.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], + ['packed_5flowp_5fbvec2_1727',['packed_lowp_bvec2',['../a00921.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], + ['packed_5flowp_5fbvec3_1728',['packed_lowp_bvec3',['../a00921.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], + ['packed_5flowp_5fbvec4_1729',['packed_lowp_bvec4',['../a00921.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], + ['packed_5flowp_5fdmat2_1730',['packed_lowp_dmat2',['../a00921.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], + ['packed_5flowp_5fdmat2x2_1731',['packed_lowp_dmat2x2',['../a00921.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], + ['packed_5flowp_5fdmat2x3_1732',['packed_lowp_dmat2x3',['../a00921.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], + ['packed_5flowp_5fdmat2x4_1733',['packed_lowp_dmat2x4',['../a00921.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], + ['packed_5flowp_5fdmat3_1734',['packed_lowp_dmat3',['../a00921.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], + ['packed_5flowp_5fdmat3x2_1735',['packed_lowp_dmat3x2',['../a00921.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], + ['packed_5flowp_5fdmat3x3_1736',['packed_lowp_dmat3x3',['../a00921.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], + ['packed_5flowp_5fdmat3x4_1737',['packed_lowp_dmat3x4',['../a00921.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], + ['packed_5flowp_5fdmat4_1738',['packed_lowp_dmat4',['../a00921.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], + ['packed_5flowp_5fdmat4x2_1739',['packed_lowp_dmat4x2',['../a00921.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], + ['packed_5flowp_5fdmat4x3_1740',['packed_lowp_dmat4x3',['../a00921.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], + ['packed_5flowp_5fdmat4x4_1741',['packed_lowp_dmat4x4',['../a00921.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], + ['packed_5flowp_5fdquat_1742',['packed_lowp_dquat',['../a00921.html#gaaeaa03a3ec94cfb48e1703d70bc8a105',1,'glm']]], + ['packed_5flowp_5fdvec1_1743',['packed_lowp_dvec1',['../a00921.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], + ['packed_5flowp_5fdvec2_1744',['packed_lowp_dvec2',['../a00921.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], + ['packed_5flowp_5fdvec3_1745',['packed_lowp_dvec3',['../a00921.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], + ['packed_5flowp_5fdvec4_1746',['packed_lowp_dvec4',['../a00921.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], + ['packed_5flowp_5fivec1_1747',['packed_lowp_ivec1',['../a00921.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], + ['packed_5flowp_5fivec2_1748',['packed_lowp_ivec2',['../a00921.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], + ['packed_5flowp_5fivec3_1749',['packed_lowp_ivec3',['../a00921.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], + ['packed_5flowp_5fivec4_1750',['packed_lowp_ivec4',['../a00921.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], + ['packed_5flowp_5fmat2_1751',['packed_lowp_mat2',['../a00921.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], + ['packed_5flowp_5fmat2x2_1752',['packed_lowp_mat2x2',['../a00921.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], + ['packed_5flowp_5fmat2x3_1753',['packed_lowp_mat2x3',['../a00921.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], + ['packed_5flowp_5fmat2x4_1754',['packed_lowp_mat2x4',['../a00921.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], + ['packed_5flowp_5fmat3_1755',['packed_lowp_mat3',['../a00921.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], + ['packed_5flowp_5fmat3x2_1756',['packed_lowp_mat3x2',['../a00921.html#ga128cd52649621861635fab746df91735',1,'glm']]], + ['packed_5flowp_5fmat3x3_1757',['packed_lowp_mat3x3',['../a00921.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], + ['packed_5flowp_5fmat3x4_1758',['packed_lowp_mat3x4',['../a00921.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], + ['packed_5flowp_5fmat4_1759',['packed_lowp_mat4',['../a00921.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], + ['packed_5flowp_5fmat4x2_1760',['packed_lowp_mat4x2',['../a00921.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], + ['packed_5flowp_5fmat4x3_1761',['packed_lowp_mat4x3',['../a00921.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], + ['packed_5flowp_5fmat4x4_1762',['packed_lowp_mat4x4',['../a00921.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], + ['packed_5flowp_5fquat_1763',['packed_lowp_quat',['../a00921.html#ga7ca4acb5f69c7b4e7f834d2e8e012b7f',1,'glm']]], + ['packed_5flowp_5fuvec1_1764',['packed_lowp_uvec1',['../a00921.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], + ['packed_5flowp_5fuvec2_1765',['packed_lowp_uvec2',['../a00921.html#ga958210fe245a75b058325d367c951132',1,'glm']]], + ['packed_5flowp_5fuvec3_1766',['packed_lowp_uvec3',['../a00921.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], + ['packed_5flowp_5fuvec4_1767',['packed_lowp_uvec4',['../a00921.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], + ['packed_5flowp_5fvec1_1768',['packed_lowp_vec1',['../a00921.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], + ['packed_5flowp_5fvec2_1769',['packed_lowp_vec2',['../a00921.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], + ['packed_5flowp_5fvec3_1770',['packed_lowp_vec3',['../a00921.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], + ['packed_5flowp_5fvec4_1771',['packed_lowp_vec4',['../a00921.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], + ['packed_5fmat2_1772',['packed_mat2',['../a00921.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], + ['packed_5fmat2x2_1773',['packed_mat2x2',['../a00921.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], + ['packed_5fmat2x3_1774',['packed_mat2x3',['../a00921.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], + ['packed_5fmat2x4_1775',['packed_mat2x4',['../a00921.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], + ['packed_5fmat3_1776',['packed_mat3',['../a00921.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], + ['packed_5fmat3x2_1777',['packed_mat3x2',['../a00921.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], + ['packed_5fmat3x3_1778',['packed_mat3x3',['../a00921.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], + ['packed_5fmat3x4_1779',['packed_mat3x4',['../a00921.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], + ['packed_5fmat4_1780',['packed_mat4',['../a00921.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], + ['packed_5fmat4x2_1781',['packed_mat4x2',['../a00921.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], + ['packed_5fmat4x3_1782',['packed_mat4x3',['../a00921.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], + ['packed_5fmat4x4_1783',['packed_mat4x4',['../a00921.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], + ['packed_5fmediump_5fbvec1_1784',['packed_mediump_bvec1',['../a00921.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], + ['packed_5fmediump_5fbvec2_1785',['packed_mediump_bvec2',['../a00921.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], + ['packed_5fmediump_5fbvec3_1786',['packed_mediump_bvec3',['../a00921.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], + ['packed_5fmediump_5fbvec4_1787',['packed_mediump_bvec4',['../a00921.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], + ['packed_5fmediump_5fdmat2_1788',['packed_mediump_dmat2',['../a00921.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], + ['packed_5fmediump_5fdmat2x2_1789',['packed_mediump_dmat2x2',['../a00921.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], + ['packed_5fmediump_5fdmat2x3_1790',['packed_mediump_dmat2x3',['../a00921.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], + ['packed_5fmediump_5fdmat2x4_1791',['packed_mediump_dmat2x4',['../a00921.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], + ['packed_5fmediump_5fdmat3_1792',['packed_mediump_dmat3',['../a00921.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], + ['packed_5fmediump_5fdmat3x2_1793',['packed_mediump_dmat3x2',['../a00921.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], + ['packed_5fmediump_5fdmat3x3_1794',['packed_mediump_dmat3x3',['../a00921.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], + ['packed_5fmediump_5fdmat3x4_1795',['packed_mediump_dmat3x4',['../a00921.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], + ['packed_5fmediump_5fdmat4_1796',['packed_mediump_dmat4',['../a00921.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], + ['packed_5fmediump_5fdmat4x2_1797',['packed_mediump_dmat4x2',['../a00921.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], + ['packed_5fmediump_5fdmat4x3_1798',['packed_mediump_dmat4x3',['../a00921.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], + ['packed_5fmediump_5fdmat4x4_1799',['packed_mediump_dmat4x4',['../a00921.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], + ['packed_5fmediump_5fdquat_1800',['packed_mediump_dquat',['../a00921.html#ga1dabb421595c34a9dbec085a4d0e6685',1,'glm']]], + ['packed_5fmediump_5fdvec1_1801',['packed_mediump_dvec1',['../a00921.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], + ['packed_5fmediump_5fdvec2_1802',['packed_mediump_dvec2',['../a00921.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], + ['packed_5fmediump_5fdvec3_1803',['packed_mediump_dvec3',['../a00921.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], + ['packed_5fmediump_5fdvec4_1804',['packed_mediump_dvec4',['../a00921.html#ga568b850f1116b667043533cf77826968',1,'glm']]], + ['packed_5fmediump_5fivec1_1805',['packed_mediump_ivec1',['../a00921.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], + ['packed_5fmediump_5fivec2_1806',['packed_mediump_ivec2',['../a00921.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], + ['packed_5fmediump_5fivec3_1807',['packed_mediump_ivec3',['../a00921.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], + ['packed_5fmediump_5fivec4_1808',['packed_mediump_ivec4',['../a00921.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], + ['packed_5fmediump_5fmat2_1809',['packed_mediump_mat2',['../a00921.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], + ['packed_5fmediump_5fmat2x2_1810',['packed_mediump_mat2x2',['../a00921.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], + ['packed_5fmediump_5fmat2x3_1811',['packed_mediump_mat2x3',['../a00921.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], + ['packed_5fmediump_5fmat2x4_1812',['packed_mediump_mat2x4',['../a00921.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], + ['packed_5fmediump_5fmat3_1813',['packed_mediump_mat3',['../a00921.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], + ['packed_5fmediump_5fmat3x2_1814',['packed_mediump_mat3x2',['../a00921.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], + ['packed_5fmediump_5fmat3x3_1815',['packed_mediump_mat3x3',['../a00921.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], + ['packed_5fmediump_5fmat3x4_1816',['packed_mediump_mat3x4',['../a00921.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], + ['packed_5fmediump_5fmat4_1817',['packed_mediump_mat4',['../a00921.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], + ['packed_5fmediump_5fmat4x2_1818',['packed_mediump_mat4x2',['../a00921.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], + ['packed_5fmediump_5fmat4x3_1819',['packed_mediump_mat4x3',['../a00921.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], + ['packed_5fmediump_5fmat4x4_1820',['packed_mediump_mat4x4',['../a00921.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], + ['packed_5fmediump_5fquat_1821',['packed_mediump_quat',['../a00921.html#ga2e5c51d9c29323b8b1d26fbf8697cfae',1,'glm']]], + ['packed_5fmediump_5fuvec1_1822',['packed_mediump_uvec1',['../a00921.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], + ['packed_5fmediump_5fuvec2_1823',['packed_mediump_uvec2',['../a00921.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], + ['packed_5fmediump_5fuvec3_1824',['packed_mediump_uvec3',['../a00921.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], + ['packed_5fmediump_5fuvec4_1825',['packed_mediump_uvec4',['../a00921.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], + ['packed_5fmediump_5fvec1_1826',['packed_mediump_vec1',['../a00921.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], + ['packed_5fmediump_5fvec2_1827',['packed_mediump_vec2',['../a00921.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], + ['packed_5fmediump_5fvec3_1828',['packed_mediump_vec3',['../a00921.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], + ['packed_5fmediump_5fvec4_1829',['packed_mediump_vec4',['../a00921.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], + ['packed_5fquat_1830',['packed_quat',['../a00921.html#gae71d7549208159faa0f6957f9418a828',1,'glm']]], + ['packed_5fuvec1_1831',['packed_uvec1',['../a00921.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], + ['packed_5fuvec2_1832',['packed_uvec2',['../a00921.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], + ['packed_5fuvec3_1833',['packed_uvec3',['../a00921.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], + ['packed_5fuvec4_1834',['packed_uvec4',['../a00921.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], + ['packed_5fvec1_1835',['packed_vec1',['../a00921.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], + ['packed_5fvec2_1836',['packed_vec2',['../a00921.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], + ['packed_5fvec3_1837',['packed_vec3',['../a00921.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], + ['packed_5fvec4_1838',['packed_vec4',['../a00921.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]], + ['packf2x11_5f1x10_1839',['packF2x11_1x10',['../a00916.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], + ['packf3x9_5fe1x5_1840',['packF3x9_E1x5',['../a00916.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], + ['packhalf_1841',['packHalf',['../a00916.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], + ['packhalf1x16_1842',['packHalf1x16',['../a00916.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], + ['packhalf2x16_1843',['packHalf2x16',['../a00994.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], + ['packhalf4x16_1844',['packHalf4x16',['../a00916.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], + ['packi3x10_5f1x2_1845',['packI3x10_1x2',['../a00916.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], + ['packing_2ehpp_1846',['packing.hpp',['../a00557.html',1,'']]], + ['packint2x16_1847',['packInt2x16',['../a00916.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], + ['packint2x32_1848',['packInt2x32',['../a00916.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], + ['packint2x8_1849',['packInt2x8',['../a00916.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], + ['packint4x16_1850',['packInt4x16',['../a00916.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], + ['packint4x8_1851',['packInt4x8',['../a00916.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], + ['packrgbm_1852',['packRGBM',['../a00916.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], + ['packsnorm_1853',['packSnorm',['../a00916.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], + ['packsnorm1x16_1854',['packSnorm1x16',['../a00916.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], + ['packsnorm1x8_1855',['packSnorm1x8',['../a00916.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], + ['packsnorm2x16_1856',['packSnorm2x16',['../a00994.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], + ['packsnorm2x8_1857',['packSnorm2x8',['../a00916.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], + ['packsnorm3x10_5f1x2_1858',['packSnorm3x10_1x2',['../a00916.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], + ['packsnorm4x16_1859',['packSnorm4x16',['../a00916.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], + ['packsnorm4x8_1860',['packSnorm4x8',['../a00994.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], + ['packu3x10_5f1x2_1861',['packU3x10_1x2',['../a00916.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], + ['packuint2x16_1862',['packUint2x16',['../a00916.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], + ['packuint2x32_1863',['packUint2x32',['../a00916.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], + ['packuint2x8_1864',['packUint2x8',['../a00916.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], + ['packuint4x16_1865',['packUint4x16',['../a00916.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], + ['packuint4x8_1866',['packUint4x8',['../a00916.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], + ['packunorm_1867',['packUnorm',['../a00916.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], + ['packunorm1x16_1868',['packUnorm1x16',['../a00916.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], + ['packunorm1x5_5f1x6_5f1x5_1869',['packUnorm1x5_1x6_1x5',['../a00916.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], + ['packunorm1x8_1870',['packUnorm1x8',['../a00916.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], + ['packunorm2x16_1871',['packUnorm2x16',['../a00994.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], + ['packunorm2x3_5f1x2_1872',['packUnorm2x3_1x2',['../a00916.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], + ['packunorm2x4_1873',['packUnorm2x4',['../a00916.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], + ['packunorm2x8_1874',['packUnorm2x8',['../a00916.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], + ['packunorm3x10_5f1x2_1875',['packUnorm3x10_1x2',['../a00916.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], + ['packunorm3x5_5f1x1_1876',['packUnorm3x5_1x1',['../a00916.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], + ['packunorm4x16_1877',['packUnorm4x16',['../a00916.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], + ['packunorm4x4_1878',['packUnorm4x4',['../a00916.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], + ['packunorm4x8_1879',['packUnorm4x8',['../a00994.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], + ['pca_2ehpp_1880',['pca.hpp',['../a00704.html',1,'']]], + ['perlin_1881',['perlin',['../a00915.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00915.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], + ['perp_1882',['perp',['../a00969.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], + ['perpendicular_2ehpp_1883',['perpendicular.hpp',['../a00707.html',1,'']]], + ['perspective_1884',['perspective',['../a00814.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], + ['perspectivefov_1885',['perspectiveFov',['../a00814.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], + ['perspectivefovlh_1886',['perspectiveFovLH',['../a00814.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], + ['perspectivefovlh_5fno_1887',['perspectiveFovLH_NO',['../a00814.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], + ['perspectivefovlh_5fzo_1888',['perspectiveFovLH_ZO',['../a00814.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], + ['perspectivefovno_1889',['perspectiveFovNO',['../a00814.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], + ['perspectivefovrh_1890',['perspectiveFovRH',['../a00814.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], + ['perspectivefovrh_5fno_1891',['perspectiveFovRH_NO',['../a00814.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], + ['perspectivefovrh_5fzo_1892',['perspectiveFovRH_ZO',['../a00814.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], + ['perspectivefovzo_1893',['perspectiveFovZO',['../a00814.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], + ['perspectivelh_1894',['perspectiveLH',['../a00814.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], + ['perspectivelh_5fno_1895',['perspectiveLH_NO',['../a00814.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], + ['perspectivelh_5fzo_1896',['perspectiveLH_ZO',['../a00814.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], + ['perspectiveno_1897',['perspectiveNO',['../a00814.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], + ['perspectiverh_1898',['perspectiveRH',['../a00814.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], + ['perspectiverh_5fno_1899',['perspectiveRH_NO',['../a00814.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], + ['perspectiverh_5fzo_1900',['perspectiveRH_ZO',['../a00814.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], + ['perspectivezo_1901',['perspectiveZO',['../a00814.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], + ['pi_1902',['pi',['../a00867.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], + ['pickmatrix_1903',['pickMatrix',['../a00835.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], + ['pitch_1904',['pitch',['../a00917.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], + ['polar_1905',['polar',['../a00970.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], + ['polar_5fcoordinates_2ehpp_1906',['polar_coordinates.hpp',['../a00710.html',1,'']]], + ['pow_1907',['pow',['../a00813.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00864.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00948.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00948.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], + ['pow2_1908',['pow2',['../a00966.html#ga7288d7bb23f192bd64a60ba2a61a1c9f',1,'glm']]], + ['pow3_1909',['pow3',['../a00966.html#ga156e452c2d630001bb07f4a6f1060a10',1,'glm']]], + ['pow4_1910',['pow4',['../a00966.html#ga830b64f3b47818374e9d03cc20fadbf3',1,'glm']]], + ['poweroftwoabove_1911',['powerOfTwoAbove',['../a00927.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00927.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], + ['poweroftwobelow_1912',['powerOfTwoBelow',['../a00927.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00927.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], + ['poweroftwonearest_1913',['powerOfTwoNearest',['../a00927.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00927.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], + ['prev_5ffloat_1914',['prev_float',['../a00924.html#gaf2a8466ad7470fcafaf91b24b43d1d4d',1,'glm::prev_float(genType x)'],['../a00924.html#ga71d68bb1fff11ac1c757d44cd23ddf50',1,'glm::prev_float(genType x, int ULPs)'],['../a00924.html#gaf2268a89effe42c4d6952085fa616cee',1,'glm::prev_float(vec< L, T, Q > const &x)'],['../a00924.html#gaa761d18f8e3a93752550c9ce9556749c',1,'glm::prev_float(vec< L, T, Q > const &x, int ULPs)'],['../a00924.html#ga471608a1ffbf4472dc5c84216ea937e8',1,'glm::prev_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['prevfloat_1915',['prevFloat',['../a00874.html#ga25320ace5b3e239405077912eb4e7bf9',1,'glm::prevFloat(genType x)'],['../a00874.html#ga760b98a221f1f511edbcdf0b06c49841',1,'glm::prevFloat(genType x, int ULPs)'],['../a00896.html#ga82d4ce132256c1a70d0e7100e6eae2e1',1,'glm::prevFloat(vec< L, T, Q > const &x)'],['../a00896.html#ga4ab818050036d40994346defe41a05b9',1,'glm::prevFloat(vec< L, T, Q > const &x, int ULPs)'],['../a00896.html#ga569e3ce6771e1e4f9e425ec6d859d9f9',1,'glm::prevFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['prevmultiple_1916',['prevMultiple',['../a00869.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['prevpoweroftwo_1917',['prevPowerOfTwo',['../a00869.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00887.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], + ['proj_1918',['proj',['../a00971.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], + ['proj2d_1919',['proj2D',['../a00985.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], + ['proj3d_1920',['proj3D',['../a00985.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], + ['project_1921',['project',['../a00835.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], + ['projection_2ehpp_1922',['projection.hpp',['../a00713.html',1,'']]], + ['projectno_1923',['projectNO',['../a00835.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], + ['projectzo_1924',['projectZO',['../a00835.html#ga77d157525063dec83a557186873ee080',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_e.html b/include/glm/doc/api/search/all_e.html new file mode 100644 index 0000000..57cce76 --- /dev/null +++ b/include/glm/doc/api/search/all_e.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_e.js b/include/glm/doc/api/search/all_e.js new file mode 100644 index 0000000..fc29b46 --- /dev/null +++ b/include/glm/doc/api/search/all_e.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['qr_5fdecompose_1925',['qr_decompose',['../a00955.html#ga2b88704e76f42a8894072e73101a56c3',1,'glm']]], + ['quadraticeasein_1926',['quadraticEaseIn',['../a00936.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], + ['quadraticeaseinout_1927',['quadraticEaseInOut',['../a00936.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], + ['quadraticeaseout_1928',['quadraticEaseOut',['../a00936.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], + ['quarter_5fpi_1929',['quarter_pi',['../a00908.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], + ['quarticeasein_1930',['quarticEaseIn',['../a00936.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], + ['quarticeaseinout_1931',['quarticEaseInOut',['../a00936.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], + ['quarticeaseout_1932',['quarticEaseOut',['../a00936.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], + ['quat_1933',['quat',['../a00860.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], + ['quat_5fcast_1934',['quat_cast',['../a00917.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00917.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], + ['quat_5fidentity_1935',['quat_identity',['../a00972.html#ga77d9e2c313b98a1002a1b12408bf5b45',1,'glm']]], + ['quaternion_5fcommon_2ehpp_1936',['quaternion_common.hpp',['../a00326.html',1,'']]], + ['quaternion_5fdouble_2ehpp_1937',['quaternion_double.hpp',['../a00329.html',1,'']]], + ['quaternion_5fdouble_5fprecision_2ehpp_1938',['quaternion_double_precision.hpp',['../a00332.html',1,'']]], + ['quaternion_5fexponential_2ehpp_1939',['quaternion_exponential.hpp',['../a00335.html',1,'']]], + ['quaternion_5ffloat_2ehpp_1940',['quaternion_float.hpp',['../a00338.html',1,'']]], + ['quaternion_5ffloat_5fprecision_2ehpp_1941',['quaternion_float_precision.hpp',['../a00341.html',1,'']]], + ['quaternion_5fgeometric_2ehpp_1942',['quaternion_geometric.hpp',['../a00344.html',1,'']]], + ['quaternion_5frelational_2ehpp_1943',['quaternion_relational.hpp',['../a00347.html',1,'']]], + ['quaternion_5ftransform_2ehpp_1944',['quaternion_transform.hpp',['../a00350.html',1,'']]], + ['quaternion_5ftrigonometric_2ehpp_1945',['quaternion_trigonometric.hpp',['../a00353.html',1,'']]], + ['quatlookat_1946',['quatLookAt',['../a00917.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], + ['quatlookatlh_1947',['quatLookAtLH',['../a00917.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], + ['quatlookatrh_1948',['quatLookAtRH',['../a00917.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], + ['quinticeasein_1949',['quinticEaseIn',['../a00936.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], + ['quinticeaseinout_1950',['quinticEaseInOut',['../a00936.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], + ['quinticeaseout_1951',['quinticEaseOut',['../a00936.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]], + ['qword_1952',['qword',['../a00974.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/all_f.html b/include/glm/doc/api/search/all_f.html new file mode 100644 index 0000000..ac1e704 --- /dev/null +++ b/include/glm/doc/api/search/all_f.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/all_f.js b/include/glm/doc/api/search/all_f.js new file mode 100644 index 0000000..0e12427 --- /dev/null +++ b/include/glm/doc/api/search/all_f.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['recommended_20extensions_1953',['Recommended extensions',['../a00904.html',1,'']]], + ['radialgradient_1954',['radialGradient',['../a00945.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], + ['radians_1955',['radians',['../a00995.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], + ['random_2ehpp_1956',['random.hpp',['../a00563.html',1,'']]], + ['range_2ehpp_1957',['range.hpp',['../a00716.html',1,'']]], + ['raw_5fdata_2ehpp_1958',['raw_data.hpp',['../a00719.html',1,'']]], + ['reciprocal_2ehpp_1959',['reciprocal.hpp',['../a00566.html',1,'']]], + ['reflect_1960',['reflect',['../a00897.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], + ['refract_1961',['refract',['../a00897.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], + ['repeat_1962',['repeat',['../a00866.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm::repeat(genType const &Texcoord)'],['../a00877.html#ga3025883ad3d8b69a8a1ec65368268be7',1,'glm::repeat(vec< L, T, Q > const &Texcoord)']]], + ['rgb2ycocg_1963',['rgb2YCoCg',['../a00931.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], + ['rgb2ycocgr_1964',['rgb2YCoCgR',['../a00931.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], + ['rgbcolor_1965',['rgbColor',['../a00930.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], + ['righthanded_1966',['rightHanded',['../a00946.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], + ['roll_1967',['roll',['../a00917.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], + ['root_5ffive_1968',['root_five',['../a00908.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], + ['root_5fhalf_5fpi_1969',['root_half_pi',['../a00908.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], + ['root_5fln_5ffour_1970',['root_ln_four',['../a00908.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], + ['root_5fpi_1971',['root_pi',['../a00908.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], + ['root_5fthree_1972',['root_three',['../a00908.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], + ['root_5ftwo_1973',['root_two',['../a00908.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], + ['root_5ftwo_5fpi_1974',['root_two_pi',['../a00908.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], + ['rotate_1975',['rotate',['../a00837.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00864.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00960.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00972.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00972.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00976.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00976.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00976.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00984.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], + ['rotate_5fnormalized_5faxis_2ehpp_1976',['rotate_normalized_axis.hpp',['../a00722.html',1,'']]], + ['rotate_5fvector_2ehpp_1977',['rotate_vector.hpp',['../a00725.html',1,'']]], + ['rotatenormalizedaxis_1978',['rotateNormalizedAxis',['../a00975.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00975.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], + ['rotatex_1979',['rotateX',['../a00976.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotatey_1980',['rotateY',['../a00976.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotatez_1981',['rotateZ',['../a00976.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotation_1982',['rotation',['../a00972.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], + ['round_1983',['round',['../a00812.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], + ['round_2ehpp_1984',['round.hpp',['../a00569.html',1,'']]], + ['roundeven_1985',['roundEven',['../a00812.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], + ['roundmultiple_1986',['roundMultiple',['../a00920.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00920.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['roundpoweroftwo_1987',['roundPowerOfTwo',['../a00920.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00920.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], + ['row_1988',['row',['../a00911.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00911.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], + ['rowmajor2_1989',['rowMajor2',['../a00957.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00957.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], + ['rowmajor3_1990',['rowMajor3',['../a00957.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00957.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], + ['rowmajor4_1991',['rowMajor4',['../a00957.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00957.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], + ['rq_5fdecompose_1992',['rq_decompose',['../a00955.html#ga90ce5524aa7390a722817f6c9342e360',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/close.png b/include/glm/doc/api/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/search/files_0.html b/include/glm/doc/api/search/files_0.html new file mode 100644 index 0000000..182d7eb --- /dev/null +++ b/include/glm/doc/api/search/files_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_0.js b/include/glm/doc/api/search/files_0.js new file mode 100644 index 0000000..40f1203 --- /dev/null +++ b/include/glm/doc/api/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['associated_5fmin_5fmax_2ehpp_2295',['associated_min_max.hpp',['../a00587.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_1.html b/include/glm/doc/api/search/files_1.html new file mode 100644 index 0000000..9448113 --- /dev/null +++ b/include/glm/doc/api/search/files_1.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_1.js b/include/glm/doc/api/search/files_1.js new file mode 100644 index 0000000..2be61e2 --- /dev/null +++ b/include/glm/doc/api/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bit_2ehpp_2296',['bit.hpp',['../a00590.html',1,'']]], + ['bitfield_2ehpp_2297',['bitfield.hpp',['../a00533.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_10.html b/include/glm/doc/api/search/files_10.html new file mode 100644 index 0000000..1adc7e5 --- /dev/null +++ b/include/glm/doc/api/search/files_10.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_10.js b/include/glm/doc/api/search/files_10.js new file mode 100644 index 0000000..9ce04cf --- /dev/null +++ b/include/glm/doc/api/search/files_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['scalar_5fcommon_2ehpp_2463',['scalar_common.hpp',['../a00356.html',1,'']]], + ['scalar_5fconstants_2ehpp_2464',['scalar_constants.hpp',['../a00359.html',1,'']]], + ['scalar_5fint_5fsized_2ehpp_2465',['scalar_int_sized.hpp',['../a00362.html',1,'']]], + ['scalar_5finteger_2ehpp_2466',['scalar_integer.hpp',['../a00365.html',1,'']]], + ['scalar_5fmultiplication_2ehpp_2467',['scalar_multiplication.hpp',['../a00728.html',1,'']]], + ['scalar_5fpacking_2ehpp_2468',['scalar_packing.hpp',['../a00368.html',1,'']]], + ['scalar_5freciprocal_2ehpp_2469',['scalar_reciprocal.hpp',['../a00371.html',1,'']]], + ['scalar_5fuint_5fsized_2ehpp_2470',['scalar_uint_sized.hpp',['../a00377.html',1,'']]], + ['scalar_5fulp_2ehpp_2471',['scalar_ulp.hpp',['../a00380.html',1,'']]], + ['spline_2ehpp_2472',['spline.hpp',['../a00731.html',1,'']]], + ['std_5fbased_5ftype_2ehpp_2473',['std_based_type.hpp',['../a00734.html',1,'']]], + ['string_5fcast_2ehpp_2474',['string_cast.hpp',['../a00737.html',1,'']]], + ['structured_5fbindings_2ehpp_2475',['structured_bindings.hpp',['../a00740.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_11.html b/include/glm/doc/api/search/files_11.html new file mode 100644 index 0000000..4c8b863 --- /dev/null +++ b/include/glm/doc/api/search/files_11.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_11.js b/include/glm/doc/api/search/files_11.js new file mode 100644 index 0000000..2dbe39c --- /dev/null +++ b/include/glm/doc/api/search/files_11.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['texture_2ehpp_2476',['texture.hpp',['../a00743.html',1,'']]], + ['transform_2ehpp_2477',['transform.hpp',['../a00746.html',1,'']]], + ['transform2_2ehpp_2478',['transform2.hpp',['../a00749.html',1,'']]], + ['trigonometric_2ehpp_2479',['trigonometric.hpp',['../a00797.html',1,'']]], + ['type_5fmat2x2_2ehpp_2480',['type_mat2x2.hpp',['../a00044.html',1,'']]], + ['type_5fmat2x3_2ehpp_2481',['type_mat2x3.hpp',['../a00047.html',1,'']]], + ['type_5fmat2x4_2ehpp_2482',['type_mat2x4.hpp',['../a00050.html',1,'']]], + ['type_5fmat3x2_2ehpp_2483',['type_mat3x2.hpp',['../a00053.html',1,'']]], + ['type_5fmat3x3_2ehpp_2484',['type_mat3x3.hpp',['../a00056.html',1,'']]], + ['type_5fmat3x4_2ehpp_2485',['type_mat3x4.hpp',['../a00059.html',1,'']]], + ['type_5fmat4x2_2ehpp_2486',['type_mat4x2.hpp',['../a00062.html',1,'']]], + ['type_5fmat4x3_2ehpp_2487',['type_mat4x3.hpp',['../a00065.html',1,'']]], + ['type_5fmat4x4_2ehpp_2488',['type_mat4x4.hpp',['../a00068.html',1,'']]], + ['type_5fprecision_2ehpp_2489',['type_precision.hpp',['../a00575.html',1,'']]], + ['type_5fptr_2ehpp_2490',['type_ptr.hpp',['../a00578.html',1,'']]], + ['type_5fquat_2ehpp_2491',['type_quat.hpp',['../a00071.html',1,'']]], + ['type_5ftrait_2ehpp_2492',['type_trait.hpp',['../a00752.html',1,'']]], + ['type_5fvec1_2ehpp_2493',['type_vec1.hpp',['../a00074.html',1,'']]], + ['type_5fvec2_2ehpp_2494',['type_vec2.hpp',['../a00077.html',1,'']]], + ['type_5fvec3_2ehpp_2495',['type_vec3.hpp',['../a00080.html',1,'']]], + ['type_5fvec4_2ehpp_2496',['type_vec4.hpp',['../a00083.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_12.html b/include/glm/doc/api/search/files_12.html new file mode 100644 index 0000000..585c430 --- /dev/null +++ b/include/glm/doc/api/search/files_12.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_12.js b/include/glm/doc/api/search/files_12.js new file mode 100644 index 0000000..c733b34 --- /dev/null +++ b/include/glm/doc/api/search/files_12.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ulp_2ehpp_2497',['ulp.hpp',['../a00581.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_13.html b/include/glm/doc/api/search/files_13.html new file mode 100644 index 0000000..d2ac169 --- /dev/null +++ b/include/glm/doc/api/search/files_13.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_13.js b/include/glm/doc/api/search/files_13.js new file mode 100644 index 0000000..063eda2 --- /dev/null +++ b/include/glm/doc/api/search/files_13.js @@ -0,0 +1,56 @@ +var searchData= +[ + ['vec1_2ehpp_2498',['vec1.hpp',['../a00584.html',1,'']]], + ['vec2_2ehpp_2499',['vec2.hpp',['../a00800.html',1,'']]], + ['vec3_2ehpp_2500',['vec3.hpp',['../a00803.html',1,'']]], + ['vec4_2ehpp_2501',['vec4.hpp',['../a00806.html',1,'']]], + ['vec_5fswizzle_2ehpp_2502',['vec_swizzle.hpp',['../a00755.html',1,'']]], + ['vector_5fangle_2ehpp_2503',['vector_angle.hpp',['../a00758.html',1,'']]], + ['vector_5fbool1_2ehpp_2504',['vector_bool1.hpp',['../a00383.html',1,'']]], + ['vector_5fbool1_5fprecision_2ehpp_2505',['vector_bool1_precision.hpp',['../a00386.html',1,'']]], + ['vector_5fbool2_2ehpp_2506',['vector_bool2.hpp',['../a00389.html',1,'']]], + ['vector_5fbool2_5fprecision_2ehpp_2507',['vector_bool2_precision.hpp',['../a00392.html',1,'']]], + ['vector_5fbool3_2ehpp_2508',['vector_bool3.hpp',['../a00395.html',1,'']]], + ['vector_5fbool3_5fprecision_2ehpp_2509',['vector_bool3_precision.hpp',['../a00398.html',1,'']]], + ['vector_5fbool4_2ehpp_2510',['vector_bool4.hpp',['../a00401.html',1,'']]], + ['vector_5fbool4_5fprecision_2ehpp_2511',['vector_bool4_precision.hpp',['../a00404.html',1,'']]], + ['vector_5fcommon_2ehpp_2512',['vector_common.hpp',['../a00407.html',1,'']]], + ['vector_5fdouble1_2ehpp_2513',['vector_double1.hpp',['../a00410.html',1,'']]], + ['vector_5fdouble1_5fprecision_2ehpp_2514',['vector_double1_precision.hpp',['../a00413.html',1,'']]], + ['vector_5fdouble2_2ehpp_2515',['vector_double2.hpp',['../a00416.html',1,'']]], + ['vector_5fdouble2_5fprecision_2ehpp_2516',['vector_double2_precision.hpp',['../a00419.html',1,'']]], + ['vector_5fdouble3_2ehpp_2517',['vector_double3.hpp',['../a00422.html',1,'']]], + ['vector_5fdouble3_5fprecision_2ehpp_2518',['vector_double3_precision.hpp',['../a00425.html',1,'']]], + ['vector_5fdouble4_2ehpp_2519',['vector_double4.hpp',['../a00428.html',1,'']]], + ['vector_5fdouble4_5fprecision_2ehpp_2520',['vector_double4_precision.hpp',['../a00431.html',1,'']]], + ['vector_5ffloat1_2ehpp_2521',['vector_float1.hpp',['../a00434.html',1,'']]], + ['vector_5ffloat1_5fprecision_2ehpp_2522',['vector_float1_precision.hpp',['../a00437.html',1,'']]], + ['vector_5ffloat2_2ehpp_2523',['vector_float2.hpp',['../a00440.html',1,'']]], + ['vector_5ffloat2_5fprecision_2ehpp_2524',['vector_float2_precision.hpp',['../a00443.html',1,'']]], + ['vector_5ffloat3_2ehpp_2525',['vector_float3.hpp',['../a00446.html',1,'']]], + ['vector_5ffloat3_5fprecision_2ehpp_2526',['vector_float3_precision.hpp',['../a00449.html',1,'']]], + ['vector_5ffloat4_2ehpp_2527',['vector_float4.hpp',['../a00452.html',1,'']]], + ['vector_5ffloat4_5fprecision_2ehpp_2528',['vector_float4_precision.hpp',['../a00455.html',1,'']]], + ['vector_5fint1_2ehpp_2529',['vector_int1.hpp',['../a00458.html',1,'']]], + ['vector_5fint1_5fsized_2ehpp_2530',['vector_int1_sized.hpp',['../a00461.html',1,'']]], + ['vector_5fint2_2ehpp_2531',['vector_int2.hpp',['../a00464.html',1,'']]], + ['vector_5fint2_5fsized_2ehpp_2532',['vector_int2_sized.hpp',['../a00467.html',1,'']]], + ['vector_5fint3_2ehpp_2533',['vector_int3.hpp',['../a00470.html',1,'']]], + ['vector_5fint3_5fsized_2ehpp_2534',['vector_int3_sized.hpp',['../a00473.html',1,'']]], + ['vector_5fint4_2ehpp_2535',['vector_int4.hpp',['../a00476.html',1,'']]], + ['vector_5fint4_5fsized_2ehpp_2536',['vector_int4_sized.hpp',['../a00479.html',1,'']]], + ['vector_5finteger_2ehpp_2537',['vector_integer.hpp',['../a00482.html',1,'']]], + ['vector_5fpacking_2ehpp_2538',['vector_packing.hpp',['../a00485.html',1,'']]], + ['vector_5fquery_2ehpp_2539',['vector_query.hpp',['../a00761.html',1,'']]], + ['vector_5freciprocal_2ehpp_2540',['vector_reciprocal.hpp',['../a00488.html',1,'']]], + ['vector_5frelational_2ehpp_2541',['vector_relational.hpp',['../a00491.html',1,'']]], + ['vector_5fuint1_2ehpp_2542',['vector_uint1.hpp',['../a00494.html',1,'']]], + ['vector_5fuint1_5fsized_2ehpp_2543',['vector_uint1_sized.hpp',['../a00497.html',1,'']]], + ['vector_5fuint2_2ehpp_2544',['vector_uint2.hpp',['../a00500.html',1,'']]], + ['vector_5fuint2_5fsized_2ehpp_2545',['vector_uint2_sized.hpp',['../a00503.html',1,'']]], + ['vector_5fuint3_2ehpp_2546',['vector_uint3.hpp',['../a00506.html',1,'']]], + ['vector_5fuint3_5fsized_2ehpp_2547',['vector_uint3_sized.hpp',['../a00509.html',1,'']]], + ['vector_5fuint4_2ehpp_2548',['vector_uint4.hpp',['../a00512.html',1,'']]], + ['vector_5fuint4_5fsized_2ehpp_2549',['vector_uint4_sized.hpp',['../a00515.html',1,'']]], + ['vector_5fulp_2ehpp_2550',['vector_ulp.hpp',['../a00518.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_14.html b/include/glm/doc/api/search/files_14.html new file mode 100644 index 0000000..8a65f99 --- /dev/null +++ b/include/glm/doc/api/search/files_14.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_14.js b/include/glm/doc/api/search/files_14.js new file mode 100644 index 0000000..83fe0ff --- /dev/null +++ b/include/glm/doc/api/search/files_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wrap_2ehpp_2551',['wrap.hpp',['../a00764.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_2.html b/include/glm/doc/api/search/files_2.html new file mode 100644 index 0000000..16c12b8 --- /dev/null +++ b/include/glm/doc/api/search/files_2.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_2.js b/include/glm/doc/api/search/files_2.js new file mode 100644 index 0000000..a32bfe7 --- /dev/null +++ b/include/glm/doc/api/search/files_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['closest_5fpoint_2ehpp_2298',['closest_point.hpp',['../a00593.html',1,'']]], + ['color_5fencoding_2ehpp_2299',['color_encoding.hpp',['../a00596.html',1,'']]], + ['color_5fspace_5fycocg_2ehpp_2300',['color_space_YCoCg.hpp',['../a00599.html',1,'']]], + ['common_2ehpp_2301',['common.hpp',['../a00002.html',1,'']]], + ['compatibility_2ehpp_2302',['compatibility.hpp',['../a00602.html',1,'']]], + ['component_5fwise_2ehpp_2303',['component_wise.hpp',['../a00605.html',1,'']]], + ['constants_2ehpp_2304',['constants.hpp',['../a00539.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_3.html b/include/glm/doc/api/search/files_3.html new file mode 100644 index 0000000..d1b79b9 --- /dev/null +++ b/include/glm/doc/api/search/files_3.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_3.js b/include/glm/doc/api/search/files_3.js new file mode 100644 index 0000000..ce18136 --- /dev/null +++ b/include/glm/doc/api/search/files_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dual_5fquaternion_2ehpp_2305',['dual_quaternion.hpp',['../a00608.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_4.html b/include/glm/doc/api/search/files_4.html new file mode 100644 index 0000000..6c31a9d --- /dev/null +++ b/include/glm/doc/api/search/files_4.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_4.js b/include/glm/doc/api/search/files_4.js new file mode 100644 index 0000000..f476752 --- /dev/null +++ b/include/glm/doc/api/search/files_4.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['easing_2ehpp_2306',['easing.hpp',['../a00611.html',1,'']]], + ['epsilon_2ehpp_2307',['epsilon.hpp',['../a00542.html',1,'']]], + ['euler_5fangles_2ehpp_2308',['euler_angles.hpp',['../a00614.html',1,'']]], + ['exponential_2ehpp_2309',['exponential.hpp',['../a00086.html',1,'']]], + ['ext_2ehpp_2310',['ext.hpp',['../a00521.html',1,'']]], + ['extend_2ehpp_2311',['extend.hpp',['../a00617.html',1,'']]], + ['extended_5fmin_5fmax_2ehpp_2312',['extended_min_max.hpp',['../a00620.html',1,'']]], + ['exterior_5fproduct_2ehpp_2313',['exterior_product.hpp',['../a00623.html',1,'']]], + ['matrix_5finteger_2ehpp_2314',['matrix_integer.hpp',['../a01696.html',1,'']]], + ['matrix_5ftransform_2ehpp_2315',['matrix_transform.hpp',['../a01702.html',1,'']]], + ['scalar_5frelational_2ehpp_2316',['scalar_relational.hpp',['../a01717.html',1,'']]], + ['vector_5frelational_2ehpp_2317',['vector_relational.hpp',['../a01729.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_5.html b/include/glm/doc/api/search/files_5.html new file mode 100644 index 0000000..2ff6409 --- /dev/null +++ b/include/glm/doc/api/search/files_5.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_5.js b/include/glm/doc/api/search/files_5.js new file mode 100644 index 0000000..8e1867d --- /dev/null +++ b/include/glm/doc/api/search/files_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['fast_5fexponential_2ehpp_2318',['fast_exponential.hpp',['../a00626.html',1,'']]], + ['fast_5fsquare_5froot_2ehpp_2319',['fast_square_root.hpp',['../a00629.html',1,'']]], + ['fast_5ftrigonometry_2ehpp_2320',['fast_trigonometry.hpp',['../a00632.html',1,'']]], + ['functions_2ehpp_2321',['functions.hpp',['../a00635.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_6.html b/include/glm/doc/api/search/files_6.html new file mode 100644 index 0000000..82e6890 --- /dev/null +++ b/include/glm/doc/api/search/files_6.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_6.js b/include/glm/doc/api/search/files_6.js new file mode 100644 index 0000000..6018e9d --- /dev/null +++ b/include/glm/doc/api/search/files_6.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['color_5fspace_2ehpp_2322',['color_space.hpp',['../a01681.html',1,'(Global Namespace)'],['../a01684.html',1,'(Global Namespace)']]], + ['common_2ehpp_2323',['common.hpp',['../a01687.html',1,'']]], + ['geometric_2ehpp_2324',['geometric.hpp',['../a00527.html',1,'']]], + ['gradient_5fpaint_2ehpp_2325',['gradient_paint.hpp',['../a00638.html',1,'']]], + ['integer_2ehpp_2326',['integer.hpp',['../a01690.html',1,'(Global Namespace)'],['../a01693.html',1,'(Global Namespace)']]], + ['matrix_5finteger_2ehpp_2327',['matrix_integer.hpp',['../a01699.html',1,'']]], + ['matrix_5ftransform_2ehpp_2328',['matrix_transform.hpp',['../a01705.html',1,'']]], + ['packing_2ehpp_2329',['packing.hpp',['../a01708.html',1,'']]], + ['quaternion_2ehpp_2330',['quaternion.hpp',['../a01711.html',1,'(Global Namespace)'],['../a01714.html',1,'(Global Namespace)']]], + ['scalar_5frelational_2ehpp_2331',['scalar_relational.hpp',['../a01720.html',1,'']]], + ['type_5faligned_2ehpp_2332',['type_aligned.hpp',['../a01723.html',1,'(Global Namespace)'],['../a01726.html',1,'(Global Namespace)']]] +]; diff --git a/include/glm/doc/api/search/files_7.html b/include/glm/doc/api/search/files_7.html new file mode 100644 index 0000000..7ce361d --- /dev/null +++ b/include/glm/doc/api/search/files_7.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_7.js b/include/glm/doc/api/search/files_7.js new file mode 100644 index 0000000..ed25333 --- /dev/null +++ b/include/glm/doc/api/search/files_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['handed_5fcoordinate_5fspace_2ehpp_2333',['handed_coordinate_space.hpp',['../a00641.html',1,'']]], + ['hash_2ehpp_2334',['hash.hpp',['../a00644.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_8.html b/include/glm/doc/api/search/files_8.html new file mode 100644 index 0000000..49983b8 --- /dev/null +++ b/include/glm/doc/api/search/files_8.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_8.js b/include/glm/doc/api/search/files_8.js new file mode 100644 index 0000000..f5a602d --- /dev/null +++ b/include/glm/doc/api/search/files_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['integer_2ehpp_2335',['integer.hpp',['../a00545.html',1,'']]], + ['intersect_2ehpp_2336',['intersect.hpp',['../a00647.html',1,'']]], + ['io_2ehpp_2337',['io.hpp',['../a00650.html',1,'']]], + ['iteration_2ehpp_2338',['iteration.hpp',['../a00653.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_9.html b/include/glm/doc/api/search/files_9.html new file mode 100644 index 0000000..7cfea7e --- /dev/null +++ b/include/glm/doc/api/search/files_9.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_9.js b/include/glm/doc/api/search/files_9.js new file mode 100644 index 0000000..e54ad5e --- /dev/null +++ b/include/glm/doc/api/search/files_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['log_5fbase_2ehpp_2339',['log_base.hpp',['../a00656.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_a.html b/include/glm/doc/api/search/files_a.html new file mode 100644 index 0000000..fe811ba --- /dev/null +++ b/include/glm/doc/api/search/files_a.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_a.js b/include/glm/doc/api/search/files_a.js new file mode 100644 index 0000000..87d1f88 --- /dev/null +++ b/include/glm/doc/api/search/files_a.js @@ -0,0 +1,97 @@ +var searchData= +[ + ['mat2x2_2ehpp_2340',['mat2x2.hpp',['../a00767.html',1,'']]], + ['mat2x3_2ehpp_2341',['mat2x3.hpp',['../a00770.html',1,'']]], + ['mat2x4_2ehpp_2342',['mat2x4.hpp',['../a00773.html',1,'']]], + ['mat3x2_2ehpp_2343',['mat3x2.hpp',['../a00776.html',1,'']]], + ['mat3x3_2ehpp_2344',['mat3x3.hpp',['../a00779.html',1,'']]], + ['mat3x4_2ehpp_2345',['mat3x4.hpp',['../a00782.html',1,'']]], + ['mat4x2_2ehpp_2346',['mat4x2.hpp',['../a00785.html',1,'']]], + ['mat4x3_2ehpp_2347',['mat4x3.hpp',['../a00788.html',1,'']]], + ['mat4x4_2ehpp_2348',['mat4x4.hpp',['../a00791.html',1,'']]], + ['matrix_2ehpp_2349',['matrix.hpp',['../a00794.html',1,'']]], + ['matrix_5faccess_2ehpp_2350',['matrix_access.hpp',['../a00548.html',1,'']]], + ['matrix_5fclip_5fspace_2ehpp_2351',['matrix_clip_space.hpp',['../a00092.html',1,'']]], + ['matrix_5fcommon_2ehpp_2352',['matrix_common.hpp',['../a00095.html',1,'']]], + ['matrix_5fcross_5fproduct_2ehpp_2353',['matrix_cross_product.hpp',['../a00659.html',1,'']]], + ['matrix_5fdecompose_2ehpp_2354',['matrix_decompose.hpp',['../a00662.html',1,'']]], + ['matrix_5fdouble2x2_2ehpp_2355',['matrix_double2x2.hpp',['../a00098.html',1,'']]], + ['matrix_5fdouble2x2_5fprecision_2ehpp_2356',['matrix_double2x2_precision.hpp',['../a00101.html',1,'']]], + ['matrix_5fdouble2x3_2ehpp_2357',['matrix_double2x3.hpp',['../a00104.html',1,'']]], + ['matrix_5fdouble2x3_5fprecision_2ehpp_2358',['matrix_double2x3_precision.hpp',['../a00107.html',1,'']]], + ['matrix_5fdouble2x4_2ehpp_2359',['matrix_double2x4.hpp',['../a00110.html',1,'']]], + ['matrix_5fdouble2x4_5fprecision_2ehpp_2360',['matrix_double2x4_precision.hpp',['../a00113.html',1,'']]], + ['matrix_5fdouble3x2_2ehpp_2361',['matrix_double3x2.hpp',['../a00116.html',1,'']]], + ['matrix_5fdouble3x2_5fprecision_2ehpp_2362',['matrix_double3x2_precision.hpp',['../a00119.html',1,'']]], + ['matrix_5fdouble3x3_2ehpp_2363',['matrix_double3x3.hpp',['../a00122.html',1,'']]], + ['matrix_5fdouble3x3_5fprecision_2ehpp_2364',['matrix_double3x3_precision.hpp',['../a00125.html',1,'']]], + ['matrix_5fdouble3x4_2ehpp_2365',['matrix_double3x4.hpp',['../a00128.html',1,'']]], + ['matrix_5fdouble3x4_5fprecision_2ehpp_2366',['matrix_double3x4_precision.hpp',['../a00131.html',1,'']]], + ['matrix_5fdouble4x2_2ehpp_2367',['matrix_double4x2.hpp',['../a00134.html',1,'']]], + ['matrix_5fdouble4x2_5fprecision_2ehpp_2368',['matrix_double4x2_precision.hpp',['../a00137.html',1,'']]], + ['matrix_5fdouble4x3_2ehpp_2369',['matrix_double4x3.hpp',['../a00140.html',1,'']]], + ['matrix_5fdouble4x3_5fprecision_2ehpp_2370',['matrix_double4x3_precision.hpp',['../a00143.html',1,'']]], + ['matrix_5fdouble4x4_2ehpp_2371',['matrix_double4x4.hpp',['../a00146.html',1,'']]], + ['matrix_5fdouble4x4_5fprecision_2ehpp_2372',['matrix_double4x4_precision.hpp',['../a00149.html',1,'']]], + ['matrix_5ffactorisation_2ehpp_2373',['matrix_factorisation.hpp',['../a00665.html',1,'']]], + ['matrix_5ffloat2x2_2ehpp_2374',['matrix_float2x2.hpp',['../a00152.html',1,'']]], + ['matrix_5ffloat2x2_5fprecision_2ehpp_2375',['matrix_float2x2_precision.hpp',['../a00155.html',1,'']]], + ['matrix_5ffloat2x3_2ehpp_2376',['matrix_float2x3.hpp',['../a00158.html',1,'']]], + ['matrix_5ffloat2x3_5fprecision_2ehpp_2377',['matrix_float2x3_precision.hpp',['../a00161.html',1,'']]], + ['matrix_5ffloat2x4_2ehpp_2378',['matrix_float2x4.hpp',['../a00164.html',1,'']]], + ['matrix_5ffloat2x4_5fprecision_2ehpp_2379',['matrix_float2x4_precision.hpp',['../a00167.html',1,'']]], + ['matrix_5ffloat3x2_2ehpp_2380',['matrix_float3x2.hpp',['../a00170.html',1,'']]], + ['matrix_5ffloat3x2_5fprecision_2ehpp_2381',['matrix_float3x2_precision.hpp',['../a00173.html',1,'']]], + ['matrix_5ffloat3x3_2ehpp_2382',['matrix_float3x3.hpp',['../a00176.html',1,'']]], + ['matrix_5ffloat3x3_5fprecision_2ehpp_2383',['matrix_float3x3_precision.hpp',['../a00179.html',1,'']]], + ['matrix_5ffloat3x4_2ehpp_2384',['matrix_float3x4.hpp',['../a00182.html',1,'']]], + ['matrix_5ffloat3x4_5fprecision_2ehpp_2385',['matrix_float3x4_precision.hpp',['../a00185.html',1,'']]], + ['matrix_5ffloat4x2_2ehpp_2386',['matrix_float4x2.hpp',['../a00188.html',1,'']]], + ['matrix_5ffloat4x3_2ehpp_2387',['matrix_float4x3.hpp',['../a00194.html',1,'']]], + ['matrix_5ffloat4x3_5fprecision_2ehpp_2388',['matrix_float4x3_precision.hpp',['../a00197.html',1,'']]], + ['matrix_5ffloat4x4_2ehpp_2389',['matrix_float4x4.hpp',['../a00200.html',1,'']]], + ['matrix_5ffloat4x4_5fprecision_2ehpp_2390',['matrix_float4x4_precision.hpp',['../a00203.html',1,'']]], + ['matrix_5fint2x2_2ehpp_2391',['matrix_int2x2.hpp',['../a00206.html',1,'']]], + ['matrix_5fint2x2_5fsized_2ehpp_2392',['matrix_int2x2_sized.hpp',['../a00209.html',1,'']]], + ['matrix_5fint2x3_2ehpp_2393',['matrix_int2x3.hpp',['../a00212.html',1,'']]], + ['matrix_5fint2x3_5fsized_2ehpp_2394',['matrix_int2x3_sized.hpp',['../a00215.html',1,'']]], + ['matrix_5fint2x4_2ehpp_2395',['matrix_int2x4.hpp',['../a00218.html',1,'']]], + ['matrix_5fint2x4_5fsized_2ehpp_2396',['matrix_int2x4_sized.hpp',['../a00221.html',1,'']]], + ['matrix_5fint3x2_2ehpp_2397',['matrix_int3x2.hpp',['../a00224.html',1,'']]], + ['matrix_5fint3x2_5fsized_2ehpp_2398',['matrix_int3x2_sized.hpp',['../a00227.html',1,'']]], + ['matrix_5fint3x3_2ehpp_2399',['matrix_int3x3.hpp',['../a00230.html',1,'']]], + ['matrix_5fint3x3_5fsized_2ehpp_2400',['matrix_int3x3_sized.hpp',['../a00233.html',1,'']]], + ['matrix_5fint3x4_2ehpp_2401',['matrix_int3x4.hpp',['../a00236.html',1,'']]], + ['matrix_5fint4x2_2ehpp_2402',['matrix_int4x2.hpp',['../a00242.html',1,'']]], + ['matrix_5fint4x2_5fsized_2ehpp_2403',['matrix_int4x2_sized.hpp',['../a00245.html',1,'']]], + ['matrix_5fint4x3_2ehpp_2404',['matrix_int4x3.hpp',['../a00248.html',1,'']]], + ['matrix_5fint4x3_5fsized_2ehpp_2405',['matrix_int4x3_sized.hpp',['../a00251.html',1,'']]], + ['matrix_5fint4x4_2ehpp_2406',['matrix_int4x4.hpp',['../a00254.html',1,'']]], + ['matrix_5fint4x4_5fsized_2ehpp_2407',['matrix_int4x4_sized.hpp',['../a00257.html',1,'']]], + ['matrix_5finterpolation_2ehpp_2408',['matrix_interpolation.hpp',['../a00668.html',1,'']]], + ['matrix_5finverse_2ehpp_2409',['matrix_inverse.hpp',['../a00551.html',1,'']]], + ['matrix_5fmajor_5fstorage_2ehpp_2410',['matrix_major_storage.hpp',['../a00671.html',1,'']]], + ['matrix_5foperation_2ehpp_2411',['matrix_operation.hpp',['../a00674.html',1,'']]], + ['matrix_5fprojection_2ehpp_2412',['matrix_projection.hpp',['../a00263.html',1,'']]], + ['matrix_5fquery_2ehpp_2413',['matrix_query.hpp',['../a00677.html',1,'']]], + ['matrix_5frelational_2ehpp_2414',['matrix_relational.hpp',['../a00266.html',1,'']]], + ['matrix_5ftransform_5f2d_2ehpp_2415',['matrix_transform_2d.hpp',['../a00680.html',1,'']]], + ['matrix_5fuint2x2_2ehpp_2416',['matrix_uint2x2.hpp',['../a00272.html',1,'']]], + ['matrix_5fuint2x2_5fsized_2ehpp_2417',['matrix_uint2x2_sized.hpp',['../a00275.html',1,'']]], + ['matrix_5fuint2x3_2ehpp_2418',['matrix_uint2x3.hpp',['../a00278.html',1,'']]], + ['matrix_5fuint2x3_5fsized_2ehpp_2419',['matrix_uint2x3_sized.hpp',['../a00281.html',1,'']]], + ['matrix_5fuint2x4_2ehpp_2420',['matrix_uint2x4.hpp',['../a00284.html',1,'']]], + ['matrix_5fuint2x4_5fsized_2ehpp_2421',['matrix_uint2x4_sized.hpp',['../a00287.html',1,'']]], + ['matrix_5fuint3x2_2ehpp_2422',['matrix_uint3x2.hpp',['../a00290.html',1,'']]], + ['matrix_5fuint3x2_5fsized_2ehpp_2423',['matrix_uint3x2_sized.hpp',['../a00293.html',1,'']]], + ['matrix_5fuint3x3_2ehpp_2424',['matrix_uint3x3.hpp',['../a00296.html',1,'']]], + ['matrix_5fuint3x3_5fsized_2ehpp_2425',['matrix_uint3x3_sized.hpp',['../a00299.html',1,'']]], + ['matrix_5fuint3x4_2ehpp_2426',['matrix_uint3x4.hpp',['../a00302.html',1,'']]], + ['matrix_5fuint4x2_2ehpp_2427',['matrix_uint4x2.hpp',['../a00308.html',1,'']]], + ['matrix_5fuint4x2_5fsized_2ehpp_2428',['matrix_uint4x2_sized.hpp',['../a00311.html',1,'']]], + ['matrix_5fuint4x3_2ehpp_2429',['matrix_uint4x3.hpp',['../a00314.html',1,'']]], + ['matrix_5fuint4x3_5fsized_2ehpp_2430',['matrix_uint4x3_sized.hpp',['../a00317.html',1,'']]], + ['matrix_5fuint4x4_2ehpp_2431',['matrix_uint4x4.hpp',['../a00320.html',1,'']]], + ['matrix_5fuint4x4_5fsized_2ehpp_2432',['matrix_uint4x4_sized.hpp',['../a00323.html',1,'']]], + ['mixed_5fproduct_2ehpp_2433',['mixed_product.hpp',['../a00683.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_b.html b/include/glm/doc/api/search/files_b.html new file mode 100644 index 0000000..d6bdab8 --- /dev/null +++ b/include/glm/doc/api/search/files_b.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_b.js b/include/glm/doc/api/search/files_b.js new file mode 100644 index 0000000..a75361d --- /dev/null +++ b/include/glm/doc/api/search/files_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['noise_2ehpp_2434',['noise.hpp',['../a00554.html',1,'']]], + ['norm_2ehpp_2435',['norm.hpp',['../a00686.html',1,'']]], + ['normal_2ehpp_2436',['normal.hpp',['../a00689.html',1,'']]], + ['normalize_5fdot_2ehpp_2437',['normalize_dot.hpp',['../a00692.html',1,'']]], + ['number_5fprecision_2ehpp_2438',['number_precision.hpp',['../a00695.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_c.html b/include/glm/doc/api/search/files_c.html new file mode 100644 index 0000000..20a22e9 --- /dev/null +++ b/include/glm/doc/api/search/files_c.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_c.js b/include/glm/doc/api/search/files_c.js new file mode 100644 index 0000000..356c516 --- /dev/null +++ b/include/glm/doc/api/search/files_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['optimum_5fpow_2ehpp_2439',['optimum_pow.hpp',['../a00698.html',1,'']]], + ['orthonormalize_2ehpp_2440',['orthonormalize.hpp',['../a00701.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_d.html b/include/glm/doc/api/search/files_d.html new file mode 100644 index 0000000..82d2156 --- /dev/null +++ b/include/glm/doc/api/search/files_d.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_d.js b/include/glm/doc/api/search/files_d.js new file mode 100644 index 0000000..8e1a3ed --- /dev/null +++ b/include/glm/doc/api/search/files_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['packing_2ehpp_2441',['packing.hpp',['../a00557.html',1,'']]], + ['pca_2ehpp_2442',['pca.hpp',['../a00704.html',1,'']]], + ['perpendicular_2ehpp_2443',['perpendicular.hpp',['../a00707.html',1,'']]], + ['polar_5fcoordinates_2ehpp_2444',['polar_coordinates.hpp',['../a00710.html',1,'']]], + ['projection_2ehpp_2445',['projection.hpp',['../a00713.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_e.html b/include/glm/doc/api/search/files_e.html new file mode 100644 index 0000000..637cd55 --- /dev/null +++ b/include/glm/doc/api/search/files_e.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_e.js b/include/glm/doc/api/search/files_e.js new file mode 100644 index 0000000..0b61fc7 --- /dev/null +++ b/include/glm/doc/api/search/files_e.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['quaternion_5fcommon_2ehpp_2446',['quaternion_common.hpp',['../a00326.html',1,'']]], + ['quaternion_5fdouble_2ehpp_2447',['quaternion_double.hpp',['../a00329.html',1,'']]], + ['quaternion_5fdouble_5fprecision_2ehpp_2448',['quaternion_double_precision.hpp',['../a00332.html',1,'']]], + ['quaternion_5fexponential_2ehpp_2449',['quaternion_exponential.hpp',['../a00335.html',1,'']]], + ['quaternion_5ffloat_2ehpp_2450',['quaternion_float.hpp',['../a00338.html',1,'']]], + ['quaternion_5ffloat_5fprecision_2ehpp_2451',['quaternion_float_precision.hpp',['../a00341.html',1,'']]], + ['quaternion_5fgeometric_2ehpp_2452',['quaternion_geometric.hpp',['../a00344.html',1,'']]], + ['quaternion_5frelational_2ehpp_2453',['quaternion_relational.hpp',['../a00347.html',1,'']]], + ['quaternion_5ftransform_2ehpp_2454',['quaternion_transform.hpp',['../a00350.html',1,'']]], + ['quaternion_5ftrigonometric_2ehpp_2455',['quaternion_trigonometric.hpp',['../a00353.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/files_f.html b/include/glm/doc/api/search/files_f.html new file mode 100644 index 0000000..ac88a76 --- /dev/null +++ b/include/glm/doc/api/search/files_f.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/files_f.js b/include/glm/doc/api/search/files_f.js new file mode 100644 index 0000000..a7683ce --- /dev/null +++ b/include/glm/doc/api/search/files_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['random_2ehpp_2456',['random.hpp',['../a00563.html',1,'']]], + ['range_2ehpp_2457',['range.hpp',['../a00716.html',1,'']]], + ['raw_5fdata_2ehpp_2458',['raw_data.hpp',['../a00719.html',1,'']]], + ['reciprocal_2ehpp_2459',['reciprocal.hpp',['../a00566.html',1,'']]], + ['rotate_5fnormalized_5faxis_2ehpp_2460',['rotate_normalized_axis.hpp',['../a00722.html',1,'']]], + ['rotate_5fvector_2ehpp_2461',['rotate_vector.hpp',['../a00725.html',1,'']]], + ['round_2ehpp_2462',['round.hpp',['../a00569.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/functions_0.html b/include/glm/doc/api/search/functions_0.html new file mode 100644 index 0000000..4fcbb9c --- /dev/null +++ b/include/glm/doc/api/search/functions_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_0.js b/include/glm/doc/api/search/functions_0.js new file mode 100644 index 0000000..9288947 --- /dev/null +++ b/include/glm/doc/api/search/functions_0.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['abs_2552',['abs',['../a00812.html#ga439e60a72eadecfeda2df5449c613a64',1,'glm::abs(genType x)'],['../a00812.html#ga81d3abddd0ef0c8de579bc541ecadab6',1,'glm::abs(vec< L, T, Q > const &x)']]], + ['acos_2553',['acos',['../a00995.html#gacc9b092df8257c68f19c9053703e2563',1,'glm']]], + ['acosh_2554',['acosh',['../a00995.html#ga858f35dc66fd2688f20c52b5f25be76a',1,'glm']]], + ['acot_2555',['acot',['../a00871.html#ga4ba4d4a791560ed05ee07e962207bb45',1,'glm']]], + ['acoth_2556',['acoth',['../a00871.html#ga6dcf17da7d24ef1c29c18bad1a5507e8',1,'glm']]], + ['acsc_2557',['acsc',['../a00871.html#ga0dbb21d8c5b660c7686e262115c3119e',1,'glm']]], + ['acsch_2558',['acsch',['../a00871.html#ga64c5b1bbbeb12731f3e765f26772373c',1,'glm']]], + ['adjugate_2559',['adjugate',['../a00958.html#ga40a38402a30860af6e508fe76211e659',1,'glm::adjugate(mat< 2, 2, T, Q > const &m)'],['../a00958.html#gaddb09f7abc1a9c56a243d32ff3538be6',1,'glm::adjugate(mat< 3, 3, T, Q > const &m)'],['../a00958.html#ga9aaa7d1f40391b0b5cacccb60e104ba8',1,'glm::adjugate(mat< 4, 4, T, Q > const &m)']]], + ['affineinverse_2560',['affineInverse',['../a00913.html#gae0fcc5fc8783291f9702272de428fa0e',1,'glm']]], + ['all_2561',['all',['../a00996.html#ga87e53f50b679f5f95c5cb4780311b3dd',1,'glm']]], + ['angle_2562',['angle',['../a00865.html#ga8aa248b31d5ade470c87304df5eb7bd8',1,'glm::angle(qua< T, Q > const &x)'],['../a00989.html#ga2e2917b4cb75ca3d043ac15ff88f14e1',1,'glm::angle(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['angleaxis_2563',['angleAxis',['../a00865.html#ga5c0095cfcb218c75a4b79d7687950036',1,'glm']]], + ['any_2564',['any',['../a00996.html#ga911b3f8e41459dd551ccb6d385d91061',1,'glm']]], + ['arecollinear_2565',['areCollinear',['../a00990.html#ga13da4a787a2ff70e95d561fb19ff91b4',1,'glm']]], + ['areorthogonal_2566',['areOrthogonal',['../a00990.html#gac7b95b3f798e3c293262b2bdaad47c57',1,'glm']]], + ['areorthonormal_2567',['areOrthonormal',['../a00990.html#ga1b091c3d7f9ee3b0708311c001c293e3',1,'glm']]], + ['asec_2568',['asec',['../a00871.html#ga0938f4ce4f0bfe414c85dd92f7c42400',1,'glm']]], + ['asech_2569',['asech',['../a00871.html#ga2db2855bc3ab46bdc83b01620f5d95f1',1,'glm']]], + ['asin_2570',['asin',['../a00995.html#ga0552d2df4865fa8c3d7cfc3ec2caac73',1,'glm']]], + ['asinh_2571',['asinh',['../a00995.html#ga3ef16b501ee859fddde88e22192a5950',1,'glm']]], + ['associatedmax_2572',['associatedMax',['../a00926.html#ga7d9c8785230c8db60f72ec8975f1ba45',1,'glm::associatedMax(T x, U a, T y, U b)'],['../a00926.html#ga66460edde3bbd331d1d8855159d80b23',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00926.html#ga0d169d6ce26b03248df175f39005d77f',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)'],['../a00926.html#ga4086269afabcb81dd7ded33cb3448653',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00926.html#gaec891e363d91abbf3a4443cf2f652209',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c)'],['../a00926.html#gab84fdc35016a31e8cd0cbb8296bddf7c',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00926.html#gadd2a2002f4f2144bbc39eb2336dd2fba',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)'],['../a00926.html#ga19f59d1141a51a3b2108a9807af78f7f',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)'],['../a00926.html#ga3038ffcb43eaa6af75897a99a5047ccc',1,'glm::associatedMax(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00926.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6',1,'glm::associatedMax(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00926.html#ga11477c2c4b5b0bfd1b72b29df3725a9d',1,'glm::associatedMax(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00926.html#gab9c3dd74cac899d2c625b5767ea3b3fb',1,'glm::associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], + ['associatedmin_2573',['associatedMin',['../a00926.html#ga3c550a0ac2d615bf90ab26ebc2c680f6',1,'glm::associatedMin(T x, U a, T y, U b)'],['../a00926.html#ga8392895670c92822fc81583942203220',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)'],['../a00926.html#gacfec519c820331d023ef53a511749319',1,'glm::associatedMin(T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)'],['../a00926.html#ga4757c7cab2d809124a8525d0a9deeb37',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)'],['../a00926.html#gad0aa8f86259a26d839d34a3577a923fc',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c)'],['../a00926.html#ga723e5411cebc7ffbd5c81ffeec61127d',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)'],['../a00926.html#ga432224ebe2085eaa2b63a077ecbbbff6',1,'glm::associatedMin(T x, U a, T y, U b, T z, U c, T w, U d)'],['../a00926.html#ga66b08118bc88f0494bcacb7cdb940556',1,'glm::associatedMin(vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)'],['../a00926.html#ga78c28fde1a7080fb7420bd88e68c6c68',1,'glm::associatedMin(T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)'],['../a00926.html#ga2db7e351994baee78540a562d4bb6d3b',1,'glm::associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)']]], + ['atan_2574',['atan',['../a00995.html#gac61629f3a4aa14057e7a8cae002291db',1,'glm::atan(vec< L, T, Q > const &y, vec< L, T, Q > const &x)'],['../a00995.html#ga5229f087eaccbc466f1c609ce3107b95',1,'glm::atan(vec< L, T, Q > const &y_over_x)']]], + ['atan2_2575',['atan2',['../a00933.html#ga9e7b4e9a672898b8cf80ef8ab414f87a',1,'glm::atan2(T y, T x)'],['../a00933.html#gac2af1a4b5c095b5a262f50e7c5ad7fb9',1,'glm::atan2(const vec< 2, T, Q > &y, const vec< 2, T, Q > &x)'],['../a00933.html#ga519d42527308dfd56e655d9ed6e1e727',1,'glm::atan2(const vec< 3, T, Q > &y, const vec< 3, T, Q > &x)'],['../a00933.html#ga8e1bdff7efb18ef15a3119773f261326',1,'glm::atan2(const vec< 4, T, Q > &y, const vec< 4, T, Q > &x)']]], + ['atanh_2576',['atanh',['../a00995.html#gabc925650e618357d07da255531658b87',1,'glm']]], + ['axis_2577',['axis',['../a00865.html#ga764254f10248b505e936e5309a88c23d',1,'glm']]], + ['axisangle_2578',['axisAngle',['../a00956.html#ga75220364722b0e367df98af61de4c3e5',1,'glm']]], + ['axisanglematrix_2579',['axisAngleMatrix',['../a00956.html#ga3a788e2f5223397df5c426413ecc2f6b',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_1.html b/include/glm/doc/api/search/functions_1.html new file mode 100644 index 0000000..9b0e1f0 --- /dev/null +++ b/include/glm/doc/api/search/functions_1.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_1.js b/include/glm/doc/api/search/functions_1.js new file mode 100644 index 0000000..7f8b75c --- /dev/null +++ b/include/glm/doc/api/search/functions_1.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['backeasein_2580',['backEaseIn',['../a00936.html#ga93cddcdb6347a44d5927cc2bf2570816',1,'glm::backEaseIn(genType const &a)'],['../a00936.html#ga33777c9dd98f61d9472f96aafdf2bd36',1,'glm::backEaseIn(genType const &a, genType const &o)']]], + ['backeaseinout_2581',['backEaseInOut',['../a00936.html#gace6d24722a2f6722b56398206eb810bb',1,'glm::backEaseInOut(genType const &a)'],['../a00936.html#ga68a7b760f2afdfab298d5cd6d7611fb1',1,'glm::backEaseInOut(genType const &a, genType const &o)']]], + ['backeaseout_2582',['backEaseOut',['../a00936.html#gabf25069fa906413c858fd46903d520b9',1,'glm::backEaseOut(genType const &a)'],['../a00936.html#ga640c1ac6fe9d277a197da69daf60ee4f',1,'glm::backEaseOut(genType const &a, genType const &o)']]], + ['ballrand_2583',['ballRand',['../a00918.html#ga7c53b7797f3147af68a11c767679fa3f',1,'glm']]], + ['bitcount_2584',['bitCount',['../a00992.html#ga44abfe3379e11cbd29425a843420d0d6',1,'glm::bitCount(genType v)'],['../a00992.html#gaac7b15e40bdea8d9aa4c4cb34049f7b5',1,'glm::bitCount(vec< L, T, Q > const &v)']]], + ['bitfielddeinterleave_2585',['bitfieldDeinterleave',['../a00906.html#ga091d934233a2e121df91b8c7230357c8',1,'glm::bitfieldDeinterleave(glm::uint16 x)'],['../a00906.html#ga7d1cc24dfbcdd932c3a2abbb76235f98',1,'glm::bitfieldDeinterleave(glm::uint32 x)'],['../a00906.html#ga8dbb8c87092f33bd815dd8a840be5d60',1,'glm::bitfieldDeinterleave(glm::uint64 x)']]], + ['bitfieldextract_2586',['bitfieldExtract',['../a00992.html#ga346b25ab11e793e91a4a69c8aa6819f2',1,'glm']]], + ['bitfieldfillone_2587',['bitfieldFillOne',['../a00906.html#ga46f9295abe3b5c7658f5b13c7f819f0a',1,'glm::bitfieldFillOne(genIUType Value, int FirstBit, int BitCount)'],['../a00906.html#ga3e96dd1f0a4bc892f063251ed118c0c1',1,'glm::bitfieldFillOne(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], + ['bitfieldfillzero_2588',['bitfieldFillZero',['../a00906.html#ga697b86998b7d74ee0a69d8e9f8819fee',1,'glm::bitfieldFillZero(genIUType Value, int FirstBit, int BitCount)'],['../a00906.html#ga0d16c9acef4be79ea9b47c082a0cf7c2',1,'glm::bitfieldFillZero(vec< L, T, Q > const &Value, int FirstBit, int BitCount)']]], + ['bitfieldinsert_2589',['bitfieldInsert',['../a00992.html#ga2e82992340d421fadb61a473df699b20',1,'glm']]], + ['bitfieldinterleave_2590',['bitfieldInterleave',['../a00906.html#ga24cad0069f9a0450abd80b3e89501adf',1,'glm::bitfieldInterleave(int8 x, int8 y)'],['../a00906.html#ga9a4976a529aec2cee56525e1165da484',1,'glm::bitfieldInterleave(uint8 x, uint8 y)'],['../a00906.html#ga4a76bbca39c40153f3203d0a1926e142',1,'glm::bitfieldInterleave(u8vec2 const &v)'],['../a00906.html#gac51c33a394593f0631fa3aa5bb778809',1,'glm::bitfieldInterleave(int16 x, int16 y)'],['../a00906.html#ga94f3646a5667f4be56f8dcf3310e963f',1,'glm::bitfieldInterleave(uint16 x, uint16 y)'],['../a00906.html#ga406c4ee56af4ca37a73f449f154eca3e',1,'glm::bitfieldInterleave(u16vec2 const &v)'],['../a00906.html#gaebb756a24a0784e3d6fba8bd011ab77a',1,'glm::bitfieldInterleave(int32 x, int32 y)'],['../a00906.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd',1,'glm::bitfieldInterleave(uint32 x, uint32 y)'],['../a00906.html#ga8cb17574d60abd6ade84bc57c10e8f78',1,'glm::bitfieldInterleave(u32vec2 const &v)'],['../a00906.html#ga8fdb724dccd4a07d57efc01147102137',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z)'],['../a00906.html#ga9fc2a0dd5dcf8b00e113f272a5feca93',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z)'],['../a00906.html#gaa901c36a842fa5d126ea650549f17b24',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z)'],['../a00906.html#ga3afd6d38881fe3948c53d4214d2197fd',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z)'],['../a00906.html#gad2075d96a6640121edaa98ea534102ca',1,'glm::bitfieldInterleave(int32 x, int32 y, int32 z)'],['../a00906.html#gab19fbc739fc0cf7247978602c36f7da8',1,'glm::bitfieldInterleave(uint32 x, uint32 y, uint32 z)'],['../a00906.html#ga8a44ae22f5c953b296c42d067dccbe6d',1,'glm::bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)'],['../a00906.html#ga14bb274d54a3c26f4919dd7ed0dd0c36',1,'glm::bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)'],['../a00906.html#ga180a63161e1319fbd5a53c84d0429c7a',1,'glm::bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)'],['../a00906.html#gafca8768671a14c8016facccb66a89f26',1,'glm::bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)']]], + ['bitfieldreverse_2591',['bitfieldReverse',['../a00992.html#ga750a1d92464489b7711dee67aa3441b6',1,'glm']]], + ['bitfieldrotateleft_2592',['bitfieldRotateLeft',['../a00906.html#ga2eb49678a344ce1495bdb5586d9896b9',1,'glm::bitfieldRotateLeft(genIUType In, int Shift)'],['../a00906.html#gae186317091b1a39214ebf79008d44a1e',1,'glm::bitfieldRotateLeft(vec< L, T, Q > const &In, int Shift)']]], + ['bitfieldrotateright_2593',['bitfieldRotateRight',['../a00906.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca',1,'glm::bitfieldRotateRight(genIUType In, int Shift)'],['../a00906.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88',1,'glm::bitfieldRotateRight(vec< L, T, Q > const &In, int Shift)']]], + ['bounceeasein_2594',['bounceEaseIn',['../a00936.html#gaac30767f2e430b0c3fc859a4d59c7b5b',1,'glm']]], + ['bounceeaseinout_2595',['bounceEaseInOut',['../a00936.html#gadf9f38eff1e5f4c2fa5b629a25ae413e',1,'glm']]], + ['bounceeaseout_2596',['bounceEaseOut',['../a00936.html#ga94007005ff0dcfa0749ebfa2aec540b2',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_10.html b/include/glm/doc/api/search/functions_10.html new file mode 100644 index 0000000..7a7a444 --- /dev/null +++ b/include/glm/doc/api/search/functions_10.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_10.js b/include/glm/doc/api/search/functions_10.js new file mode 100644 index 0000000..a513d5b --- /dev/null +++ b/include/glm/doc/api/search/functions_10.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['saturate_3024',['saturate',['../a00933.html#ga744b98814a35336e25cc0d1ba30f63f7',1,'glm::saturate(T x)'],['../a00933.html#gaee97b8001c794a78a44f5d59f62a8aba',1,'glm::saturate(const vec< 2, T, Q > &x)'],['../a00933.html#ga39bfe3a421286ee31680d45c31ccc161',1,'glm::saturate(const vec< 3, T, Q > &x)'],['../a00933.html#ga356f8c3a7e7d6376d3d4b0a026407183',1,'glm::saturate(const vec< 4, T, Q > &x)']]], + ['saturation_3025',['saturation',['../a00930.html#ga01a97152b44e1550edcac60bd849e884',1,'glm::saturation(T const s)'],['../a00930.html#ga2156cea600e90148ece5bc96fd6db43a',1,'glm::saturation(T const s, vec< 3, T, Q > const &color)'],['../a00930.html#gaba0eacee0736dae860e9371cc1ae4785',1,'glm::saturation(T const s, vec< 4, T, Q > const &color)']]], + ['scale_3026',['scale',['../a00837.html#ga05051adbee603fb3c5095d8cf5cc229b',1,'glm::scale(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00960.html#gadb47d2ad2bd984b213e8ff7d9cd8154e',1,'glm::scale(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00984.html#gafbeefee8fec884d566e4ada0049174d7',1,'glm::scale(vec< 3, T, Q > const &v)']]], + ['scalebias_3027',['scaleBias',['../a00985.html#gabf249498b236e62c983d90d30d63c99c',1,'glm::scaleBias(T scale, T bias)'],['../a00985.html#gae2bdd91a76759fecfbaef97e3020aa8e',1,'glm::scaleBias(mat< 4, 4, T, Q > const &m, T scale, T bias)']]], + ['sec_3028',['sec',['../a00871.html#ga225db01831b8a4b5a3d9bd3e486ed21c',1,'glm']]], + ['sech_3029',['sech',['../a00871.html#ga0e16a0de56f2bf9a432dc2776020fc7a',1,'glm']]], + ['shear_3030',['shear',['../a00837.html#ga391e0142852ab4139dcea0d9b1bbc048',1,'glm']]], + ['shearx_3031',['shearX',['../a00960.html#ga2a118ece5db1e2022112b954846012af',1,'glm']]], + ['shearx2d_3032',['shearX2D',['../a00985.html#gabf714b8a358181572b32a45555f71948',1,'glm']]], + ['shearx3d_3033',['shearX3D',['../a00985.html#ga73e867c6cd4d700fe2054437e56106c4',1,'glm']]], + ['sheary_3034',['shearY',['../a00960.html#ga717f1833369c1ac4a40e4ac015af885e',1,'glm']]], + ['sheary2d_3035',['shearY2D',['../a00985.html#gac7998d0763d9181550c77e8af09a182c',1,'glm']]], + ['sheary3d_3036',['shearY3D',['../a00985.html#gade5bb65ffcb513973db1a1314fb5cfac',1,'glm']]], + ['shearz3d_3037',['shearZ3D',['../a00985.html#ga6591e0a3a9d2c9c0b6577bb4dace0255',1,'glm']]], + ['shortmix_3038',['shortMix',['../a00972.html#gadc576cc957adc2a568cdcbc3799175bc',1,'glm']]], + ['sign_3039',['sign',['../a00812.html#ga589807f35ad0a1d173762bfac3288929',1,'glm::sign(vec< L, T, Q > const &x)'],['../a00952.html#ga04ef803a24f3d4f8c67dbccb33b0fce0',1,'glm::sign(vec< L, T, Q > const &x, vec< L, T, Q > const &base)']]], + ['simplex_3040',['simplex',['../a00915.html#ga8122468c69015ff397349a7dcc638b27',1,'glm']]], + ['sin_3041',['sin',['../a00995.html#ga29747fd108cb7292ae5a284f69691a69',1,'glm']]], + ['sineeasein_3042',['sineEaseIn',['../a00936.html#gafb338ac6f6b2bcafee50e3dca5201dbf',1,'glm']]], + ['sineeaseinout_3043',['sineEaseInOut',['../a00936.html#gaa46e3d5fbf7a15caa28eff9ef192d7c7',1,'glm']]], + ['sineeaseout_3044',['sineEaseOut',['../a00936.html#gab3e454f883afc1606ef91363881bf5a3',1,'glm']]], + ['sinh_3045',['sinh',['../a00995.html#gac7c39ff21809e281552b4dbe46f4a39d',1,'glm']]], + ['slerp_3046',['slerp',['../a00856.html#gae7fc3c945be366b9942b842f55da428a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00856.html#ga8514da9c52cfee86f716cc0933ce118a',1,'glm::slerp(qua< T, Q > const &x, qua< T, Q > const &y, T a, S k)'],['../a00976.html#ga8b11b18ce824174ea1a5a69ea14e2cee',1,'glm::slerp(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, T const &a)']]], + ['smoothstep_3047',['smoothstep',['../a00812.html#ga562edf7eca082cc5b7a0aaf180436daf',1,'glm']]], + ['sorteigenvalues_3048',['sortEigenvalues',['../a00968.html#ga2824ef6f23df255f86b9c33cebd5da2f',1,'glm::sortEigenvalues(vec< 2, T, Q > &eigenvalues, mat< 2, 2, T, Q > &eigenvectors)'],['../a00968.html#gaf6fbcbcca3eb46f4fd6d491a979db7c5',1,'glm::sortEigenvalues(vec< 3, T, Q > &eigenvalues, mat< 3, 3, T, Q > &eigenvectors)'],['../a00968.html#ga3fe570b4abe7eca8afb32896d77394f5',1,'glm::sortEigenvalues(vec< 4, T, Q > &eigenvalues, mat< 4, 4, T, Q > &eigenvectors)']]], + ['sphericalrand_3049',['sphericalRand',['../a00918.html#ga22f90fcaccdf001c516ca90f6428e138',1,'glm']]], + ['sqrt_3050',['sqrt',['../a00813.html#gaa83e5f1648b7ccdf33b87c07c76cb77c',1,'glm::sqrt(vec< L, T, Q > const &v)'],['../a00864.html#ga64b7b255ed7bcba616fe6b44470b022e',1,'glm::sqrt(qua< T, Q > const &q)'],['../a00948.html#ga7ce36693a75879ccd9bb10167cfa722d',1,'glm::sqrt(int x)'],['../a00948.html#ga1975d318978d6dacf78b6444fa5ed7bc',1,'glm::sqrt(uint x)']]], + ['squad_3051',['squad',['../a00972.html#ga0b9bf3459e132ad8a18fe970669e3e35',1,'glm']]], + ['step_3052',['step',['../a00812.html#ga015a1261ff23e12650211aa872863cce',1,'glm::step(genType edge, genType x)'],['../a00812.html#ga8f9a911a48ef244b51654eaefc81c551',1,'glm::step(T edge, vec< L, T, Q > const &x)'],['../a00812.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f',1,'glm::step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)']]] +]; diff --git a/include/glm/doc/api/search/functions_11.html b/include/glm/doc/api/search/functions_11.html new file mode 100644 index 0000000..e77ce3b --- /dev/null +++ b/include/glm/doc/api/search/functions_11.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_11.js b/include/glm/doc/api/search/functions_11.js new file mode 100644 index 0000000..8ddbcbb --- /dev/null +++ b/include/glm/doc/api/search/functions_11.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['tan_3053',['tan',['../a00995.html#ga293a34cfb9f0115cc606b4a97c84f11f',1,'glm']]], + ['tanh_3054',['tanh',['../a00995.html#gaa1bccbfdcbe40ed2ffcddc2aa8bfd0f1',1,'glm']]], + ['tau_3055',['tau',['../a00908.html#gae645d3bb4076df6976b3c0821831b422',1,'glm']]], + ['third_3056',['third',['../a00908.html#ga3077c6311010a214b69ddc8214ec13b5',1,'glm']]], + ['three_5fover_5ftwo_5fpi_3057',['three_over_two_pi',['../a00908.html#gae94950df74b0ce382b1fc1d978ef7394',1,'glm']]], + ['to_5fstring_3058',['to_string',['../a00981.html#ga8f0dced1fd45e67e2d77e80ab93c7af5',1,'glm']]], + ['tomat3_3059',['toMat3',['../a00972.html#gac228e3fcfa813841804362fcae02b337',1,'glm']]], + ['tomat4_3060',['toMat4',['../a00972.html#gad0d0c14d7d3c852b41d6a6e4d1da6606',1,'glm']]], + ['toquat_3061',['toQuat',['../a00972.html#ga7b2be33d948db631c8815e9f2953a451',1,'glm::toQuat(mat< 3, 3, T, Q > const &x)'],['../a00972.html#ga4cf12d456770d716b590fd498bce6136',1,'glm::toQuat(mat< 4, 4, T, Q > const &x)']]], + ['translate_3062',['translate',['../a00837.html#gac6b494bda2f47615b2fd3e70f3d2c912',1,'glm::translate(mat< 4, 4, T, Q > const &m, vec< 3, T, Q > const &v)'],['../a00960.html#gaf4573ae47c80938aa9053ef6a33755ab',1,'glm::translate(mat< 3, 3, T, Q > const &m, vec< 2, T, Q > const &v)'],['../a00984.html#ga309a30e652e58c396e2c3d4db3ee7658',1,'glm::translate(vec< 3, T, Q > const &v)']]], + ['transpose_3063',['transpose',['../a00834.html#ga4bedcb9c511484f38fd30a60c95f4679',1,'glm']]], + ['trianglenormal_3064',['triangleNormal',['../a00963.html#gaff1cb5496925dfa7962df457772a7f35',1,'glm']]], + ['trunc_3065',['trunc',['../a00812.html#gaf9375e3e06173271d49e6ffa3a334259',1,'glm']]], + ['tweakedinfiniteperspective_3066',['tweakedInfinitePerspective',['../a00814.html#gaaeacc04a2a6f4b18c5899d37e7bb3ef9',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near)'],['../a00814.html#gaf5b3c85ff6737030a1d2214474ffa7a8',1,'glm::tweakedInfinitePerspective(T fovy, T aspect, T near, T ep)']]], + ['two_5fover_5fpi_3067',['two_over_pi',['../a00908.html#ga74eadc8a211253079683219a3ea0462a',1,'glm']]], + ['two_5fover_5froot_5fpi_3068',['two_over_root_pi',['../a00908.html#ga5827301817640843cf02026a8d493894',1,'glm']]], + ['two_5fpi_3069',['two_pi',['../a00908.html#gaa5276a4617566abcfe49286f40e3a256',1,'glm']]], + ['two_5fthirds_3070',['two_thirds',['../a00908.html#ga9b4d2f4322edcf63a6737b92a29dd1f5',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_12.html b/include/glm/doc/api/search/functions_12.html new file mode 100644 index 0000000..f641914 --- /dev/null +++ b/include/glm/doc/api/search/functions_12.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_12.js b/include/glm/doc/api/search/functions_12.js new file mode 100644 index 0000000..217dc12 --- /dev/null +++ b/include/glm/doc/api/search/functions_12.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['uaddcarry_3071',['uaddCarry',['../a00992.html#gaedcec48743632dff6786bcc492074b1b',1,'glm']]], + ['uintbitstofloat_3072',['uintBitsToFloat',['../a00812.html#gac427a0b389f2c585269c36ccaee9c5ed',1,'glm::uintBitsToFloat(uint v)'],['../a00812.html#ga97f46b5f7b42fe44482e13356eb394ae',1,'glm::uintBitsToFloat(vec< L, uint, Q > const &v)']]], + ['umulextended_3073',['umulExtended',['../a00992.html#gad22052a7e47d9408ad65ac675abe1663',1,'glm']]], + ['unpackdouble2x32_3074',['unpackDouble2x32',['../a00994.html#ga5f4296dc5f12f0aa67ac05b8bb322483',1,'glm']]], + ['unpackf2x11_5f1x10_3075',['unpackF2x11_1x10',['../a00916.html#ga2b1fd1e854705b1345e98409e0a25e50',1,'glm']]], + ['unpackf3x9_5fe1x5_3076',['unpackF3x9_E1x5',['../a00916.html#gab9e60ebe3ad3eeced6a9ec6eb876d74e',1,'glm']]], + ['unpackhalf_3077',['unpackHalf',['../a00916.html#ga30d6b2f1806315bcd6047131f547d33b',1,'glm']]], + ['unpackhalf1x16_3078',['unpackHalf1x16',['../a00916.html#gac37dedaba24b00adb4ec6e8f92c19dbf',1,'glm']]], + ['unpackhalf2x16_3079',['unpackHalf2x16',['../a00994.html#gaf59b52e6b28da9335322c4ae19b5d745',1,'glm']]], + ['unpackhalf4x16_3080',['unpackHalf4x16',['../a00916.html#ga57dfc41b2eb20b0ac00efae7d9c49dcd',1,'glm']]], + ['unpacki3x10_5f1x2_3081',['unpackI3x10_1x2',['../a00916.html#ga9a05330e5490be0908d3b117d82aff56',1,'glm']]], + ['unpackint2x16_3082',['unpackInt2x16',['../a00916.html#gaccde055882918a3175de82f4ca8b7d8e',1,'glm']]], + ['unpackint2x32_3083',['unpackInt2x32',['../a00916.html#gab297c0bfd38433524791eb0584d8f08d',1,'glm']]], + ['unpackint2x8_3084',['unpackInt2x8',['../a00916.html#gab0c59f1e259fca9e68adb2207a6b665e',1,'glm']]], + ['unpackint4x16_3085',['unpackInt4x16',['../a00916.html#ga52c154a9b232b62c22517a700cc0c78c',1,'glm']]], + ['unpackint4x8_3086',['unpackInt4x8',['../a00916.html#ga1cd8d2038cdd33a860801aa155a26221',1,'glm']]], + ['unpackrgbm_3087',['unpackRGBM',['../a00916.html#ga5c1ec97894b05ea21a05aea4f0204a02',1,'glm']]], + ['unpacksnorm_3088',['unpackSnorm',['../a00916.html#ga6d49b31e5c3f9df8e1f99ab62b999482',1,'glm']]], + ['unpacksnorm1x16_3089',['unpackSnorm1x16',['../a00916.html#ga96dd15002370627a443c835ab03a766c',1,'glm']]], + ['unpacksnorm1x8_3090',['unpackSnorm1x8',['../a00916.html#ga4851ff86678aa1c7ace9d67846894285',1,'glm']]], + ['unpacksnorm2x16_3091',['unpackSnorm2x16',['../a00994.html#gacd8f8971a3fe28418be0d0fa1f786b38',1,'glm']]], + ['unpacksnorm2x8_3092',['unpackSnorm2x8',['../a00916.html#ga8b128e89be449fc71336968a66bf6e1a',1,'glm']]], + ['unpacksnorm3x10_5f1x2_3093',['unpackSnorm3x10_1x2',['../a00916.html#ga7a4fbf79be9740e3c57737bc2af05e5b',1,'glm']]], + ['unpacksnorm4x16_3094',['unpackSnorm4x16',['../a00916.html#gaaddf9c353528fe896106f7181219c7f4',1,'glm']]], + ['unpacksnorm4x8_3095',['unpackSnorm4x8',['../a00994.html#ga2db488646d48b7c43d3218954523fe82',1,'glm']]], + ['unpacku3x10_5f1x2_3096',['unpackU3x10_1x2',['../a00916.html#ga48df3042a7d079767f5891a1bfd8a60a',1,'glm']]], + ['unpackuint2x16_3097',['unpackUint2x16',['../a00916.html#ga035bbbeab7ec2b28c0529757395b645b',1,'glm']]], + ['unpackuint2x32_3098',['unpackUint2x32',['../a00916.html#gaf942ff11b65e83eb5f77e68329ebc6ab',1,'glm']]], + ['unpackuint2x8_3099',['unpackUint2x8',['../a00916.html#gaa7600a6c71784b637a410869d2a5adcd',1,'glm']]], + ['unpackuint4x16_3100',['unpackUint4x16',['../a00916.html#gab173834ef14cfc23a96a959f3ff4b8dc',1,'glm']]], + ['unpackuint4x8_3101',['unpackUint4x8',['../a00916.html#gaf6dc0e4341810a641c7ed08f10e335d1',1,'glm']]], + ['unpackunorm_3102',['unpackUnorm',['../a00916.html#ga3e6ac9178b59f0b1b2f7599f2183eb7f',1,'glm']]], + ['unpackunorm1x16_3103',['unpackUnorm1x16',['../a00916.html#ga83d34160a5cb7bcb5339823210fc7501',1,'glm']]], + ['unpackunorm1x5_5f1x6_5f1x5_3104',['unpackUnorm1x5_1x6_1x5',['../a00916.html#gab3bc08ecfc0f3339be93fb2b3b56d88a',1,'glm']]], + ['unpackunorm1x8_3105',['unpackUnorm1x8',['../a00916.html#ga1319207e30874fb4931a9ee913983ee1',1,'glm']]], + ['unpackunorm2x16_3106',['unpackUnorm2x16',['../a00994.html#ga1f66188e5d65afeb9ffba1ad971e4007',1,'glm']]], + ['unpackunorm2x3_5f1x2_3107',['unpackUnorm2x3_1x2',['../a00916.html#ga6abd5a9014df3b5ce4059008d2491260',1,'glm']]], + ['unpackunorm2x4_3108',['unpackUnorm2x4',['../a00916.html#ga2e50476132fe5f27f08e273d9c70d85b',1,'glm']]], + ['unpackunorm2x8_3109',['unpackUnorm2x8',['../a00916.html#ga637cbe3913dd95c6e7b4c99c61bd611f',1,'glm']]], + ['unpackunorm3x10_5f1x2_3110',['unpackUnorm3x10_1x2',['../a00916.html#ga5156d3060355fe332865da2c7f78815f',1,'glm']]], + ['unpackunorm3x5_5f1x1_3111',['unpackUnorm3x5_1x1',['../a00916.html#ga5ff95ff5bc16f396432ab67243dbae4d',1,'glm']]], + ['unpackunorm4x16_3112',['unpackUnorm4x16',['../a00916.html#ga2ae149c5d2473ac1e5f347bb654a242d',1,'glm']]], + ['unpackunorm4x4_3113',['unpackUnorm4x4',['../a00916.html#gac58ee89d0e224bb6df5e8bbb18843a2d',1,'glm']]], + ['unpackunorm4x8_3114',['unpackUnorm4x8',['../a00994.html#ga7f903259150b67e9466f5f8edffcd197',1,'glm']]], + ['unproject_3115',['unProject',['../a00835.html#ga36641e5d60f994e01c3d8f56b10263d2',1,'glm']]], + ['unprojectno_3116',['unProjectNO',['../a00835.html#gae089ba9fc150ff69c252a20e508857b5',1,'glm']]], + ['unprojectzo_3117',['unProjectZO',['../a00835.html#gade5136413ce530f8e606124d570fba32',1,'glm']]], + ['uround_3118',['uround',['../a00866.html#ga9d915647ec33c4110946665f914d3abb',1,'glm::uround(genType const &x)'],['../a00877.html#ga6715b9d573972a0f7763d30d45bcaec4',1,'glm::uround(vec< L, T, Q > const &x)']]], + ['usubborrow_3119',['usubBorrow',['../a00992.html#gae3316ba1229ad9b9f09480833321b053',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_13.html b/include/glm/doc/api/search/functions_13.html new file mode 100644 index 0000000..65faa02 --- /dev/null +++ b/include/glm/doc/api/search/functions_13.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_13.js b/include/glm/doc/api/search/functions_13.js new file mode 100644 index 0000000..ce156a7 --- /dev/null +++ b/include/glm/doc/api/search/functions_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['value_5fptr_3120',['value_ptr',['../a00923.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_14.html b/include/glm/doc/api/search/functions_14.html new file mode 100644 index 0000000..527223c --- /dev/null +++ b/include/glm/doc/api/search/functions_14.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_14.js b/include/glm/doc/api/search/functions_14.js new file mode 100644 index 0000000..ec5f483 --- /dev/null +++ b/include/glm/doc/api/search/functions_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wrapangle_3121',['wrapAngle',['../a00943.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_15.html b/include/glm/doc/api/search/functions_15.html new file mode 100644 index 0000000..932bb87 --- /dev/null +++ b/include/glm/doc/api/search/functions_15.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_15.js b/include/glm/doc/api/search/functions_15.js new file mode 100644 index 0000000..8cffa74 --- /dev/null +++ b/include/glm/doc/api/search/functions_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['yaw_3122',['yaw',['../a00917.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], + ['yawpitchroll_3123',['yawPitchRoll',['../a00937.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], + ['ycocg2rgb_3124',['YCoCg2rgb',['../a00931.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], + ['ycocgr2rgb_3125',['YCoCgR2rgb',['../a00931.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_16.html b/include/glm/doc/api/search/functions_16.html new file mode 100644 index 0000000..a42c030 --- /dev/null +++ b/include/glm/doc/api/search/functions_16.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_16.js b/include/glm/doc/api/search/functions_16.js new file mode 100644 index 0000000..2f5a8a7 --- /dev/null +++ b/include/glm/doc/api/search/functions_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zero_3126',['zero',['../a00908.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_2.html b/include/glm/doc/api/search/functions_2.html new file mode 100644 index 0000000..eb51f80 --- /dev/null +++ b/include/glm/doc/api/search/functions_2.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_2.js b/include/glm/doc/api/search/functions_2.js new file mode 100644 index 0000000..cc349ad --- /dev/null +++ b/include/glm/doc/api/search/functions_2.js @@ -0,0 +1,44 @@ +var searchData= +[ + ['catmullrom_2597',['catmullRom',['../a00979.html#ga8119c04f8210fd0d292757565cd6918d',1,'glm']]], + ['ceil_2598',['ceil',['../a00812.html#gafb9d2a645a23aca12d4d6de0104b7657',1,'glm']]], + ['ceilmultiple_2599',['ceilMultiple',['../a00920.html#ga1d89ac88582aaf4d5dfa5feb4a376fd4',1,'glm::ceilMultiple(genType v, genType Multiple)'],['../a00920.html#gab77fdcc13f8e92d2e0b1b7d7aeab8e9d',1,'glm::ceilMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['ceilpoweroftwo_2600',['ceilPowerOfTwo',['../a00920.html#ga5c3ef36ae32aa4271f1544f92bd578b6',1,'glm::ceilPowerOfTwo(genIUType v)'],['../a00920.html#gab53d4a97c0d3e297be5f693cdfdfe5d2',1,'glm::ceilPowerOfTwo(vec< L, T, Q > const &v)']]], + ['circulareasein_2601',['circularEaseIn',['../a00936.html#ga34508d4b204a321ec26d6086aa047997',1,'glm']]], + ['circulareaseinout_2602',['circularEaseInOut',['../a00936.html#ga0c1027637a5b02d4bb3612aa12599d69',1,'glm']]], + ['circulareaseout_2603',['circularEaseOut',['../a00936.html#ga26fefde9ced9b72745fe21f1a3fe8da7',1,'glm']]], + ['circularrand_2604',['circularRand',['../a00918.html#ga9dd05c36025088fae25b97c869e88517',1,'glm']]], + ['clamp_2605',['clamp',['../a00812.html#ga7cd77683da6361e297c56443fc70806d',1,'glm::clamp(genType x, genType minVal, genType maxVal)'],['../a00812.html#gafba2e0674deb5953878d89483cd6323d',1,'glm::clamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00812.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d',1,'glm::clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)'],['../a00866.html#ga6c0cc6bd1d67ea1008d2592e998bad33',1,'glm::clamp(genType const &Texcoord)'],['../a00877.html#gab43dbf24b7d827e293106d3e8096e065',1,'glm::clamp(vec< L, T, Q > const &Texcoord)']]], + ['closebounded_2606',['closeBounded',['../a00932.html#gab7d89c14c48ad01f720fb5daf8813161',1,'glm']]], + ['closestpointonline_2607',['closestPointOnLine',['../a00928.html#ga36529c278ef716986151d58d151d697d',1,'glm::closestPointOnLine(vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)'],['../a00928.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0',1,'glm::closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)']]], + ['colmajor2_2608',['colMajor2',['../a00957.html#gaaff72f11286e59a4a88ed21a347f284c',1,'glm::colMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00957.html#gafc25fd44196c92b1397b127aec1281ab',1,'glm::colMajor2(mat< 2, 2, T, Q > const &m)']]], + ['colmajor3_2609',['colMajor3',['../a00957.html#ga1e25b72b085087740c92f5c70f3b051f',1,'glm::colMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00957.html#ga86bd0656e787bb7f217607572590af27',1,'glm::colMajor3(mat< 3, 3, T, Q > const &m)']]], + ['colmajor4_2610',['colMajor4',['../a00957.html#gaf4aa6c7e17bfce41a6c13bf6469fab05',1,'glm::colMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00957.html#gaf3f9511c366c20ba2e4a64c9e4cec2b3',1,'glm::colMajor4(mat< 4, 4, T, Q > const &m)']]], + ['column_2611',['column',['../a00911.html#ga96022eb0d3fae39d89fc7a954e59b374',1,'glm::column(genType const &m, length_t index)'],['../a00911.html#ga9e757377523890e8b80c5843dbe4dd15',1,'glm::column(genType const &m, length_t index, typename genType::col_type const &x)']]], + ['compadd_2612',['compAdd',['../a00934.html#gaf71833350e15e74d31cbf8a3e7f27051',1,'glm']]], + ['compmax_2613',['compMax',['../a00934.html#gabfa4bb19298c8c73d4217ba759c496b6',1,'glm']]], + ['compmin_2614',['compMin',['../a00934.html#gab5d0832b5c7bb01b8d7395973bfb1425',1,'glm']]], + ['compmul_2615',['compMul',['../a00934.html#gae8ab88024197202c9479d33bdc5a8a5d',1,'glm']]], + ['compnormalize_2616',['compNormalize',['../a00934.html#ga8f2b81ada8515875e58cb1667b6b9908',1,'glm']]], + ['compscale_2617',['compScale',['../a00934.html#ga80abc2980d65d675f435d178c36880eb',1,'glm']]], + ['computecovariancematrix_2618',['computeCovarianceMatrix',['../a00968.html#ga2d6dc3e25182cae243cdf55310059af0',1,'glm::computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n)'],['../a00968.html#gabfc7aba26da1eed6726f2484584f4077',1,'glm::computeCovarianceMatrix(vec< D, T, Q > const *v, size_t n, vec< D, T, Q > const &c)'],['../a00968.html#ga2c7b5ff4e0f4132a23e58eeb0803b53a',1,'glm::computeCovarianceMatrix(I const &b, I const &e)'],['../a00968.html#ga666383aa52036f00f3b66e4e7e56da3a',1,'glm::computeCovarianceMatrix(I const &b, I const &e, vec< D, T, Q > const &c)']]], + ['conjugate_2619',['conjugate',['../a00856.html#ga5b646f1cd4422eb76ab90496bcd0b60a',1,'glm']]], + ['convertd65xyztod50xyz_2620',['convertD65XYZToD50XYZ',['../a00929.html#gad12f4f65022b2c80e33fcba2ced0dc48',1,'glm']]], + ['convertd65xyztolinearsrgb_2621',['convertD65XYZToLinearSRGB',['../a00929.html#ga5265386fc3ac29e4c580d37ed470859c',1,'glm']]], + ['convertlinearsrgbtod50xyz_2622',['convertLinearSRGBToD50XYZ',['../a00929.html#ga1522ba180e3d83d554a734056da031f9',1,'glm']]], + ['convertlinearsrgbtod65xyz_2623',['convertLinearSRGBToD65XYZ',['../a00929.html#gaf9e130d9d4ccf51cc99317de7449f369',1,'glm']]], + ['convertlineartosrgb_2624',['convertLinearToSRGB',['../a00907.html#ga42239e7b3da900f7ef37cec7e2476579',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear)'],['../a00907.html#gaace0a21167d13d26116c283009af57f6',1,'glm::convertLinearToSRGB(vec< L, T, Q > const &ColorLinear, T Gamma)']]], + ['convertsrgbtolinear_2625',['convertSRGBToLinear',['../a00907.html#ga16c798b7a226b2c3079dedc55083d187',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB)'],['../a00907.html#gad1b91f27a9726c9cb403f9fee6e2e200',1,'glm::convertSRGBToLinear(vec< L, T, Q > const &ColorSRGB, T Gamma)']]], + ['cos_2626',['cos',['../a00995.html#ga6a41efc740e3b3c937447d3a6284130e',1,'glm']]], + ['cos_5fone_5fover_5ftwo_2627',['cos_one_over_two',['../a00867.html#gae8d1938913da2e5b2e102b9076cd0389',1,'glm']]], + ['cosh_2628',['cosh',['../a00995.html#ga4e260e372742c5f517aca196cf1e62b3',1,'glm']]], + ['cot_2629',['cot',['../a00871.html#ga1f347629f919b562d9d10951e3b80968',1,'glm']]], + ['coth_2630',['coth',['../a00871.html#ga35710c9529d973ad01af024f9879fdf7',1,'glm']]], + ['cross_2631',['cross',['../a00862.html#ga9a47ad9ca44bc04eeaac260d42105134',1,'glm::cross(qua< T, Q > const &q1, qua< T, Q > const &q2)'],['../a00897.html#gaefe60743d7f415a33cbdddbe3bcf0258',1,'glm::cross(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00940.html#gac5814d419dbc957de01dc9a3f3196be5',1,'glm::cross(vec< 2, T, Q > const &v, vec< 2, T, Q > const &u)'],['../a00972.html#gacbbbf93d24828d6bd9ba48d43abc985e',1,'glm::cross(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00972.html#ga7877a1ec00e43bbfccf6dd11894c0536',1,'glm::cross(vec< 3, T, Q > const &v, qua< T, Q > const &q)']]], + ['csc_2632',['csc',['../a00871.html#gaa6bf27b118f660387753bfa75af13b6d',1,'glm']]], + ['csch_2633',['csch',['../a00871.html#ga0247051ce3b0bac747136e69b51ab853',1,'glm']]], + ['cubic_2634',['cubic',['../a00979.html#ga6b867eb52e2fc933d2e0bf26aabc9a70',1,'glm']]], + ['cubiceasein_2635',['cubicEaseIn',['../a00936.html#gaff52f746102b94864d105563ba8895ae',1,'glm']]], + ['cubiceaseinout_2636',['cubicEaseInOut',['../a00936.html#ga55134072b42d75452189321d4a2ad91c',1,'glm']]], + ['cubiceaseout_2637',['cubicEaseOut',['../a00936.html#ga40d746385d8bcc5973f5bc6a2340ca91',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_3.html b/include/glm/doc/api/search/functions_3.html new file mode 100644 index 0000000..e53b9d0 --- /dev/null +++ b/include/glm/doc/api/search/functions_3.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_3.js b/include/glm/doc/api/search/functions_3.js new file mode 100644 index 0000000..718d7eb --- /dev/null +++ b/include/glm/doc/api/search/functions_3.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['decompose_2638',['decompose',['../a00954.html#gabd7878e1b23aab583bc01040c5ed2b71',1,'glm']]], + ['degrees_2639',['degrees',['../a00995.html#ga8faec9e303538065911ba8b3caf7326b',1,'glm']]], + ['derivedeuleranglex_2640',['derivedEulerAngleX',['../a00937.html#ga994b8186b3b80d91cf90bc403164692f',1,'glm']]], + ['derivedeulerangley_2641',['derivedEulerAngleY',['../a00937.html#ga0a4c56ecce7abcb69508ebe6313e9d10',1,'glm']]], + ['derivedeuleranglez_2642',['derivedEulerAngleZ',['../a00937.html#gae8b397348201c42667be983ba3f344df',1,'glm']]], + ['determinant_2643',['determinant',['../a00834.html#ga07f545826ec7726ca072e587246afdde',1,'glm']]], + ['diagonal2x2_2644',['diagonal2x2',['../a00958.html#ga58a32a2beeb2478dae2a721368cdd4ac',1,'glm']]], + ['diagonal2x3_2645',['diagonal2x3',['../a00958.html#gab69f900206a430e2875a5a073851e175',1,'glm']]], + ['diagonal2x4_2646',['diagonal2x4',['../a00958.html#ga30b4dbfed60a919d66acc8a63bcdc549',1,'glm']]], + ['diagonal3x2_2647',['diagonal3x2',['../a00958.html#ga832c805d5130d28ad76236958d15b47d',1,'glm']]], + ['diagonal3x3_2648',['diagonal3x3',['../a00958.html#ga5487ff9cdbc8e04d594adef1bcb16ee0',1,'glm']]], + ['diagonal3x4_2649',['diagonal3x4',['../a00958.html#gad7551139cff0c4208d27f0ad3437833e',1,'glm']]], + ['diagonal4x2_2650',['diagonal4x2',['../a00958.html#gacb8969e6543ba775c6638161a37ac330',1,'glm']]], + ['diagonal4x3_2651',['diagonal4x3',['../a00958.html#gae235def5049d6740f0028433f5e13f90',1,'glm']]], + ['diagonal4x4_2652',['diagonal4x4',['../a00958.html#ga0b4cd8dea436791b072356231ee8578f',1,'glm']]], + ['diskrand_2653',['diskRand',['../a00918.html#gaa0b18071f3f97dbf8bcf6f53c6fe5f73',1,'glm']]], + ['distance_2654',['distance',['../a00897.html#gaa68de6c53e20dfb2dac2d20197562e3f',1,'glm']]], + ['distance2_2655',['distance2',['../a00962.html#ga85660f1b79f66c09c7b5a6f80e68c89f',1,'glm']]], + ['dot_2656',['dot',['../a00862.html#gadaab7b4495755b4102838d7834cd9544',1,'glm::dot(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00897.html#gaec50c25dd3b13834af0bf6fd2ce3931c',1,'glm::dot(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['dual_5fquat_5fidentity_2657',['dual_quat_identity',['../a00935.html#ga0b35c0e30df8a875dbaa751e0bd800e0',1,'glm']]], + ['dualquat_5fcast_2658',['dualquat_cast',['../a00935.html#gac4064ff813759740201765350eac4236',1,'glm::dualquat_cast(mat< 2, 4, T, Q > const &x)'],['../a00935.html#ga91025ebdca0f4ea54da08497b00e8c84',1,'glm::dualquat_cast(mat< 3, 4, T, Q > const &x)']]] +]; diff --git a/include/glm/doc/api/search/functions_4.html b/include/glm/doc/api/search/functions_4.html new file mode 100644 index 0000000..d049621 --- /dev/null +++ b/include/glm/doc/api/search/functions_4.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_4.js b/include/glm/doc/api/search/functions_4.js new file mode 100644 index 0000000..3d6a175 --- /dev/null +++ b/include/glm/doc/api/search/functions_4.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['e_2659',['e',['../a00908.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139',1,'glm']]], + ['elasticeasein_2660',['elasticEaseIn',['../a00936.html#ga230918eccee4e113d10ec5b8cdc58695',1,'glm']]], + ['elasticeaseinout_2661',['elasticEaseInOut',['../a00936.html#ga2db4ac8959559b11b4029e54812908d6',1,'glm']]], + ['elasticeaseout_2662',['elasticEaseOut',['../a00936.html#gace9c9d1bdf88bf2ab1e7cdefa54c7365',1,'glm']]], + ['epsilon_2663',['epsilon',['../a00867.html#ga2a1e57fc5592b69cfae84174cbfc9429',1,'glm']]], + ['epsilonequal_2664',['epsilonEqual',['../a00909.html#ga91b417866cafadd076004778217a1844',1,'glm::epsilonEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00909.html#gaa7f227999ca09e7ca994e8b35aba47bb',1,'glm::epsilonEqual(genType const &x, genType const &y, genType const &epsilon)']]], + ['epsilonnotequal_2665',['epsilonNotEqual',['../a00909.html#gaf840d33b9a5261ec78dcd5125743b025',1,'glm::epsilonNotEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T const &epsilon)'],['../a00909.html#ga50a92103fb0cbd796908e1bf20c79aaf',1,'glm::epsilonNotEqual(genType const &x, genType const &y, genType const &epsilon)']]], + ['equal_2666',['equal',['../a00836.html#ga27e90dcb7941c9b70e295dc3f6f6369f',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00836.html#gaf5d687d70d11708b68c36c6db5777040',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00836.html#gafa6a053e81179fa4292b35651c83c3fb',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00836.html#gab3a93f19e72e9141f50527c9de21d0c0',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00836.html#ga5305af376173f1902719fa309bbae671',1,'glm::equal(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00863.html#gad7827af0549504ff1cd6a359786acc7a',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00863.html#gaa001eecb91106463169a8e5ef1577b39',1,'glm::equal(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00872.html#ga90ebafeace352ccc14055418ebd220be',1,'glm::equal(genType const &x, genType const &y, genType const &epsilon)'],['../a00872.html#ga865b9a427c42df73b8af9cd3f7f25394',1,'glm::equal(genType const &x, genType const &y, int ULPs)'],['../a00890.html#ga2ac7651a2fa7354f2da610dbd50d28e2',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00890.html#ga37d261a65f69babc82cec2ae1af7145f',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00890.html#ga2b46cb50911e97b32f4cd743c2c69771',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00890.html#ga7da2b8605be7f245b39cb6fbf6d9d581',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00996.html#gab4c5cfdaa70834421397a85aa83ad946',1,'glm::equal(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['euclidean_2667',['euclidean',['../a00970.html#ga1821d5b3324201e60a9e2823d0b5d0c8',1,'glm']]], + ['euler_2668',['euler',['../a00908.html#gad8fe2e6f90bce9d829e9723b649fbd42',1,'glm']]], + ['eulerangles_2669',['eulerAngles',['../a00917.html#gaf4dd967dead22dd932fc7460ceecb03f',1,'glm']]], + ['euleranglex_2670',['eulerAngleX',['../a00937.html#gafba6282e4ed3ff8b5c75331abfba3489',1,'glm']]], + ['euleranglexy_2671',['eulerAngleXY',['../a00937.html#ga64036577ee17a2d24be0dbc05881d4e2',1,'glm']]], + ['euleranglexyx_2672',['eulerAngleXYX',['../a00937.html#ga29bd0787a28a6648159c0d6e69706066',1,'glm']]], + ['euleranglexyz_2673',['eulerAngleXYZ',['../a00937.html#ga1975e0f0e9bed7f716dc9946da2ab645',1,'glm']]], + ['euleranglexz_2674',['eulerAngleXZ',['../a00937.html#gaa39bd323c65c2fc0a1508be33a237ce9',1,'glm']]], + ['euleranglexzx_2675',['eulerAngleXZX',['../a00937.html#ga60171c79a17aec85d7891ae1d1533ec9',1,'glm']]], + ['euleranglexzy_2676',['eulerAngleXZY',['../a00937.html#ga996dce12a60d8a674ba6737a535fa910',1,'glm']]], + ['eulerangley_2677',['eulerAngleY',['../a00937.html#gab84bf4746805fd69b8ecbb230e3974c5',1,'glm']]], + ['eulerangleyx_2678',['eulerAngleYX',['../a00937.html#ga4f57e6dd25c3cffbbd4daa6ef3f4486d',1,'glm']]], + ['eulerangleyxy_2679',['eulerAngleYXY',['../a00937.html#ga750fba9894117f87bcc529d7349d11de',1,'glm']]], + ['eulerangleyxz_2680',['eulerAngleYXZ',['../a00937.html#gab8ba99a9814f6d9edf417b6c6d5b0c10',1,'glm']]], + ['eulerangleyz_2681',['eulerAngleYZ',['../a00937.html#ga220379e10ac8cca55e275f0c9018fed9',1,'glm']]], + ['eulerangleyzx_2682',['eulerAngleYZX',['../a00937.html#ga08bef16357b8f9b3051b3dcaec4b7848',1,'glm']]], + ['eulerangleyzy_2683',['eulerAngleYZY',['../a00937.html#ga5e5e40abc27630749b42b3327c76d6e4',1,'glm']]], + ['euleranglez_2684',['eulerAngleZ',['../a00937.html#ga5b3935248bb6c3ec6b0d9297d406e251',1,'glm']]], + ['euleranglezx_2685',['eulerAngleZX',['../a00937.html#ga483903115cd4059228961046a28d69b5',1,'glm']]], + ['euleranglezxy_2686',['eulerAngleZXY',['../a00937.html#gab4505c54d2dd654df4569fd1f04c43aa',1,'glm']]], + ['euleranglezxz_2687',['eulerAngleZXZ',['../a00937.html#ga178f966c52b01e4d65e31ebd007e3247',1,'glm']]], + ['euleranglezy_2688',['eulerAngleZY',['../a00937.html#ga400b2bd5984999efab663f3a68e1d020',1,'glm']]], + ['euleranglezyx_2689',['eulerAngleZYX',['../a00937.html#ga2e61f1e39069c47530acab9167852dd6',1,'glm']]], + ['euleranglezyz_2690',['eulerAngleZYZ',['../a00937.html#gacd795f1dbecaf74974f9c76bbcca6830',1,'glm']]], + ['exp_2691',['exp',['../a00813.html#ga071566cadc7505455e611f2a0353f4d4',1,'glm::exp(vec< L, T, Q > const &v)'],['../a00864.html#gaab2d37ef7265819f1d2939b9dc2c52ac',1,'glm::exp(qua< T, Q > const &q)']]], + ['exp2_2692',['exp2',['../a00813.html#gaff17ace6b579a03bf223ed4d1ed2cd16',1,'glm']]], + ['exponentialeasein_2693',['exponentialEaseIn',['../a00936.html#ga7f24ee9219ab4c84dc8de24be84c1e3c',1,'glm']]], + ['exponentialeaseinout_2694',['exponentialEaseInOut',['../a00936.html#ga232fb6dc093c5ce94bee105ff2947501',1,'glm']]], + ['exponentialeaseout_2695',['exponentialEaseOut',['../a00936.html#ga517f2bcfd15bc2c25c466ae50808efc3',1,'glm']]], + ['extend_2696',['extend',['../a00938.html#ga8140caae613b0f847ab0d7175dc03a37',1,'glm']]], + ['extracteuleranglexyx_2697',['extractEulerAngleXYX',['../a00937.html#gadec3152f46d46dcd32974f0a2c0a7735',1,'glm']]], + ['extracteuleranglexyz_2698',['extractEulerAngleXYZ',['../a00937.html#ga866e1524edc5daaeee54cc9e11ec892e',1,'glm']]], + ['extracteuleranglexzx_2699',['extractEulerAngleXZX',['../a00937.html#gaf58030785bc2cde1dcd95a04d50d64ff',1,'glm']]], + ['extracteuleranglexzy_2700',['extractEulerAngleXZY',['../a00937.html#gaffe92a3c19724f523678cb67144fd569',1,'glm']]], + ['extracteulerangleyxy_2701',['extractEulerAngleYXY',['../a00937.html#gae14dd2c752ed179325171f45f464c6d7',1,'glm']]], + ['extracteulerangleyxz_2702',['extractEulerAngleYXZ',['../a00937.html#ga8dd77fb7274dd8916a98749b8ccb033a',1,'glm']]], + ['extracteulerangleyzx_2703',['extractEulerAngleYZX',['../a00937.html#gadb39c3a164364100eff69e7db2a3269d',1,'glm']]], + ['extracteulerangleyzy_2704',['extractEulerAngleYZY',['../a00937.html#gabe88a80471a85be2561430194009393a',1,'glm']]], + ['extracteuleranglezxy_2705',['extractEulerAngleZXY',['../a00937.html#ga5ed7760c1140ff8ff8f8c444b8bb0612',1,'glm']]], + ['extracteuleranglezxz_2706',['extractEulerAngleZXZ',['../a00937.html#ga698604d09198fa41207abc7f1a6ae6c1',1,'glm']]], + ['extracteuleranglezyx_2707',['extractEulerAngleZYX',['../a00937.html#ga25c33ad5744c43d9601dc1c44a4b2696',1,'glm']]], + ['extracteuleranglezyz_2708',['extractEulerAngleZYZ',['../a00937.html#ga6009526e30e85db3a40a2bb63b6c9442',1,'glm']]], + ['extractmatrixrotation_2709',['extractMatrixRotation',['../a00956.html#gabbc1c7385a145f04b5c54228965df145',1,'glm']]], + ['extractrealcomponent_2710',['extractRealComponent',['../a00972.html#ga321953c1b2e7befe6f5dcfddbfc6b76b',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_5.html b/include/glm/doc/api/search/functions_5.html new file mode 100644 index 0000000..342487b --- /dev/null +++ b/include/glm/doc/api/search/functions_5.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_5.js b/include/glm/doc/api/search/functions_5.js new file mode 100644 index 0000000..4fb7d2e --- /dev/null +++ b/include/glm/doc/api/search/functions_5.js @@ -0,0 +1,56 @@ +var searchData= +[ + ['faceforward_2711',['faceforward',['../a00897.html#ga7aed0a36c738169402404a3a5d54e43b',1,'glm']]], + ['factorial_2712',['factorial',['../a00948.html#ga8cbd3120905f398ec321b5d1836e08fb',1,'glm']]], + ['fastacos_2713',['fastAcos',['../a00943.html#ga9721d63356e5d94fdc4b393a426ab26b',1,'glm']]], + ['fastasin_2714',['fastAsin',['../a00943.html#ga562cb62c51fbfe7fac7db0bce706b81f',1,'glm']]], + ['fastatan_2715',['fastAtan',['../a00943.html#ga8d197c6ef564f5e5d59af3b3f8adcc2c',1,'glm::fastAtan(T y, T x)'],['../a00943.html#gae25de86a968490ff56856fa425ec9d30',1,'glm::fastAtan(T angle)']]], + ['fastcos_2716',['fastCos',['../a00943.html#gab34c8b45c23c0165a64dcecfcc3b302a',1,'glm']]], + ['fastdistance_2717',['fastDistance',['../a00942.html#gaac333418d0c4e0cc6d3d219ed606c238',1,'glm::fastDistance(genType x, genType y)'],['../a00942.html#ga42d3e771fa7cb3c60d828e315829df19',1,'glm::fastDistance(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['fastexp_2718',['fastExp',['../a00941.html#gaa3180ac8f96ab37ab96e0cacaf608e10',1,'glm::fastExp(T x)'],['../a00941.html#ga3ba6153aec6bd74628f8b00530aa8d58',1,'glm::fastExp(vec< L, T, Q > const &x)']]], + ['fastexp2_2719',['fastExp2',['../a00941.html#ga0af50585955eb14c60bb286297fabab2',1,'glm::fastExp2(T x)'],['../a00941.html#gacaaed8b67d20d244b7de217e7816c1b6',1,'glm::fastExp2(vec< L, T, Q > const &x)']]], + ['fastinversesqrt_2720',['fastInverseSqrt',['../a00942.html#ga7f081b14d9c7035c8714eba5f7f75a8f',1,'glm::fastInverseSqrt(genType x)'],['../a00942.html#gadcd7be12b1e5ee182141359d4c45dd24',1,'glm::fastInverseSqrt(vec< L, T, Q > const &x)']]], + ['fastlength_2721',['fastLength',['../a00942.html#gafe697d6287719538346bbdf8b1367c59',1,'glm::fastLength(genType x)'],['../a00942.html#ga90f66be92ef61e705c005e7b3209edb8',1,'glm::fastLength(vec< L, T, Q > const &x)']]], + ['fastlog_2722',['fastLog',['../a00941.html#gae1bdc97b7f96a600e29c753f1cd4388a',1,'glm::fastLog(T x)'],['../a00941.html#ga937256993a7219e73f186bb348fe6be8',1,'glm::fastLog(vec< L, T, Q > const &x)']]], + ['fastlog2_2723',['fastLog2',['../a00941.html#ga6e98118685f6dc9e05fbb13dd5e5234e',1,'glm::fastLog2(T x)'],['../a00941.html#ga7562043539194ccc24649f8475bc5584',1,'glm::fastLog2(vec< L, T, Q > const &x)']]], + ['fastmix_2724',['fastMix',['../a00972.html#ga264e10708d58dd0ff53b7902a2bd2561',1,'glm']]], + ['fastnormalize_2725',['fastNormalize',['../a00942.html#gac0991240651a3f75792ff5de2e526b8c',1,'glm::fastNormalize(genType x)'],['../a00942.html#gaab477221230a6e12a3b9e22e750c8928',1,'glm::fastNormalize(vec< L, T, Q > const &x)']]], + ['fastnormalizedot_2726',['fastNormalizeDot',['../a00964.html#ga2746fb9b5bd22b06b2f7c8babba5de9e',1,'glm']]], + ['fastpow_2727',['fastPow',['../a00941.html#ga5340e98a11fcbbd936ba6e983a154d50',1,'glm::fastPow(genType x, genType y)'],['../a00941.html#ga15325a8ed2d1c4ed2412c4b3b3927aa2',1,'glm::fastPow(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00941.html#ga7f2562db9c3e02ae76169c36b086c3f6',1,'glm::fastPow(genTypeT x, genTypeU y)'],['../a00941.html#ga1abe488c0829da5b9de70ac64aeaa7e5',1,'glm::fastPow(vec< L, T, Q > const &x)']]], + ['fastsin_2728',['fastSin',['../a00943.html#ga0aab3257bb3b628d10a1e0483e2c6915',1,'glm']]], + ['fastsqrt_2729',['fastSqrt',['../a00942.html#ga6c460e9414a50b2fc455c8f64c86cdc9',1,'glm::fastSqrt(genType x)'],['../a00942.html#gae83f0c03614f73eae5478c5b6274ee6d',1,'glm::fastSqrt(vec< L, T, Q > const &x)']]], + ['fasttan_2730',['fastTan',['../a00943.html#gaf29b9c1101a10007b4f79ee89df27ba2',1,'glm']]], + ['fclamp_2731',['fclamp',['../a00866.html#ga1e28539d3a46965ed9ef92ec7cb3b18a',1,'glm::fclamp(genType x, genType minVal, genType maxVal)'],['../a00877.html#ga60796d08903489ee185373593bc16b9d',1,'glm::fclamp(vec< L, T, Q > const &x, T minVal, T maxVal)'],['../a00877.html#ga5c15fa4709763c269c86c0b8b3aa2297',1,'glm::fclamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)']]], + ['fcompmax_2732',['fcompMax',['../a00934.html#gade3e58b5fb9ef711494b73bb9e77d263',1,'glm']]], + ['fcompmin_2733',['fcompMin',['../a00934.html#gafb56d801a323e921076727df524de330',1,'glm']]], + ['findeigenvaluessymreal_2734',['findEigenvaluesSymReal',['../a00968.html#ga0586007af1073c8b0f629bca0ee7c46c',1,'glm']]], + ['findlsb_2735',['findLSB',['../a00992.html#gaf74c4d969fa34ab8acb9d390f5ca5274',1,'glm::findLSB(genIUType x)'],['../a00992.html#ga4454c0331d6369888c28ab677f4810c7',1,'glm::findLSB(vec< L, T, Q > const &v)']]], + ['findmsb_2736',['findMSB',['../a00992.html#ga7e4a794d766861c70bc961630f8ef621',1,'glm::findMSB(genIUType x)'],['../a00992.html#ga39ac4d52028bb6ab08db5ad6562c2872',1,'glm::findMSB(vec< L, T, Q > const &v)']]], + ['findnsb_2737',['findNSB',['../a00869.html#ga2777901e41ad6e1e9d0ad6cc855d1075',1,'glm::findNSB(genIUType x, int significantBitCount)'],['../a00887.html#gaff61eca266da315002a3db92ff0dd604',1,'glm::findNSB(vec< L, T, Q > const &Source, vec< L, int, Q > SignificantBitCount)']]], + ['fliplr_2738',['fliplr',['../a00955.html#gaf39f4e5f78eb29c1a90277d45b9b3feb',1,'glm']]], + ['flipud_2739',['flipud',['../a00955.html#ga85003371f0ba97380dd25e8905de1870',1,'glm']]], + ['float_5fdistance_2740',['float_distance',['../a00924.html#ga2358fa840554fa36531aee28f3e14d6b',1,'glm::float_distance(float x, float y)'],['../a00924.html#ga464d5c96158df04d96a11d97b00c51a7',1,'glm::float_distance(double x, double y)'],['../a00924.html#ga15349749edb8373079f4dcd518cc3d02',1,'glm::float_distance(vec< L, float, Q > const &x, vec< L, float, Q > const &y)'],['../a00924.html#gac0726cf2e5ce7d03b0ac4c81438c07fb',1,'glm::float_distance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)']]], + ['floatbitstoint_2741',['floatBitsToInt',['../a00812.html#ga8a23e454d8ae48b8f6dfdaea4b756072',1,'glm::floatBitsToInt(float v)'],['../a00812.html#ga99f7d62f78ac5ea3b49bae715c9488ed',1,'glm::floatBitsToInt(vec< L, float, Q > const &v)']]], + ['floatbitstouint_2742',['floatBitsToUint',['../a00812.html#ga1bbdafd513ece71856e66a8ab0ea10d1',1,'glm::floatBitsToUint(float v)'],['../a00812.html#ga49418ba4c8a60fbbb5d57b705f3e26db',1,'glm::floatBitsToUint(vec< L, float, Q > const &v)']]], + ['floatdistance_2743',['floatDistance',['../a00874.html#gae609a2729cacccbabe966221d61e0dc4',1,'glm::floatDistance(float x, float y)'],['../a00874.html#ga4b76118ff56adfbc41a5925908b48606',1,'glm::floatDistance(double x, double y)'],['../a00896.html#ga03f464c6a03a725ea18e72cf1ed31417',1,'glm::floatDistance(vec< L, float, Q > const &x, vec< L, float, Q > const &y)'],['../a00896.html#gabe2040cbbe66a60cafb37f6155f78e4c',1,'glm::floatDistance(vec< L, double, Q > const &x, vec< L, double, Q > const &y)']]], + ['floor_2744',['floor',['../a00812.html#gaa9d0742639e85b29c7c5de11cfd6840d',1,'glm']]], + ['floor_5flog2_2745',['floor_log2',['../a00948.html#ga7011b4e1c1e1ed492149b028feacc00e',1,'glm']]], + ['floormultiple_2746',['floorMultiple',['../a00920.html#ga2ffa3cd5f2ea746ee1bf57c46da6315e',1,'glm::floorMultiple(genType v, genType Multiple)'],['../a00920.html#gacdd8901448f51f0b192380e422fae3e4',1,'glm::floorMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['floorpoweroftwo_2747',['floorPowerOfTwo',['../a00920.html#gafe273a57935d04c9db677bf67f9a71f4',1,'glm::floorPowerOfTwo(genIUType v)'],['../a00920.html#gaf0d591a8fca8ddb9289cdeb44b989c2d',1,'glm::floorPowerOfTwo(vec< L, T, Q > const &v)']]], + ['fma_2748',['fma',['../a00812.html#gad0f444d4b81cc53c3b6edf5aa25078c2',1,'glm']]], + ['fmax_2749',['fmax',['../a00866.html#ga9181453c527b05bddd32b1b09b8c80e6',1,'glm::fmax(T a, T b)'],['../a00866.html#ga65c5b6a8d1f1607fbcbf3a8ef2f93e3c',1,'glm::fmax(T a, T b, T C)'],['../a00866.html#gaed34015c7033417014cc9198a763c3e7',1,'glm::fmax(T a, T b, T C, T D)'],['../a00877.html#gad66b6441f7200db16c9f341711733c56',1,'glm::fmax(vec< L, T, Q > const &a, T b)'],['../a00877.html#ga8df4be3f48d6717c40ea788fd30deebf',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b)'],['../a00877.html#ga0f04ba924294dae4234ca93ede23229a',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#ga4ed3eb250ccbe17bfe8ded8a6b72d230',1,'glm::fmax(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)']]], + ['fmin_2750',['fmin',['../a00866.html#ga2ca01149554244bc668afb3f2f95a1a1',1,'glm::fmin(T a, T b)'],['../a00866.html#ga2caf4c39dd5ebc2bbc577b03bebe4aa0',1,'glm::fmin(T a, T b, T c)'],['../a00866.html#ga2bbac70c680668b0b1019dcf8e6c03b6',1,'glm::fmin(T a, T b, T c, T d)'],['../a00877.html#gae989203363cff9eab5093630df4fe071',1,'glm::fmin(vec< L, T, Q > const &x, T y)'],['../a00877.html#ga7c42e93cd778c9181d1cdeea4d3e43bd',1,'glm::fmin(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00877.html#ga7e62739055b49189d9355471f78fe000',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#ga4a543dd7d22ad1f3b8b839f808a9d93c',1,'glm::fmin(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)']]], + ['fmod_2751',['fmod',['../a00932.html#gae5e80425df9833164ad469e83b475fb4',1,'glm']]], + ['four_5fover_5fpi_2752',['four_over_pi',['../a00908.html#ga753950e5140e4ea6a88e4a18ba61dc09',1,'glm']]], + ['fract_2753',['fract',['../a00812.html#ga8ba89e40e55ae5cdf228548f9b7639c7',1,'glm::fract(genType x)'],['../a00812.html#ga2df623004f634b440d61e018d62c751b',1,'glm::fract(vec< L, T, Q > const &x)']]], + ['frexp_2754',['frexp',['../a00812.html#gaddf5ef73283c171730e0bcc11833fa81',1,'glm']]], + ['frustum_2755',['frustum',['../a00814.html#ga0bcd4542e0affc63a0b8c08fcb839ea9',1,'glm']]], + ['frustumlh_2756',['frustumLH',['../a00814.html#gae4277c37f61d81da01bc9db14ea90296',1,'glm']]], + ['frustumlh_5fno_2757',['frustumLH_NO',['../a00814.html#ga259520cad03b3f8bca9417920035ed01',1,'glm']]], + ['frustumlh_5fzo_2758',['frustumLH_ZO',['../a00814.html#ga94218b094862d17798370242680b9030',1,'glm']]], + ['frustumno_2759',['frustumNO',['../a00814.html#gae34ec664ad44860bf4b5ba631f0e0e90',1,'glm']]], + ['frustumrh_2760',['frustumRH',['../a00814.html#ga4366ab45880c6c5f8b3e8c371ca4b136',1,'glm']]], + ['frustumrh_5fno_2761',['frustumRH_NO',['../a00814.html#ga9236c8439f21be186b79c97b588836b9',1,'glm']]], + ['frustumrh_5fzo_2762',['frustumRH_ZO',['../a00814.html#ga7654a9227f14d5382786b9fc0eb5692d',1,'glm']]], + ['frustumzo_2763',['frustumZO',['../a00814.html#gaa73322e152edf50cf30a6edac342a757',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_6.html b/include/glm/doc/api/search/functions_6.html new file mode 100644 index 0000000..4bf3bd6 --- /dev/null +++ b/include/glm/doc/api/search/functions_6.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_6.js b/include/glm/doc/api/search/functions_6.js new file mode 100644 index 0000000..74bdfe9 --- /dev/null +++ b/include/glm/doc/api/search/functions_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['gauss_2764',['gauss',['../a00944.html#ga0b50b197ff74261a0fad90f4b8d24702',1,'glm::gauss(T x, T ExpectedValue, T StandardDeviation)'],['../a00944.html#gad19ec8754a83c0b9a8dc16b7e60705ab',1,'glm::gauss(vec< 2, T, Q > const &Coord, vec< 2, T, Q > const &ExpectedValue, vec< 2, T, Q > const &StandardDeviation)']]], + ['gaussrand_2765',['gaussRand',['../a00918.html#ga5193a83e49e4fdc5652c084711083574',1,'glm']]], + ['glm_5faligned_5ftypedef_2766',['GLM_ALIGNED_TYPEDEF',['../a00986.html#gab5cd5c5fad228b25c782084f1cc30114',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8, aligned_lowp_int8, 1)'],['../a00986.html#ga5bb5dd895ef625c1b113f2cf400186b0',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16, aligned_lowp_int16, 2)'],['../a00986.html#gac6efa54cf7c6c86f7158922abdb1a430',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32, aligned_lowp_int32, 4)'],['../a00986.html#ga6612eb77c8607048e7552279a11eeb5f',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64, aligned_lowp_int64, 8)'],['../a00986.html#ga7ddc1848ff2223026db8968ce0c97497',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int8_t, aligned_lowp_int8_t, 1)'],['../a00986.html#ga22240dd9458b0f8c11fbcc4f48714f68',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int16_t, aligned_lowp_int16_t, 2)'],['../a00986.html#ga8130ea381d76a2cc34a93ccbb6cf487d',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int32_t, aligned_lowp_int32_t, 4)'],['../a00986.html#ga7ccb60f3215d293fd62b33b31ed0e7be',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_int64_t, aligned_lowp_int64_t, 8)'],['../a00986.html#gac20d508d2ef5cc95ad3daf083c57ec2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i8, aligned_lowp_i8, 1)'],['../a00986.html#ga50257b48069a31d0c8d9c1f644d267de',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i16, aligned_lowp_i16, 2)'],['../a00986.html#gaa07e98e67b7a3435c0746018c7a2a839',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i32, aligned_lowp_i32, 4)'],['../a00986.html#ga62601fc6f8ca298b77285bedf03faffd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_i64, aligned_lowp_i64, 8)'],['../a00986.html#gac8cff825951aeb54dd846037113c72db',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8, aligned_mediump_int8, 1)'],['../a00986.html#ga78f443d88f438575a62b5df497cdf66b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16, aligned_mediump_int16, 2)'],['../a00986.html#ga0680cd3b5d4e8006985fb41a4f9b57af',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32, aligned_mediump_int32, 4)'],['../a00986.html#gad9e5babb1dd3e3531b42c37bf25dd951',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64, aligned_mediump_int64, 8)'],['../a00986.html#ga353fd9fa8a9ad952fcabd0d53ad9a6dd',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int8_t, aligned_mediump_int8_t, 1)'],['../a00986.html#ga2196442c0e5c5e8c77842de388c42521',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int16_t, aligned_mediump_int16_t, 2)'],['../a00986.html#ga1284488189daf897cf095c5eefad9744',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int32_t, aligned_mediump_int32_t, 4)'],['../a00986.html#ga73fdc86a539808af58808b7c60a1c4d8',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_int64_t, aligned_mediump_int64_t, 8)'],['../a00986.html#gafafeea923e1983262c972e2b83922d3b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i8, aligned_mediump_i8, 1)'],['../a00986.html#ga4b35ca5fe8f55c9d2fe54fdb8d8896f4',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i16, aligned_mediump_i16, 2)'],['../a00986.html#ga63b882e29170d428463d99c3d630acc6',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i32, aligned_mediump_i32, 4)'],['../a00986.html#ga8b20507bb048c1edea2d441cc953e6f0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_i64, aligned_mediump_i64, 8)'],['../a00986.html#ga56c5ca60813027b603c7b61425a0479d',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8, aligned_highp_int8, 1)'],['../a00986.html#ga7a751b3aff24c0259f4a7357c2969089',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16, aligned_highp_int16, 2)'],['../a00986.html#ga70cd2144351c556469ee6119e59971fc',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32, aligned_highp_int32, 4)'],['../a00986.html#ga46bbf08dc004d8c433041e0b5018a5d3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64, aligned_highp_int64, 8)'],['../a00986.html#gab3e10c77a20d1abad2de1c561c7a5c18',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int8_t, aligned_highp_int8_t, 1)'],['../a00986.html#ga968f30319ebeaca9ebcd3a25a8e139fb',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int16_t, aligned_highp_int16_t, 2)'],['../a00986.html#gaae773c28e6390c6aa76f5b678b7098a3',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int32_t, aligned_highp_int32_t, 4)'],['../a00986.html#ga790cfff1ca39d0ed696ffed980809311',1,'glm::GLM_ALIGNED_TYPEDEF(highp_int64_t, aligned_highp_int64_t, 8)'],['../a00986.html#ga8265b91eb23c120a9b0c3e381bc37b96',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i8, aligned_highp_i8, 1)'],['../a00986.html#gae6d384de17588d8edb894fbe06e0d410',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i16, aligned_highp_i16, 2)'],['../a00986.html#ga9c8172b745ee03fc5b2b91c350c2922f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i32, aligned_highp_i32, 4)'],['../a00986.html#ga77e0dff12aa4020ddc3f8cabbea7b2e6',1,'glm::GLM_ALIGNED_TYPEDEF(highp_i64, aligned_highp_i64, 8)'],['../a00986.html#gabd82b9faa9d4d618dbbe0fc8a1efee63',1,'glm::GLM_ALIGNED_TYPEDEF(int8, aligned_int8, 1)'],['../a00986.html#ga285649744560be21000cfd81bbb5d507',1,'glm::GLM_ALIGNED_TYPEDEF(int16, aligned_int16, 2)'],['../a00986.html#ga07732da630b2deda428ce95c0ecaf3ff',1,'glm::GLM_ALIGNED_TYPEDEF(int32, aligned_int32, 4)'],['../a00986.html#ga1a8da2a8c51f69c07a2e7f473aa420f4',1,'glm::GLM_ALIGNED_TYPEDEF(int64, aligned_int64, 8)'],['../a00986.html#ga848aedf13e2d9738acf0bb482c590174',1,'glm::GLM_ALIGNED_TYPEDEF(int8_t, aligned_int8_t, 1)'],['../a00986.html#gafd2803d39049dd45a37a63931e25d943',1,'glm::GLM_ALIGNED_TYPEDEF(int16_t, aligned_int16_t, 2)'],['../a00986.html#gae553b33349d6da832cf0724f1e024094',1,'glm::GLM_ALIGNED_TYPEDEF(int32_t, aligned_int32_t, 4)'],['../a00986.html#ga16d223a2b3409e812e1d3bd87f0e9e5c',1,'glm::GLM_ALIGNED_TYPEDEF(int64_t, aligned_int64_t, 8)'],['../a00986.html#ga2de065d2ddfdb366bcd0febca79ae2ad',1,'glm::GLM_ALIGNED_TYPEDEF(i8, aligned_i8, 1)'],['../a00986.html#gabd786bdc20a11c8cb05c92c8212e28d3',1,'glm::GLM_ALIGNED_TYPEDEF(i16, aligned_i16, 2)'],['../a00986.html#gad4aefe56691cdb640c72f0d46d3fb532',1,'glm::GLM_ALIGNED_TYPEDEF(i32, aligned_i32, 4)'],['../a00986.html#ga8fe9745f7de24a8394518152ff9fccdc',1,'glm::GLM_ALIGNED_TYPEDEF(i64, aligned_i64, 8)'],['../a00986.html#gaaad735483450099f7f882d4e3a3569bd',1,'glm::GLM_ALIGNED_TYPEDEF(ivec1, aligned_ivec1, 4)'],['../a00986.html#gac7b6f823802edbd6edbaf70ea25bf068',1,'glm::GLM_ALIGNED_TYPEDEF(ivec2, aligned_ivec2, 8)'],['../a00986.html#ga3e235bcd2b8029613f25b8d40a2d3ef7',1,'glm::GLM_ALIGNED_TYPEDEF(ivec3, aligned_ivec3, 16)'],['../a00986.html#ga50d8a9523968c77f8325b4c9bfbff41e',1,'glm::GLM_ALIGNED_TYPEDEF(ivec4, aligned_ivec4, 16)'],['../a00986.html#ga9ec20fdfb729c702032da9378c79679f',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec1, aligned_i8vec1, 1)'],['../a00986.html#ga25b3fe1d9e8d0a5e86c1949c1acd8131',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec2, aligned_i8vec2, 2)'],['../a00986.html#ga2958f907719d94d8109b562540c910e2',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec3, aligned_i8vec3, 4)'],['../a00986.html#ga1fe6fc032a978f1c845fac9aa0668714',1,'glm::GLM_ALIGNED_TYPEDEF(i8vec4, aligned_i8vec4, 4)'],['../a00986.html#gaa4161e7a496dc96972254143fe873e55',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec1, aligned_i16vec1, 2)'],['../a00986.html#ga9d7cb211ccda69b1c22ddeeb0f3e7aba',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec2, aligned_i16vec2, 4)'],['../a00986.html#gaaee91dd2ab34423bcc11072ef6bd0f02',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec3, aligned_i16vec3, 8)'],['../a00986.html#ga49f047ccaa8b31fad9f26c67bf9b3510',1,'glm::GLM_ALIGNED_TYPEDEF(i16vec4, aligned_i16vec4, 8)'],['../a00986.html#ga904e9c2436bb099397c0823506a0771f',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec1, aligned_i32vec1, 4)'],['../a00986.html#gaf90651cf2f5e7ee2b11cfdc5a6749534',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec2, aligned_i32vec2, 8)'],['../a00986.html#ga7354a4ead8cb17868aec36b9c30d6010',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec3, aligned_i32vec3, 16)'],['../a00986.html#gad2ecbdea18732163e2636e27b37981ee',1,'glm::GLM_ALIGNED_TYPEDEF(i32vec4, aligned_i32vec4, 16)'],['../a00986.html#ga965b1c9aa1800e93d4abc2eb2b5afcbf',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec1, aligned_i64vec1, 8)'],['../a00986.html#ga1f9e9c2ea2768675dff9bae5cde2d829',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec2, aligned_i64vec2, 16)'],['../a00986.html#gad77c317b7d942322cd5be4c8127b3187',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec3, aligned_i64vec3, 32)'],['../a00986.html#ga716f8ea809bdb11b5b542d8b71aeb04f',1,'glm::GLM_ALIGNED_TYPEDEF(i64vec4, aligned_i64vec4, 32)'],['../a00986.html#gad46f8e9082d5878b1bc04f9c1471cdaa',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8, aligned_lowp_uint8, 1)'],['../a00986.html#ga1246094581af624aca6c7499aaabf801',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16, aligned_lowp_uint16, 2)'],['../a00986.html#ga7a5009a1d0196bbf21dd7518f61f0249',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32, aligned_lowp_uint32, 4)'],['../a00986.html#ga45213fd18b3bb1df391671afefe4d1e7',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64, aligned_lowp_uint64, 8)'],['../a00986.html#ga0ba26b4e3fd9ecbc25358efd68d8a4ca',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint8_t, aligned_lowp_uint8_t, 1)'],['../a00986.html#gaf2b58f5fb6d4ec8ce7b76221d3af43e1',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint16_t, aligned_lowp_uint16_t, 2)'],['../a00986.html#gadc246401847dcba155f0699425e49dcd',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint32_t, aligned_lowp_uint32_t, 4)'],['../a00986.html#gaace64bddf51a9def01498da9a94fb01c',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_uint64_t, aligned_lowp_uint64_t, 8)'],['../a00986.html#gad7bb97c29d664bd86ffb1bed4abc5534',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u8, aligned_lowp_u8, 1)'],['../a00986.html#ga404bba7785130e0b1384d695a9450b28',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u16, aligned_lowp_u16, 2)'],['../a00986.html#ga31ba41fd896257536958ec6080203d2a',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u32, aligned_lowp_u32, 4)'],['../a00986.html#gacca5f13627f57b3505676e40a6e43e5e',1,'glm::GLM_ALIGNED_TYPEDEF(lowp_u64, aligned_lowp_u64, 8)'],['../a00986.html#ga5faf1d3e70bf33174dd7f3d01d5b883b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8, aligned_mediump_uint8, 1)'],['../a00986.html#ga727e2bf2c433bb3b0182605860a48363',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16, aligned_mediump_uint16, 2)'],['../a00986.html#ga12566ca66d5962dadb4a5eb4c74e891e',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32, aligned_mediump_uint32, 4)'],['../a00986.html#ga7b66a97a8acaa35c5a377b947318c6bc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64, aligned_mediump_uint64, 8)'],['../a00986.html#gaa9cde002439b74fa66120a16a9f55fcc',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint8_t, aligned_mediump_uint8_t, 1)'],['../a00986.html#ga1ca98c67f7d1e975f7c5202f1da1df1f',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint16_t, aligned_mediump_uint16_t, 2)'],['../a00986.html#ga1dc8bc6199d785f235576948d80a597c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint32_t, aligned_mediump_uint32_t, 4)'],['../a00986.html#gad14a0f2ec93519682b73d70b8e401d81',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_uint64_t, aligned_mediump_uint64_t, 8)'],['../a00986.html#gada8b996eb6526dc1ead813bd49539d1b',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u8, aligned_mediump_u8, 1)'],['../a00986.html#ga28948f6bfb52b42deb9d73ae1ea8d8b0',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u16, aligned_mediump_u16, 2)'],['../a00986.html#gad6a7c0b5630f89d3f1c5b4ef2919bb4c',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u32, aligned_mediump_u32, 4)'],['../a00986.html#gaa0fc531cbaa972ac3a0b86d21ef4a7fa',1,'glm::GLM_ALIGNED_TYPEDEF(mediump_u64, aligned_mediump_u64, 8)'],['../a00986.html#ga0ee829f7b754b262bbfe6317c0d678ac',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8, aligned_highp_uint8, 1)'],['../a00986.html#ga447848a817a626cae08cedc9778b331c',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16, aligned_highp_uint16, 2)'],['../a00986.html#ga6027ae13b2734f542a6e7beee11b8820',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32, aligned_highp_uint32, 4)'],['../a00986.html#ga2aca46c8608c95ef991ee4c332acde5f',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64, aligned_highp_uint64, 8)'],['../a00986.html#gaff50b10dd1c48be324fdaffd18e2c7ea',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint8_t, aligned_highp_uint8_t, 1)'],['../a00986.html#ga9fc4421dbb833d5461e6d4e59dcfde55',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint16_t, aligned_highp_uint16_t, 2)'],['../a00986.html#ga329f1e2b94b33ba5e3918197030bcf03',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint32_t, aligned_highp_uint32_t, 4)'],['../a00986.html#ga71e646f7e301aa422328194162c9c998',1,'glm::GLM_ALIGNED_TYPEDEF(highp_uint64_t, aligned_highp_uint64_t, 8)'],['../a00986.html#ga8942e09f479489441a7a5004c6d8cb66',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u8, aligned_highp_u8, 1)'],['../a00986.html#gaab32497d6e4db16ee439dbedd64c5865',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u16, aligned_highp_u16, 2)'],['../a00986.html#gaaadbb34952eca8e3d7fe122c3e167742',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u32, aligned_highp_u32, 4)'],['../a00986.html#ga92024d27c74a3650afb55ec8e024ed25',1,'glm::GLM_ALIGNED_TYPEDEF(highp_u64, aligned_highp_u64, 8)'],['../a00986.html#gabde1d0b4072df35453db76075ab896a6',1,'glm::GLM_ALIGNED_TYPEDEF(uint8, aligned_uint8, 1)'],['../a00986.html#ga06c296c9e398b294c8c9dd2a7693dcbb',1,'glm::GLM_ALIGNED_TYPEDEF(uint16, aligned_uint16, 2)'],['../a00986.html#gacf1744488c96ebd33c9f36ad33b2010a',1,'glm::GLM_ALIGNED_TYPEDEF(uint32, aligned_uint32, 4)'],['../a00986.html#ga3328061a64c20ba59d5f9da24c2cd059',1,'glm::GLM_ALIGNED_TYPEDEF(uint64, aligned_uint64, 8)'],['../a00986.html#gaf6ced36f13bae57f377bafa6f5fcc299',1,'glm::GLM_ALIGNED_TYPEDEF(uint8_t, aligned_uint8_t, 1)'],['../a00986.html#gafbc7fb7847bfc78a339d1d371c915c73',1,'glm::GLM_ALIGNED_TYPEDEF(uint16_t, aligned_uint16_t, 2)'],['../a00986.html#gaa86bc56a73fd8120b1121b5f5e6245ae',1,'glm::GLM_ALIGNED_TYPEDEF(uint32_t, aligned_uint32_t, 4)'],['../a00986.html#ga68c0b9e669060d0eb5ab8c3ddeb483d8',1,'glm::GLM_ALIGNED_TYPEDEF(uint64_t, aligned_uint64_t, 8)'],['../a00986.html#ga4f3bab577daf3343e99cc005134bce86',1,'glm::GLM_ALIGNED_TYPEDEF(u8, aligned_u8, 1)'],['../a00986.html#ga13a2391339d0790d43b76d00a7611c4f',1,'glm::GLM_ALIGNED_TYPEDEF(u16, aligned_u16, 2)'],['../a00986.html#ga197570e03acbc3d18ab698e342971e8f',1,'glm::GLM_ALIGNED_TYPEDEF(u32, aligned_u32, 4)'],['../a00986.html#ga0f033b21e145a1faa32c62ede5878993',1,'glm::GLM_ALIGNED_TYPEDEF(u64, aligned_u64, 8)'],['../a00986.html#ga509af83527f5cd512e9a7873590663aa',1,'glm::GLM_ALIGNED_TYPEDEF(uvec1, aligned_uvec1, 4)'],['../a00986.html#ga94e86186978c502c6dc0c0d9c4a30679',1,'glm::GLM_ALIGNED_TYPEDEF(uvec2, aligned_uvec2, 8)'],['../a00986.html#ga5cec574686a7f3c8ed24bb195c5e2d0a',1,'glm::GLM_ALIGNED_TYPEDEF(uvec3, aligned_uvec3, 16)'],['../a00986.html#ga47edfdcee9c89b1ebdaf20450323b1d4',1,'glm::GLM_ALIGNED_TYPEDEF(uvec4, aligned_uvec4, 16)'],['../a00986.html#ga5611d6718e3a00096918a64192e73a45',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec1, aligned_u8vec1, 1)'],['../a00986.html#ga19837e6f72b60d994a805ef564c6c326',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec2, aligned_u8vec2, 2)'],['../a00986.html#ga9740cf8e34f068049b42a2753f9601c2',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec3, aligned_u8vec3, 4)'],['../a00986.html#ga8b8588bb221448f5541a858903822a57',1,'glm::GLM_ALIGNED_TYPEDEF(u8vec4, aligned_u8vec4, 4)'],['../a00986.html#ga991abe990c16de26b2129d6bc2f4c051',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec1, aligned_u16vec1, 2)'],['../a00986.html#gac01bb9fc32a1cd76c2b80d030f71df4c',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec2, aligned_u16vec2, 4)'],['../a00986.html#ga09540dbca093793a36a8997e0d4bee77',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec3, aligned_u16vec3, 8)'],['../a00986.html#gaecafb5996f5a44f57e34d29c8670741e',1,'glm::GLM_ALIGNED_TYPEDEF(u16vec4, aligned_u16vec4, 8)'],['../a00986.html#gac6b161a04d2f8408fe1c9d857e8daac0',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec1, aligned_u32vec1, 4)'],['../a00986.html#ga1fa0dfc8feb0fa17dab2acd43e05342b',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec2, aligned_u32vec2, 8)'],['../a00986.html#ga0019500abbfa9c66eff61ca75eaaed94',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec3, aligned_u32vec3, 16)'],['../a00986.html#ga14fd29d01dae7b08a04e9facbcc18824',1,'glm::GLM_ALIGNED_TYPEDEF(u32vec4, aligned_u32vec4, 16)'],['../a00986.html#gab253845f534a67136f9619843cade903',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec1, aligned_u64vec1, 8)'],['../a00986.html#ga929427a7627940cdf3304f9c050b677d',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec2, aligned_u64vec2, 16)'],['../a00986.html#gae373b6c04fdf9879f33d63e6949c037e',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec3, aligned_u64vec3, 32)'],['../a00986.html#ga53a8a03dca2015baec4584f45b8e9cdc',1,'glm::GLM_ALIGNED_TYPEDEF(u64vec4, aligned_u64vec4, 32)'],['../a00986.html#gab3301bae94ef5bf59fbdd9a24e7d2a01',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_float32, 4)'],['../a00986.html#gada9b0bea273d3ae0286f891533b9568f',1,'glm::GLM_ALIGNED_TYPEDEF(float32_t, aligned_float32_t, 4)'],['../a00986.html#gadbce23b9f23d77bb3884e289a574ebd5',1,'glm::GLM_ALIGNED_TYPEDEF(float32, aligned_f32, 4)'],['../a00986.html#ga75930684ff2233171c573e603f216162',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_float64, 8)'],['../a00986.html#ga6e3a2d83b131336219a0f4c7cbba2a48',1,'glm::GLM_ALIGNED_TYPEDEF(float64_t, aligned_float64_t, 8)'],['../a00986.html#gaa4deaa0dea930c393d55e7a4352b0a20',1,'glm::GLM_ALIGNED_TYPEDEF(float64, aligned_f64, 8)'],['../a00986.html#ga81bc497b2bfc6f80bab690c6ee28f0f9',1,'glm::GLM_ALIGNED_TYPEDEF(vec1, aligned_vec1, 4)'],['../a00986.html#gada3e8f783e9d4b90006695a16c39d4d4',1,'glm::GLM_ALIGNED_TYPEDEF(vec2, aligned_vec2, 8)'],['../a00986.html#gab8d081fac3a38d6f55fa552f32168d32',1,'glm::GLM_ALIGNED_TYPEDEF(vec3, aligned_vec3, 16)'],['../a00986.html#ga12fe7b9769c964c5b48dcfd8b7f40198',1,'glm::GLM_ALIGNED_TYPEDEF(vec4, aligned_vec4, 16)'],['../a00986.html#gaefab04611c7f8fe1fd9be3071efea6cc',1,'glm::GLM_ALIGNED_TYPEDEF(fvec1, aligned_fvec1, 4)'],['../a00986.html#ga2543c05ba19b3bd19d45b1227390c5b4',1,'glm::GLM_ALIGNED_TYPEDEF(fvec2, aligned_fvec2, 8)'],['../a00986.html#ga009afd727fd657ef33a18754d6d28f60',1,'glm::GLM_ALIGNED_TYPEDEF(fvec3, aligned_fvec3, 16)'],['../a00986.html#ga2f26177e74bfb301a3d0e02ec3c3ef53',1,'glm::GLM_ALIGNED_TYPEDEF(fvec4, aligned_fvec4, 16)'],['../a00986.html#ga309f495a1d6b75ddf195b674b65cb1e4',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec1, aligned_f32vec1, 4)'],['../a00986.html#ga5e185865a2217d0cd47187644683a8c3',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec2, aligned_f32vec2, 8)'],['../a00986.html#gade4458b27b039b9ca34f8ec049f3115a',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec3, aligned_f32vec3, 16)'],['../a00986.html#ga2e8a12c5e6a9c4ae4ddaeda1d1cffe3b',1,'glm::GLM_ALIGNED_TYPEDEF(f32vec4, aligned_f32vec4, 16)'],['../a00986.html#ga3e0f35fa0c626285a8bad41707e7316c',1,'glm::GLM_ALIGNED_TYPEDEF(dvec1, aligned_dvec1, 8)'],['../a00986.html#ga78bfec2f185d1d365ea0a9ef1e3d45b8',1,'glm::GLM_ALIGNED_TYPEDEF(dvec2, aligned_dvec2, 16)'],['../a00986.html#ga01fe6fee6db5df580b6724a7e681f069',1,'glm::GLM_ALIGNED_TYPEDEF(dvec3, aligned_dvec3, 32)'],['../a00986.html#ga687d5b8f551d5af32425c0b2fba15e99',1,'glm::GLM_ALIGNED_TYPEDEF(dvec4, aligned_dvec4, 32)'],['../a00986.html#ga8e842371d46842ff8f1813419ba49d0f',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec1, aligned_f64vec1, 8)'],['../a00986.html#ga32814aa0f19316b43134fc25f2aad2b9',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec2, aligned_f64vec2, 16)'],['../a00986.html#gaf3d3bbc1e93909b689123b085e177a14',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec3, aligned_f64vec3, 32)'],['../a00986.html#ga804c654cead1139bd250f90f9bb01fad',1,'glm::GLM_ALIGNED_TYPEDEF(f64vec4, aligned_f64vec4, 32)'],['../a00986.html#gacce4ac532880b8c7469d3c31974420a1',1,'glm::GLM_ALIGNED_TYPEDEF(mat2, aligned_mat2, 16)'],['../a00986.html#ga0498e0e249a6faddaf96aa55d7f81c3b',1,'glm::GLM_ALIGNED_TYPEDEF(mat3, aligned_mat3, 16)'],['../a00986.html#ga7435d87de82a0d652b35dc5b9cc718d5',1,'glm::GLM_ALIGNED_TYPEDEF(mat4, aligned_mat4, 16)'],['../a00986.html#ga719da577361541a4c43a2dd1d0e361e1',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2, 16)'],['../a00986.html#ga6e7ee4f541e1d7db66cd1a224caacafb',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3, 16)'],['../a00986.html#gae5d672d359f2a39f63f98c7975057486',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4, 16)'],['../a00986.html#ga6fa2df037dbfc5fe8c8e0b4db8a34953',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x2, aligned_fmat2x2, 16)'],['../a00986.html#ga0743b4f4f69a3227b82ff58f6abbad62',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x3, aligned_fmat2x3, 16)'],['../a00986.html#ga1a76b325fdf70f961d835edd182c63dd',1,'glm::GLM_ALIGNED_TYPEDEF(fmat2x4, aligned_fmat2x4, 16)'],['../a00986.html#ga4b4e181cd041ba28c3163e7b8074aef0',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x2, aligned_fmat3x2, 16)'],['../a00986.html#ga27b13f465abc8a40705698145e222c3f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x3, aligned_fmat3x3, 16)'],['../a00986.html#ga2608d19cc275830a6f8c0b6405625a4f',1,'glm::GLM_ALIGNED_TYPEDEF(fmat3x4, aligned_fmat3x4, 16)'],['../a00986.html#ga93f09768241358a287c4cca538f1f7e7',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x2, aligned_fmat4x2, 16)'],['../a00986.html#ga7c117e3ecca089e10247b1d41d88aff9',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x3, aligned_fmat4x3, 16)'],['../a00986.html#ga07c75cd04ba42dc37fa3e105f89455c5',1,'glm::GLM_ALIGNED_TYPEDEF(fmat4x4, aligned_fmat4x4, 16)'],['../a00986.html#ga65ff0d690a34a4d7f46f9b2eb51525ee',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2, 16)'],['../a00986.html#gadd8ddbe2bf65ccede865ba2f510176dc',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3, 16)'],['../a00986.html#gaf18dbff14bf13d3ff540c517659ec045',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4, 16)'],['../a00986.html#ga66339f6139bf7ff19e245beb33f61cc8',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x2, aligned_f32mat2x2, 16)'],['../a00986.html#ga1558a48b3934011b52612809f443e46d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x3, aligned_f32mat2x3, 16)'],['../a00986.html#gaa52e5732daa62851627021ad551c7680',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat2x4, aligned_f32mat2x4, 16)'],['../a00986.html#gac09663c42566bcb58d23c6781ac4e85a',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x2, aligned_f32mat3x2, 16)'],['../a00986.html#ga3f510999e59e1b309113e1d561162b29',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x3, aligned_f32mat3x3, 16)'],['../a00986.html#ga2c9c94f0c89cd71ce56551db6cf4aaec',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat3x4, aligned_f32mat3x4, 16)'],['../a00986.html#ga99ce8274c750fbfdf0e70c95946a2875',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x2, aligned_f32mat4x2, 16)'],['../a00986.html#ga9476ef66790239df53dbe66f3989c3b5',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x3, aligned_f32mat4x3, 16)'],['../a00986.html#gacc429b3b0b49921e12713b6d31e14e1d',1,'glm::GLM_ALIGNED_TYPEDEF(f32mat4x4, aligned_f32mat4x4, 16)'],['../a00986.html#ga88f6c6fa06e6e64479763e69444669cf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2, 32)'],['../a00986.html#gaae8e4639c991e64754145ab8e4c32083',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3, 32)'],['../a00986.html#ga6e9094f3feb3b5b49d0f83683a101fde',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4, 32)'],['../a00986.html#gadbd2c639c03de1c3e9591b5a39f65559',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x2, aligned_f64mat2x2, 32)'],['../a00986.html#gab059d7b9fe2094acc563b7223987499f',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x3, aligned_f64mat2x3, 32)'],['../a00986.html#gabbc811d1c52ed2b8cfcaff1378f75c69',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat2x4, aligned_f64mat2x4, 32)'],['../a00986.html#ga9ddf5212777734d2fd841a84439f3bdf',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x2, aligned_f64mat3x2, 32)'],['../a00986.html#gad1dda32ed09f94bfcf0a7d8edfb6cf13',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x3, aligned_f64mat3x3, 32)'],['../a00986.html#ga5875e0fa72f07e271e7931811cbbf31a',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat3x4, aligned_f64mat3x4, 32)'],['../a00986.html#ga41e82cd6ac07f912ba2a2d45799dcf0d',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x2, aligned_f64mat4x2, 32)'],['../a00986.html#ga0892638d6ba773043b3d63d1d092622e',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x3, aligned_f64mat4x3, 32)'],['../a00986.html#ga912a16432608b822f1e13607529934c1',1,'glm::GLM_ALIGNED_TYPEDEF(f64mat4x4, aligned_f64mat4x4, 32)'],['../a00986.html#gafd945a8ea86b042aba410e0560df9a3d',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_quat, 16)'],['../a00986.html#ga19c2ba545d1f2f36bcb7b60c9a228622',1,'glm::GLM_ALIGNED_TYPEDEF(quat, aligned_fquat, 16)'],['../a00986.html#gaabc28c84a3288b697605d4688686f9a9',1,'glm::GLM_ALIGNED_TYPEDEF(dquat, aligned_dquat, 32)'],['../a00986.html#ga1ed8aeb5ca67fade269a46105f1bf273',1,'glm::GLM_ALIGNED_TYPEDEF(f32quat, aligned_f32quat, 16)'],['../a00986.html#ga95cc03b8b475993fa50e05e38e203303',1,'glm::GLM_ALIGNED_TYPEDEF(f64quat, aligned_f64quat, 32)']]], + ['golden_5fratio_2767',['golden_ratio',['../a00908.html#ga748cf8642830657c5b7eae04d0a80899',1,'glm']]], + ['greaterthan_2768',['greaterThan',['../a00917.html#gab52513c338f90e9ba249faabdc115b67',1,'glm::greaterThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gadfdb8ea82deca869ddc7e63ea5a63ae4',1,'glm::greaterThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['greaterthanequal_2769',['greaterThanEqual',['../a00917.html#gaa71814c544f0ed99ba6d141b17e026ae',1,'glm::greaterThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#ga859975f538940f8d18fe62f916b9abd7',1,'glm::greaterThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] +]; diff --git a/include/glm/doc/api/search/functions_7.html b/include/glm/doc/api/search/functions_7.html new file mode 100644 index 0000000..d7ad9dd --- /dev/null +++ b/include/glm/doc/api/search/functions_7.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_7.js b/include/glm/doc/api/search/functions_7.js new file mode 100644 index 0000000..7e605c9 --- /dev/null +++ b/include/glm/doc/api/search/functions_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['half_5fpi_2770',['half_pi',['../a00908.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], + ['hermite_2771',['hermite',['../a00979.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], + ['highestbitvalue_2772',['highestBitValue',['../a00927.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00927.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], + ['hsvcolor_2773',['hsvColor',['../a00930.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_8.html b/include/glm/doc/api/search/functions_8.html new file mode 100644 index 0000000..8600cab --- /dev/null +++ b/include/glm/doc/api/search/functions_8.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_8.js b/include/glm/doc/api/search/functions_8.js new file mode 100644 index 0000000..0fa00c9 --- /dev/null +++ b/include/glm/doc/api/search/functions_8.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['identity_2774',['identity',['../a00837.html#ga81696f2b8d1db02ea1aff8da8f269314',1,'glm']]], + ['imulextended_2775',['imulExtended',['../a00992.html#ga3d262b3633cde7a67530c6172424ce37',1,'glm']]], + ['infiniteperspective_2776',['infinitePerspective',['../a00814.html#ga44fa38a18349450325cae2661bb115ca',1,'glm']]], + ['infiniteperspectivelh_2777',['infinitePerspectiveLH',['../a00814.html#ga3201b30f5b3ea0f933246d87bfb992a9',1,'glm']]], + ['infiniteperspectivelh_5fno_2778',['infinitePerspectiveLH_NO',['../a00814.html#ga8034759052b6d0f27fcb9e6d94d81d00',1,'glm']]], + ['infiniteperspectivelh_5fzo_2779',['infinitePerspectiveLH_ZO',['../a00814.html#gac814a56c1b1120aab3d10c8e6e955a89',1,'glm']]], + ['infiniteperspectiverh_2780',['infinitePerspectiveRH',['../a00814.html#ga99672ffe5714ef478dab2437255fe7e1',1,'glm']]], + ['infiniteperspectiverh_5fno_2781',['infinitePerspectiveRH_NO',['../a00814.html#gaf50823c0bed37d4f07891888f42a3a06',1,'glm']]], + ['infiniteperspectiverh_5fzo_2782',['infinitePerspectiveRH_ZO',['../a00814.html#gac8ab661bde7995c977393c5e69cb9dae',1,'glm']]], + ['intbitstofloat_2783',['intBitsToFloat',['../a00812.html#gad780bbd088b64d823ad7049c42b157da',1,'glm::intBitsToFloat(int v)'],['../a00812.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0',1,'glm::intBitsToFloat(vec< L, int, Q > const &v)']]], + ['intermediate_2784',['intermediate',['../a00972.html#gacc5cd5f3e78de61d141c2355417424de',1,'glm']]], + ['interpolate_2785',['interpolate',['../a00956.html#ga4e67863d150724b10c1ac00972dc958c',1,'glm']]], + ['intersectlinesphere_2786',['intersectLineSphere',['../a00949.html#ga9c68139f3d8a4f3d7fe45f9dbc0de5b7',1,'glm']]], + ['intersectlinetriangle_2787',['intersectLineTriangle',['../a00949.html#ga9d29b9b3acb504d43986502f42740df4',1,'glm']]], + ['intersectrayplane_2788',['intersectRayPlane',['../a00949.html#gad3697a9700ea379739a667ea02573488',1,'glm']]], + ['intersectraysphere_2789',['intersectRaySphere',['../a00949.html#ga69367b81be6a589e3a1f9661b4430a27',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, typename genType::value_type const sphereRadiusSquared, typename genType::value_type &intersectionDistance)'],['../a00949.html#gad28c00515b823b579c608aafa1100c1d',1,'glm::intersectRaySphere(genType const &rayStarting, genType const &rayNormalizedDirection, genType const &sphereCenter, const typename genType::value_type sphereRadius, genType &intersectionPosition, genType &intersectionNormal)']]], + ['intersectraytriangle_2790',['intersectRayTriangle',['../a00949.html#ga65bf2c594482f04881c36bc761f9e946',1,'glm']]], + ['inverse_2791',['inverse',['../a00856.html#ga50db49335150de11562052667537e517',1,'glm::inverse(qua< T, Q > const &q)'],['../a00935.html#ga070f521a953f6461af4ab4cf8ccbf27e',1,'glm::inverse(tdualquat< T, Q > const &q)'],['../a00993.html#gaed509fe8129b01e4f20a6d0de5690091',1,'glm::inverse(mat< C, R, T, Q > const &m)']]], + ['inversesqrt_2792',['inversesqrt',['../a00813.html#ga523dd6bd0ad9f75ae2d24c8e4b017b7a',1,'glm']]], + ['inversetranspose_2793',['inverseTranspose',['../a00913.html#gab213cd0e3ead5f316d583f99d6312008',1,'glm']]], + ['iround_2794',['iround',['../a00866.html#gaa45ff5782fde5182afa7ab211f9758a3',1,'glm::iround(genType const &x)'],['../a00877.html#ga57824268ebe13a922f1d69a5d37f637f',1,'glm::iround(vec< L, T, Q > const &x)']]], + ['iscompnull_2795',['isCompNull',['../a00990.html#gaf6ec1688eab7442fe96fe4941d5d4e76',1,'glm']]], + ['isdenormal_2796',['isdenormal',['../a00932.html#ga74aa7c7462245d83bd5a9edf9c6c2d91',1,'glm']]], + ['isfinite_2797',['isfinite',['../a00933.html#gaf4b04dcd3526996d68c1bfe17bfc8657',1,'glm::isfinite(genType const &x)'],['../a00933.html#gac3b12b8ac3014418fe53c299478b6603',1,'glm::isfinite(const vec< 1, T, Q > &x)'],['../a00933.html#ga8e76dc3e406ce6a4155c2b12a2e4b084',1,'glm::isfinite(const vec< 2, T, Q > &x)'],['../a00933.html#ga929ef27f896d902c1771a2e5e150fc97',1,'glm::isfinite(const vec< 3, T, Q > &x)'],['../a00933.html#ga19925badbe10ce61df1d0de00be0b5ad',1,'glm::isfinite(const vec< 4, T, Q > &x)'],['../a00933.html#gac5ce300d95da1649147adddbc80af5e5',1,'glm::isfinite(const qua< T, Q > &x)']]], + ['isidentity_2798',['isIdentity',['../a00959.html#gaee935d145581c82e82b154ccfd78ad91',1,'glm']]], + ['isinf_2799',['isinf',['../a00812.html#ga2885587c23a106301f20443896365b62',1,'glm::isinf(vec< L, T, Q > const &x)'],['../a00856.html#ga45722741ea266b4e861938b365c5f362',1,'glm::isinf(qua< T, Q > const &x)']]], + ['ismultiple_2800',['isMultiple',['../a00869.html#gaec593d33956a8fe43f78fccc63ddde9a',1,'glm::isMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#ga354caf634ef333d9cb4844407416256a',1,'glm::isMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#gabb4360e38c0943d8981ba965dead519d',1,'glm::isMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['isnan_2801',['isnan',['../a00812.html#ga29ef934c00306490de837b4746b4e14d',1,'glm::isnan(vec< L, T, Q > const &x)'],['../a00856.html#ga1bb55f8963616502e96dc564384d8a03',1,'glm::isnan(qua< T, Q > const &x)']]], + ['isnormalized_2802',['isNormalized',['../a00959.html#gae785af56f47ce220a1609f7f84aa077a',1,'glm::isNormalized(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00959.html#gaa068311695f28f5f555f5f746a6a66fb',1,'glm::isNormalized(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00959.html#ga4d9bb4d0465df49fedfad79adc6ce4ad',1,'glm::isNormalized(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00990.html#gac3c974f459fd75453134fad7ae89a39e',1,'glm::isNormalized(vec< L, T, Q > const &v, T const &epsilon)']]], + ['isnull_2803',['isNull',['../a00959.html#ga9790ec222ce948c0ff0d8ce927340dba',1,'glm::isNull(mat< 2, 2, T, Q > const &m, T const &epsilon)'],['../a00959.html#gae14501c6b14ccda6014cc5350080103d',1,'glm::isNull(mat< 3, 3, T, Q > const &m, T const &epsilon)'],['../a00959.html#ga2b98bb30a9fefa7cdea5f1dcddba677b',1,'glm::isNull(mat< 4, 4, T, Q > const &m, T const &epsilon)'],['../a00990.html#gab4a3637dbcb4bb42dc55caea7a1e0495',1,'glm::isNull(vec< L, T, Q > const &v, T const &epsilon)']]], + ['isorthogonal_2804',['isOrthogonal',['../a00959.html#ga58f3289f74dcab653387dd78ad93ca40',1,'glm']]], + ['ispoweroftwo_2805',['isPowerOfTwo',['../a00869.html#gadf491730354aa7da67fbe23d4d688763',1,'glm::isPowerOfTwo(genIUType v)'],['../a00887.html#gabf2b61ded7049bcb13e25164f832a290',1,'glm::isPowerOfTwo(vec< L, T, Q > const &v)']]] +]; diff --git a/include/glm/doc/api/search/functions_9.html b/include/glm/doc/api/search/functions_9.html new file mode 100644 index 0000000..76e3e2c --- /dev/null +++ b/include/glm/doc/api/search/functions_9.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_9.js b/include/glm/doc/api/search/functions_9.js new file mode 100644 index 0000000..fb9c154 --- /dev/null +++ b/include/glm/doc/api/search/functions_9.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['l1norm_2806',['l1Norm',['../a00962.html#gae2fc0b2aa967bebfd6a244700bff6997',1,'glm::l1Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#ga1a7491e2037ceeb37f83ce41addfc0be',1,'glm::l1Norm(vec< 3, T, Q > const &v)']]], + ['l2norm_2807',['l2Norm',['../a00962.html#ga41340b2ef40a9307ab0f137181565168',1,'glm::l2Norm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#gae288bde8f0e41fb4ed62e65137b18cba',1,'glm::l2Norm(vec< 3, T, Q > const &x)']]], + ['ldexp_2808',['ldexp',['../a00812.html#gac3010e0a0c35a1b514540f2fb579c58c',1,'glm']]], + ['lefthanded_2809',['leftHanded',['../a00946.html#ga6f1bad193b9a3b048543d1935cf04dd3',1,'glm']]], + ['length_2810',['length',['../a00862.html#gab703732449be6c7199369b3f9a91ed38',1,'glm::length(qua< T, Q > const &q)'],['../a00897.html#ga0cdabbb000834d994a1d6dc56f8f5263',1,'glm::length(vec< L, T, Q > const &x)']]], + ['length2_2811',['length2',['../a00962.html#ga8d1789651050adb7024917984b41c3de',1,'glm::length2(vec< L, T, Q > const &x)'],['../a00972.html#ga08eb643306c5ba9211a81b322bc89543',1,'glm::length2(qua< T, Q > const &q)']]], + ['lerp_2812',['lerp',['../a00856.html#gaacd3d0591852faa4bc291b61da88ad44',1,'glm::lerp(qua< T, Q > const &x, qua< T, Q > const &y, T a)'],['../a00933.html#ga5494ba3a95ea6594c86fc75236886864',1,'glm::lerp(T x, T y, T a)'],['../a00933.html#gaa551c0a0e16d2d4608e49f7696df897f',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, T a)'],['../a00933.html#ga44a8b5fd776320f1713413dec959b32a',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, T a)'],['../a00933.html#ga89ac8e000199292ec7875519d27e214b',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, T a)'],['../a00933.html#gaf68de5baf72d16135368b8ef4f841604',1,'glm::lerp(const vec< 2, T, Q > &x, const vec< 2, T, Q > &y, const vec< 2, T, Q > &a)'],['../a00933.html#ga4ae1a616c8540a2649eab8e0cd051bb3',1,'glm::lerp(const vec< 3, T, Q > &x, const vec< 3, T, Q > &y, const vec< 3, T, Q > &a)'],['../a00933.html#gab5477ab69c40de4db5d58d3359529724',1,'glm::lerp(const vec< 4, T, Q > &x, const vec< 4, T, Q > &y, const vec< 4, T, Q > &a)'],['../a00935.html#gace8380112d16d33f520839cb35a4d173',1,'glm::lerp(tdualquat< T, Q > const &x, tdualquat< T, Q > const &y, T const &a)']]], + ['lessthan_2813',['lessThan',['../a00917.html#gae0ed978b5c2588d53b220e9ceebaca0b',1,'glm::lessThan(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gae90ed1592c395f93e3f3dfce6b2f39c6',1,'glm::lessThan(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['lessthanequal_2814',['lessThanEqual',['../a00917.html#ga3ee1ffe56e5428f659c51a5bfd67ab33',1,'glm::lessThanEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00996.html#gab0bdafc019d227257ff73fb5bcca1718',1,'glm::lessThanEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]], + ['levels_2815',['levels',['../a00983.html#gaa8c377f4e63486db4fa872d77880da73',1,'glm']]], + ['lineargradient_2816',['linearGradient',['../a00945.html#ga849241df1e55129b8ce9476200307419',1,'glm']]], + ['linearinterpolation_2817',['linearInterpolation',['../a00936.html#ga290c3e47cb0a49f2e8abe90b1872b649',1,'glm']]], + ['linearrand_2818',['linearRand',['../a00918.html#ga04e241ab88374a477a2c2ceadd2fa03d',1,'glm::linearRand(genType Min, genType Max)'],['../a00918.html#ga94731130c298a9ff5e5025fdee6d97a0',1,'glm::linearRand(vec< L, T, Q > const &Min, vec< L, T, Q > const &Max)']]], + ['lmaxnorm_2819',['lMaxNorm',['../a00962.html#gad58a8231fc32e38104a9e1c4d3c0cb64',1,'glm::lMaxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)'],['../a00962.html#ga6968a324837a8e899396d44de23d5aae',1,'glm::lMaxNorm(vec< 3, T, Q > const &x)']]], + ['ln_5fln_5ftwo_2820',['ln_ln_two',['../a00908.html#gaca94292c839ed31a405ab7a81ae7e850',1,'glm']]], + ['ln_5ften_2821',['ln_ten',['../a00908.html#gaf97ebc6c059ffd788e6c4946f71ef66c',1,'glm']]], + ['ln_5ftwo_2822',['ln_two',['../a00908.html#ga24f4d27765678116f41a2f336ab7975c',1,'glm']]], + ['log_2823',['log',['../a00813.html#ga918c9f3fd086ce20e6760c903bd30fa9',1,'glm::log(vec< L, T, Q > const &v)'],['../a00864.html#gaa5f7b20e296671b16ce25a2ab7ad5473',1,'glm::log(qua< T, Q > const &q)'],['../a00952.html#ga60a7b0a401da660869946b2b77c710c9',1,'glm::log(genType const &x, genType const &base)']]], + ['log2_2824',['log2',['../a00813.html#ga5a5bd81210e6b0c0c6038f637a8185e3',1,'glm']]], + ['lookat_2825',['lookAt',['../a00837.html#gaa64aa951a0e99136bba9008d2b59c78e',1,'glm']]], + ['lookatlh_2826',['lookAtLH',['../a00837.html#gab2c09e25b0a16d3a9d89cc85bbae41b0',1,'glm']]], + ['lookatrh_2827',['lookAtRH',['../a00837.html#gacfa12c8889c754846bc20c65d9b5c701',1,'glm']]], + ['lowestbitvalue_2828',['lowestBitValue',['../a00927.html#ga2ff6568089f3a9b67f5c30918855fc6f',1,'glm']]], + ['luminosity_2829',['luminosity',['../a00930.html#gad028e0a4f1a9c812b39439b746295b34',1,'glm']]], + ['lxnorm_2830',['lxNorm',['../a00962.html#gacad23d30497eb16f67709f2375d1f66a',1,'glm::lxNorm(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, unsigned int Depth)'],['../a00962.html#gac61b6d81d796d6eb4d4183396a19ab91',1,'glm::lxNorm(vec< 3, T, Q > const &x, unsigned int Depth)']]] +]; diff --git a/include/glm/doc/api/search/functions_a.html b/include/glm/doc/api/search/functions_a.html new file mode 100644 index 0000000..81836b9 --- /dev/null +++ b/include/glm/doc/api/search/functions_a.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_a.js b/include/glm/doc/api/search/functions_a.js new file mode 100644 index 0000000..4f55e38 --- /dev/null +++ b/include/glm/doc/api/search/functions_a.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['make_5fmat2_2831',['make_mat2',['../a00923.html#ga04409e74dc3da251d2501acf5b4b546c',1,'glm']]], + ['make_5fmat2x2_2832',['make_mat2x2',['../a00923.html#gae49e1c7bcd5abec74d1c34155031f663',1,'glm']]], + ['make_5fmat2x3_2833',['make_mat2x3',['../a00923.html#ga21982104164789cf8985483aaefc25e8',1,'glm']]], + ['make_5fmat2x4_2834',['make_mat2x4',['../a00923.html#ga078b862c90b0e9a79ed43a58997d8388',1,'glm']]], + ['make_5fmat3_2835',['make_mat3',['../a00923.html#ga611ee7c4d4cadfc83a8fa8e1d10a170f',1,'glm']]], + ['make_5fmat3x2_2836',['make_mat3x2',['../a00923.html#ga27a24e121dc39e6857620e0f85b6e1a8',1,'glm']]], + ['make_5fmat3x3_2837',['make_mat3x3',['../a00923.html#gaf2e8337b15c3362aaeb6e5849e1c0536',1,'glm']]], + ['make_5fmat3x4_2838',['make_mat3x4',['../a00923.html#ga05dd66232aedb993e3b8e7b35eaf932b',1,'glm']]], + ['make_5fmat4_2839',['make_mat4',['../a00923.html#gae7bcedb710d1446c87fd1fc93ed8ee9a',1,'glm']]], + ['make_5fmat4x2_2840',['make_mat4x2',['../a00923.html#ga8b34c9b25bf3310d8ff9c828c7e2d97c',1,'glm']]], + ['make_5fmat4x3_2841',['make_mat4x3',['../a00923.html#ga0330bf6640092d7985fac92927bbd42b',1,'glm']]], + ['make_5fmat4x4_2842',['make_mat4x4',['../a00923.html#ga8f084be30e404844bfbb4a551ac2728c',1,'glm']]], + ['make_5fquat_2843',['make_quat',['../a00923.html#ga58110d7d81cf7d029e2bab7f8cd9b246',1,'glm']]], + ['make_5fvec1_2844',['make_vec1',['../a00923.html#ga4135f03f3049f0a4eb76545c4967957c',1,'glm::make_vec1(vec< 1, T, Q > const &v)'],['../a00923.html#ga13c92b81e55f201b052a6404d57da220',1,'glm::make_vec1(vec< 2, T, Q > const &v)'],['../a00923.html#ga3c23cc74086d361e22bbd5e91a334e03',1,'glm::make_vec1(vec< 3, T, Q > const &v)'],['../a00923.html#ga6af06bb60d64ca8bcd169e3c93bc2419',1,'glm::make_vec1(vec< 4, T, Q > const &v)']]], + ['make_5fvec2_2845',['make_vec2',['../a00923.html#ga8476d0e6f1b9b4a6193cc25f59d8a896',1,'glm::make_vec2(vec< 1, T, Q > const &v)'],['../a00923.html#gae54bd325a08ad26edf63929201adebc7',1,'glm::make_vec2(vec< 2, T, Q > const &v)'],['../a00923.html#ga0084fea4694cf47276e9cccbe7b1015a',1,'glm::make_vec2(vec< 3, T, Q > const &v)'],['../a00923.html#ga2b81f71f3a222fe5bba81e3983751249',1,'glm::make_vec2(vec< 4, T, Q > const &v)'],['../a00923.html#ga81253cf7b0ebfbb1e70540c5774e6824',1,'glm::make_vec2(T const *const ptr)']]], + ['make_5fvec3_2846',['make_vec3',['../a00923.html#ga9147e4b3a5d0f4772edfbfd179d7ea0b',1,'glm::make_vec3(vec< 1, T, Q > const &v)'],['../a00923.html#ga482b60a842a5b154d3eed392417a9511',1,'glm::make_vec3(vec< 2, T, Q > const &v)'],['../a00923.html#gacd57046034df557b8b1c457f58613623',1,'glm::make_vec3(vec< 3, T, Q > const &v)'],['../a00923.html#ga8b589ed7d41a298b516d2a69169248f1',1,'glm::make_vec3(vec< 4, T, Q > const &v)'],['../a00923.html#gad9e0d36ff489cb30c65ad1fa40351651',1,'glm::make_vec3(T const *const ptr)']]], + ['make_5fvec4_2847',['make_vec4',['../a00923.html#ga600cb97f70c5d50d3a4a145e1cafbf37',1,'glm::make_vec4(vec< 1, T, Q > const &v)'],['../a00923.html#gaa9bd116caf28196fd1cf00b278286fa7',1,'glm::make_vec4(vec< 2, T, Q > const &v)'],['../a00923.html#ga4036328ba4702c74cbdfad1fc03d1b8f',1,'glm::make_vec4(vec< 3, T, Q > const &v)'],['../a00923.html#gaa95cb15732f708f613e65a0578895ae5',1,'glm::make_vec4(vec< 4, T, Q > const &v)'],['../a00923.html#ga63f576518993efc22a969f18f80e29bb',1,'glm::make_vec4(T const *const ptr)']]], + ['mask_2848',['mask',['../a00906.html#gad7eba518a0b71662114571ee76939f8a',1,'glm::mask(genIUType Bits)'],['../a00906.html#ga2e64e3b922a296033b825311e7f5fff1',1,'glm::mask(vec< L, T, Q > const &v)']]], + ['mat2x4_5fcast_2849',['mat2x4_cast',['../a00935.html#gae99d143b37f9cad4cd9285571aab685a',1,'glm']]], + ['mat3_5fcast_2850',['mat3_cast',['../a00917.html#ga333ab70047fbe4132406100c292dbc89',1,'glm']]], + ['mat3x4_5fcast_2851',['mat3x4_cast',['../a00935.html#gaf59f5bb69620d2891c3795c6f2639179',1,'glm']]], + ['mat4_5fcast_2852',['mat4_cast',['../a00917.html#ga1113212d9bdefc2e31ad40e5bbb506f3',1,'glm']]], + ['matrixcompmult_2853',['matrixCompMult',['../a00834.html#ga514c5f14f88b22355731a992e683fc90',1,'glm']]], + ['matrixcross3_2854',['matrixCross3',['../a00953.html#ga5802386bb4c37b3332a3b6fd8b6960ff',1,'glm']]], + ['matrixcross4_2855',['matrixCross4',['../a00953.html#ga20057fff91ddafa102934adb25458cde',1,'glm']]], + ['max_2856',['max',['../a00812.html#gae02d42887fc5570451f880e3c624b9ac',1,'glm::max(genType x, genType y)'],['../a00812.html#ga03e45d6e60d1c36edb00c52edeea0f31',1,'glm::max(vec< L, T, Q > const &x, T y)'],['../a00812.html#gac1fec0c3303b572a6d4697a637213870',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00866.html#gae7224c683ea72d2a6a395529b8c14a4c',1,'glm::max(T a, T b, T c)'],['../a00866.html#gae7fcb461017290d4a34e688fb9ae41ab',1,'glm::max(T a, T b, T c, T d)'],['../a00877.html#gaa45d34f6a2906f8bf58ab2ba5429234d',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z)'],['../a00877.html#ga94d42b8da2b4ded5ddf7504fbdc6bf10',1,'glm::max(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &z, vec< L, T, Q > const &w)'],['../a00939.html#ga04991ccb9865c4c4e58488cfb209ce69',1,'glm::max(T const &x, T const &y, T const &z)'],['../a00939.html#gae1b7bbe5c91de4924835ea3e14530744',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00939.html#gaf832e9d4ab4826b2dda2fda25935a3a4',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00939.html#ga78e04a0cef1c4863fcae1a2130500d87',1,'glm::max(T const &x, T const &y, T const &z, T const &w)'],['../a00939.html#ga7cca8b53cfda402040494cdf40fbdf4a',1,'glm::max(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00939.html#gaacffbc466c2d08c140b181e7fd8a4858',1,'glm::max(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], + ['min_2857',['min',['../a00812.html#ga6cf8098827054a270ee36b18e30d471d',1,'glm::min(genType x, genType y)'],['../a00812.html#gaa7d015eba1f9f48519251f4abe69b14d',1,'glm::min(vec< L, T, Q > const &x, T y)'],['../a00812.html#ga31f49ef9e7d1beb003160c5e009b0c48',1,'glm::min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00866.html#gae7a84710d9b7dee05eb0b2a68630cab4',1,'glm::min(T a, T b, T c)'],['../a00866.html#ga0f57f64fe8994fb4b6f7eebb6466a4e7',1,'glm::min(T a, T b, T c, T d)'],['../a00877.html#ga3cd83d80fd4f433d8e333593ec56dddf',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c)'],['../a00877.html#gab66920ed064ab518d6859c5a889c4be4',1,'glm::min(vec< L, T, Q > const &a, vec< L, T, Q > const &b, vec< L, T, Q > const &c, vec< L, T, Q > const &d)'],['../a00939.html#ga713d3f9b3e76312c0d314e0c8611a6a6',1,'glm::min(T const &x, T const &y, T const &z)'],['../a00939.html#ga74d1a96e7cdbac40f6d35142d3bcbbd4',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z)'],['../a00939.html#ga42b5c3fc027fd3d9a50d2ccc9126d9f0',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z)'],['../a00939.html#ga95466987024d03039607f09e69813d69',1,'glm::min(T const &x, T const &y, T const &z, T const &w)'],['../a00939.html#ga4fe35dd31dd0c45693c9b60b830b8d47',1,'glm::min(C< T > const &x, typename C< T >::T const &y, typename C< T >::T const &z, typename C< T >::T const &w)'],['../a00939.html#ga7471ea4159eed8dd9ea4ac5d46c2fead',1,'glm::min(C< T > const &x, C< T > const &y, C< T > const &z, C< T > const &w)']]], + ['mirrorclamp_2858',['mirrorClamp',['../a00866.html#gaa6856a0a048d2749252848da35e10c8b',1,'glm::mirrorClamp(genType const &Texcoord)'],['../a00877.html#gaf72b0749a21162aebcd47d9acd22e0df',1,'glm::mirrorClamp(vec< L, T, Q > const &Texcoord)']]], + ['mirrorrepeat_2859',['mirrorRepeat',['../a00866.html#ga16a89b0661b60d5bea85137bbae74d73',1,'glm::mirrorRepeat(genType const &Texcoord)'],['../a00877.html#ga9cfc26d9710a853d764dcac518fb42ec',1,'glm::mirrorRepeat(vec< L, T, Q > const &Texcoord)']]], + ['mix_2860',['mix',['../a00812.html#ga6b6e0c7ecb4a5b78f929566355bb7416',1,'glm::mix(genTypeT x, genTypeT y, genTypeU a)'],['../a00856.html#gafbfe587b8da11fb89a30c3d67dd5ccc2',1,'glm::mix(qua< T, Q > const &x, qua< T, Q > const &y, T a)']]], + ['mixedproduct_2861',['mixedProduct',['../a00961.html#gab3c6048fbb67f7243b088a4fee48d020',1,'glm']]], + ['mod_2862',['mod',['../a00812.html#ga9b197a452cd52db3c5c18bac72bd7798',1,'glm::mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)'],['../a00948.html#gaabfbb41531ab7ad8d06fc176edfba785',1,'glm::mod(int x, int y)'],['../a00948.html#ga63fc8d63e7da1706439233b386ba8b6f',1,'glm::mod(uint x, uint y)']]], + ['modf_2863',['modf',['../a00812.html#ga85e33f139b8db1b39b590a5713b9e679',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_b.html b/include/glm/doc/api/search/functions_b.html new file mode 100644 index 0000000..8c270d2 --- /dev/null +++ b/include/glm/doc/api/search/functions_b.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_b.js b/include/glm/doc/api/search/functions_b.js new file mode 100644 index 0000000..bb9aee3 --- /dev/null +++ b/include/glm/doc/api/search/functions_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['next_5ffloat_2864',['next_float',['../a00924.html#gab21fbe69182da4f378862feeffe24b16',1,'glm::next_float(genType x)'],['../a00924.html#gaf8540f4caeba5037dee6506184f360b0',1,'glm::next_float(genType x, int ULPs)'],['../a00924.html#ga72c18d50df8ef360960ddf1f5d09c728',1,'glm::next_float(vec< L, T, Q > const &x)'],['../a00924.html#ga78b63ddacacb9e0e8f4172d85f4373aa',1,'glm::next_float(vec< L, T, Q > const &x, int ULPs)'],['../a00924.html#ga48e17607989d47bc99e16cce74543e19',1,'glm::next_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['nextfloat_2865',['nextFloat',['../a00874.html#ga30bc0280e7cefd159867b1aa5050b94a',1,'glm::nextFloat(genType x)'],['../a00874.html#ga54eb5916c5250c8f0ad8224fb8e0d392',1,'glm::nextFloat(genType x, int ULPs)'],['../a00896.html#gadbd6e5dff9c0ae4567b3edd9019c1bee',1,'glm::nextFloat(vec< L, T, Q > const &x)'],['../a00896.html#ga92f82c4f45b5b43ccc29533990db079d',1,'glm::nextFloat(vec< L, T, Q > const &x, int ULPs)'],['../a00896.html#ga48e9b73c50fcf589e0032b8dbed9a3f9',1,'glm::nextFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['nextmultiple_2866',['nextMultiple',['../a00869.html#gab770a3835c44c8a6fd225be4f4e6b317',1,'glm::nextMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#gace38d00601cbf49cd4dc03f003ab42b7',1,'glm::nextMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#gacda365edad320c7aff19cc283a3b8ca2',1,'glm::nextMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['nextpoweroftwo_2867',['nextPowerOfTwo',['../a00869.html#ga3a37c2f2fd347886c9af6a3ca3db04dc',1,'glm::nextPowerOfTwo(genIUType v)'],['../a00887.html#gabba67f8aac9915e10fca727277274502',1,'glm::nextPowerOfTwo(vec< L, T, Q > const &v)']]], + ['nlz_2868',['nlz',['../a00948.html#ga78dff8bdb361bf0061194c93e003d189',1,'glm']]], + ['normalize_2869',['normalize',['../a00862.html#gad815f4de07f2fe6502cdd2cd86c3dabd',1,'glm::normalize(qua< T, Q > const &q)'],['../a00897.html#ga3b8d3dcae77870781392ed2902cce597',1,'glm::normalize(vec< L, T, Q > const &x)'],['../a00935.html#ga299b8641509606b1958ffa104a162cfe',1,'glm::normalize(tdualquat< T, Q > const &q)']]], + ['normalizedot_2870',['normalizeDot',['../a00964.html#gacb140a2b903115d318c8b0a2fb5a5daa',1,'glm']]], + ['not_5f_2871',['not_',['../a00996.html#ga610fcd175791fd246e328ffee10dbf1e',1,'glm']]], + ['notequal_2872',['notEqual',['../a00836.html#ga8504f18a7e2bf315393032c2137dad83',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y)'],['../a00836.html#ga29071147d118569344d10944b7d5c378',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, T epsilon)'],['../a00836.html#gad7959e14fbc35b4ed2617daf4d67f6cd',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, T, Q > const &epsilon)'],['../a00836.html#gaa1cd7fc228ef6e26c73583fd0d9c6552',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, int ULPs)'],['../a00836.html#gaa5517341754149ffba742d230afd1f32',1,'glm::notEqual(mat< C, R, T, Q > const &x, mat< C, R, T, Q > const &y, vec< C, int, Q > const &ULPs)'],['../a00863.html#gab441cee0de5867a868f3a586ee68cfe1',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y)'],['../a00863.html#ga5117a44c1bf21af857cd23e44a96d313',1,'glm::notEqual(qua< T, Q > const &x, qua< T, Q > const &y, T epsilon)'],['../a00872.html#ga835ecf946c74f3d68be93e70b10821e7',1,'glm::notEqual(genType const &x, genType const &y, genType const &epsilon)'],['../a00872.html#gabd21e65b2e4c9d501d51536c4a6ef7cb',1,'glm::notEqual(genType const &x, genType const &y, int ULPs)'],['../a00890.html#ga4a99cc41341567567a608719449c1fac',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, T epsilon)'],['../a00890.html#ga417cf51304359db18e819dda9bce5767',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, T, Q > const &epsilon)'],['../a00890.html#ga8b5c2c3f83422ae5b71fa960d03b0339',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, int ULPs)'],['../a00890.html#ga0b15ffe32987a6029b14398eb0def01a',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y, vec< L, int, Q > const &ULPs)'],['../a00996.html#ga17c19dc1b76cd5aef63e9e7ff3aa3c27',1,'glm::notEqual(vec< L, T, Q > const &x, vec< L, T, Q > const &y)']]] +]; diff --git a/include/glm/doc/api/search/functions_c.html b/include/glm/doc/api/search/functions_c.html new file mode 100644 index 0000000..af1234d --- /dev/null +++ b/include/glm/doc/api/search/functions_c.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_c.js b/include/glm/doc/api/search/functions_c.js new file mode 100644 index 0000000..ab11512 --- /dev/null +++ b/include/glm/doc/api/search/functions_c.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['one_2873',['one',['../a00908.html#ga39c2fb227631ca25894326529bdd1ee5',1,'glm']]], + ['one_5fover_5fpi_2874',['one_over_pi',['../a00908.html#ga555150da2b06d23c8738981d5013e0eb',1,'glm']]], + ['one_5fover_5froot_5ftwo_2875',['one_over_root_two',['../a00908.html#ga788fa23a0939bac4d1d0205fb4f35818',1,'glm']]], + ['one_5fover_5ftwo_5fpi_2876',['one_over_two_pi',['../a00908.html#ga7c922b427986cbb2e4c6ac69874eefbc',1,'glm']]], + ['openbounded_2877',['openBounded',['../a00932.html#gafd303042ba2ba695bf53b2315f53f93f',1,'glm']]], + ['orientate2_2878',['orientate2',['../a00937.html#gae16738a9f1887cf4e4db6a124637608d',1,'glm']]], + ['orientate3_2879',['orientate3',['../a00937.html#ga7ca98668a5786f19c7b38299ebbc9b4c',1,'glm::orientate3(T const &angle)'],['../a00937.html#ga7238c8e15c7720e3ca6a45ab151eeabb',1,'glm::orientate3(vec< 3, T, Q > const &angles)']]], + ['orientate4_2880',['orientate4',['../a00937.html#ga4a044653f71a4ecec68e0b623382b48a',1,'glm']]], + ['orientation_2881',['orientation',['../a00976.html#ga1a32fceb71962e6160e8af295c91930a',1,'glm']]], + ['orientedangle_2882',['orientedAngle',['../a00989.html#ga9556a803dce87fe0f42fdabe4ebba1d5',1,'glm::orientedAngle(vec< 2, T, Q > const &x, vec< 2, T, Q > const &y)'],['../a00989.html#ga706fce3d111f485839756a64f5a48553',1,'glm::orientedAngle(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y, vec< 3, T, Q > const &ref)']]], + ['ortho_2883',['ortho',['../a00814.html#gae5b6b40ed882cd56cd7cb97701909c06',1,'glm::ortho(T left, T right, T bottom, T top)'],['../a00814.html#ga6615d8a9d39432e279c4575313ecb456',1,'glm::ortho(T left, T right, T bottom, T top, T zNear, T zFar)']]], + ['ortholh_2884',['orthoLH',['../a00814.html#gad122a79aadaa5529cec4ac197203db7f',1,'glm']]], + ['ortholh_5fno_2885',['orthoLH_NO',['../a00814.html#ga526416735ea7c5c5cd255bf99d051bd8',1,'glm']]], + ['ortholh_5fzo_2886',['orthoLH_ZO',['../a00814.html#gab37ac3eec8d61f22fceda7775e836afa',1,'glm']]], + ['orthono_2887',['orthoNO',['../a00814.html#gab219d28a8f178d4517448fcd6395a073',1,'glm']]], + ['orthonormalize_2888',['orthonormalize',['../a00967.html#ga4cab5d698e6e2eccea30c8e81c74371f',1,'glm::orthonormalize(mat< 3, 3, T, Q > const &m)'],['../a00967.html#gac3bc7ef498815026bc3d361ae0b7138e',1,'glm::orthonormalize(vec< 3, T, Q > const &x, vec< 3, T, Q > const &y)']]], + ['orthorh_2889',['orthoRH',['../a00814.html#ga16264c9b838edeb9dd1de7a1010a13a4',1,'glm']]], + ['orthorh_5fno_2890',['orthoRH_NO',['../a00814.html#gaa2f7a1373170bf0a4a2ddef9b0706780',1,'glm']]], + ['orthorh_5fzo_2891',['orthoRH_ZO',['../a00814.html#ga9aea2e515b08fd7dce47b7b6ec34d588',1,'glm']]], + ['orthozo_2892',['orthoZO',['../a00814.html#gaea11a70817af2c0801c869dea0b7a5bc',1,'glm']]], + ['outerproduct_2893',['outerProduct',['../a00834.html#ga80d31e9320fd77035336e01d0228321f',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_d.html b/include/glm/doc/api/search/functions_d.html new file mode 100644 index 0000000..7116594 --- /dev/null +++ b/include/glm/doc/api/search/functions_d.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_d.js b/include/glm/doc/api/search/functions_d.js new file mode 100644 index 0000000..e2568f6 --- /dev/null +++ b/include/glm/doc/api/search/functions_d.js @@ -0,0 +1,85 @@ +var searchData= +[ + ['packdouble2x32_2894',['packDouble2x32',['../a00994.html#gaa916ca426b2bb0343ba17e3753e245c2',1,'glm']]], + ['packf2x11_5f1x10_2895',['packF2x11_1x10',['../a00916.html#ga4944ad465ff950e926d49621f916c78d',1,'glm']]], + ['packf3x9_5fe1x5_2896',['packF3x9_E1x5',['../a00916.html#ga3f648fc205467792dc6d8c59c748f8a6',1,'glm']]], + ['packhalf_2897',['packHalf',['../a00916.html#ga2d8bbce673ebc04831c1fb05c47f5251',1,'glm']]], + ['packhalf1x16_2898',['packHalf1x16',['../a00916.html#ga43f2093b6ff192a79058ff7834fc3528',1,'glm']]], + ['packhalf2x16_2899',['packHalf2x16',['../a00994.html#ga20f134b07db3a3d3a38efb2617388c92',1,'glm']]], + ['packhalf4x16_2900',['packHalf4x16',['../a00916.html#gafe2f7b39caf8f5ec555e1c059ec530e6',1,'glm']]], + ['packi3x10_5f1x2_2901',['packI3x10_1x2',['../a00916.html#ga06ecb6afb902dba45419008171db9023',1,'glm']]], + ['packint2x16_2902',['packInt2x16',['../a00916.html#ga3644163cf3a47bf1d4af1f4b03013a7e',1,'glm']]], + ['packint2x32_2903',['packInt2x32',['../a00916.html#gad1e4c8a9e67d86b61a6eec86703a827a',1,'glm']]], + ['packint2x8_2904',['packInt2x8',['../a00916.html#ga8884b1f2292414f36d59ef3be5d62914',1,'glm']]], + ['packint4x16_2905',['packInt4x16',['../a00916.html#ga1989f093a27ae69cf9207145be48b3d7',1,'glm']]], + ['packint4x8_2906',['packInt4x8',['../a00916.html#gaf2238401d5ce2aaade1a44ba19709072',1,'glm']]], + ['packrgbm_2907',['packRGBM',['../a00916.html#ga0466daf4c90f76cc64b3f105ce727295',1,'glm']]], + ['packsnorm_2908',['packSnorm',['../a00916.html#gaa54b5855a750d6aeb12c1c902f5939b8',1,'glm']]], + ['packsnorm1x16_2909',['packSnorm1x16',['../a00916.html#gab22f8bcfdb5fc65af4701b25f143c1af',1,'glm']]], + ['packsnorm1x8_2910',['packSnorm1x8',['../a00916.html#gae3592e0795e62aaa1865b3a10496a7a1',1,'glm']]], + ['packsnorm2x16_2911',['packSnorm2x16',['../a00994.html#ga977ab172da5494e5ac63e952afacfbe2',1,'glm']]], + ['packsnorm2x8_2912',['packSnorm2x8',['../a00916.html#ga6be3cfb2cce3702f03e91bbeb5286d7e',1,'glm']]], + ['packsnorm3x10_5f1x2_2913',['packSnorm3x10_1x2',['../a00916.html#gab997545661877d2c7362a5084d3897d3',1,'glm']]], + ['packsnorm4x16_2914',['packSnorm4x16',['../a00916.html#ga358943934d21da947d5bcc88c2ab7832',1,'glm']]], + ['packsnorm4x8_2915',['packSnorm4x8',['../a00994.html#ga85e8f17627516445026ab7a9c2e3531a',1,'glm']]], + ['packu3x10_5f1x2_2916',['packU3x10_1x2',['../a00916.html#gada3d88d59f0f458f9c51a9fd359a4bc0',1,'glm']]], + ['packuint2x16_2917',['packUint2x16',['../a00916.html#ga5eecc9e8cbaf51ac6cf57501e670ee19',1,'glm']]], + ['packuint2x32_2918',['packUint2x32',['../a00916.html#gaa864081097b86e83d8e4a4d79c382b22',1,'glm']]], + ['packuint2x8_2919',['packUint2x8',['../a00916.html#ga3c3c9fb53ae7823b10fa083909357590',1,'glm']]], + ['packuint4x16_2920',['packUint4x16',['../a00916.html#ga2ceb62cca347d8ace42ee90317a3f1f9',1,'glm']]], + ['packuint4x8_2921',['packUint4x8',['../a00916.html#gaa0fe2f09aeb403cd66c1a062f58861ab',1,'glm']]], + ['packunorm_2922',['packUnorm',['../a00916.html#gaccd3f27e6ba5163eb7aa9bc8ff96251a',1,'glm']]], + ['packunorm1x16_2923',['packUnorm1x16',['../a00916.html#ga9f82737bf2a44bedff1d286b76837886',1,'glm']]], + ['packunorm1x5_5f1x6_5f1x5_2924',['packUnorm1x5_1x6_1x5',['../a00916.html#ga768e0337dd6246773f14aa0a421fe9a8',1,'glm']]], + ['packunorm1x8_2925',['packUnorm1x8',['../a00916.html#ga4b2fa60df3460403817d28b082ee0736',1,'glm']]], + ['packunorm2x16_2926',['packUnorm2x16',['../a00994.html#ga0e2d107039fe608a209497af867b85fb',1,'glm']]], + ['packunorm2x3_5f1x2_2927',['packUnorm2x3_1x2',['../a00916.html#ga7f9abdb50f9be1aa1c14912504a0d98d',1,'glm']]], + ['packunorm2x4_2928',['packUnorm2x4',['../a00916.html#gab6bbd5be3b8e6db538ecb33a7844481c',1,'glm']]], + ['packunorm2x8_2929',['packUnorm2x8',['../a00916.html#ga9a666b1c688ab54100061ed06526de6e',1,'glm']]], + ['packunorm3x10_5f1x2_2930',['packUnorm3x10_1x2',['../a00916.html#ga8a1ee625d2707c60530fb3fca2980b19',1,'glm']]], + ['packunorm3x5_5f1x1_2931',['packUnorm3x5_1x1',['../a00916.html#gaec4112086d7fb133bea104a7c237de52',1,'glm']]], + ['packunorm4x16_2932',['packUnorm4x16',['../a00916.html#ga1f63c264e7ab63264e2b2a99fd393897',1,'glm']]], + ['packunorm4x4_2933',['packUnorm4x4',['../a00916.html#gad3e7e3ce521513584a53aedc5f9765c1',1,'glm']]], + ['packunorm4x8_2934',['packUnorm4x8',['../a00994.html#gaf7d2f7341a9eeb4a436929d6f9ad08f2',1,'glm']]], + ['perlin_2935',['perlin',['../a00915.html#ga1e043ce3b51510e9bc4469227cefc38a',1,'glm::perlin(vec< L, T, Q > const &p)'],['../a00915.html#gac270edc54c5fc52f5985a45f940bb103',1,'glm::perlin(vec< L, T, Q > const &p, vec< L, T, Q > const &rep)']]], + ['perp_2936',['perp',['../a00969.html#ga264cfc4e180cf9b852e943b35089003c',1,'glm']]], + ['perspective_2937',['perspective',['../a00814.html#ga747c8cf99458663dd7ad1bb3a2f07787',1,'glm']]], + ['perspectivefov_2938',['perspectiveFov',['../a00814.html#gaebd02240fd36e85ad754f02ddd9a560d',1,'glm']]], + ['perspectivefovlh_2939',['perspectiveFovLH',['../a00814.html#ga6aebe16c164bd8e52554cbe0304ef4aa',1,'glm']]], + ['perspectivefovlh_5fno_2940',['perspectiveFovLH_NO',['../a00814.html#gad18a4495b77530317327e8d466488c1a',1,'glm']]], + ['perspectivefovlh_5fzo_2941',['perspectiveFovLH_ZO',['../a00814.html#gabdd37014f529e25b2fa1b3ba06c10d5c',1,'glm']]], + ['perspectivefovno_2942',['perspectiveFovNO',['../a00814.html#gaf30e7bd3b1387a6776433dd5383e6633',1,'glm']]], + ['perspectivefovrh_2943',['perspectiveFovRH',['../a00814.html#gaf32bf563f28379c68554a44ee60c6a85',1,'glm']]], + ['perspectivefovrh_5fno_2944',['perspectiveFovRH_NO',['../a00814.html#ga257b733ff883c9a065801023cf243eb2',1,'glm']]], + ['perspectivefovrh_5fzo_2945',['perspectiveFovRH_ZO',['../a00814.html#ga7dcbb25331676f5b0795aced1a905c44',1,'glm']]], + ['perspectivefovzo_2946',['perspectiveFovZO',['../a00814.html#ga4bc69fa1d1f95128430aa3d2a712390b',1,'glm']]], + ['perspectivelh_2947',['perspectiveLH',['../a00814.html#ga9bd34951dc7022ac256fcb51d7f6fc2f',1,'glm']]], + ['perspectivelh_5fno_2948',['perspectiveLH_NO',['../a00814.html#gaead4d049d1feab463b700b5641aa590e',1,'glm']]], + ['perspectivelh_5fzo_2949',['perspectiveLH_ZO',['../a00814.html#gaca32af88c2719005c02817ad1142986c',1,'glm']]], + ['perspectiveno_2950',['perspectiveNO',['../a00814.html#gaf497e6bca61e7c87088370b126a93758',1,'glm']]], + ['perspectiverh_2951',['perspectiveRH',['../a00814.html#ga26b88757fbd90601b80768a7e1ad3aa1',1,'glm']]], + ['perspectiverh_5fno_2952',['perspectiveRH_NO',['../a00814.html#gad1526cb2cbe796095284e8f34b01c582',1,'glm']]], + ['perspectiverh_5fzo_2953',['perspectiveRH_ZO',['../a00814.html#ga4da358d6e1b8e5b9ae35d1f3f2dc3b9a',1,'glm']]], + ['perspectivezo_2954',['perspectiveZO',['../a00814.html#gaa9dfba5c2322da54f72b1eb7c7c11b47',1,'glm']]], + ['pi_2955',['pi',['../a00867.html#ga94bafeb2a0f23ab6450fed1f98ee4e45',1,'glm']]], + ['pickmatrix_2956',['pickMatrix',['../a00835.html#gaf6b21eadb7ac2ecbbe258a9a233b4c82',1,'glm']]], + ['pitch_2957',['pitch',['../a00917.html#ga7603e81477b46ddb448896909bc04928',1,'glm']]], + ['polar_2958',['polar',['../a00970.html#gab83ac2c0e55b684b06b6c46c28b1590d',1,'glm']]], + ['pow_2959',['pow',['../a00813.html#ga2254981952d4f333b900a6bf5167a6c4',1,'glm::pow(vec< L, T, Q > const &base, vec< L, T, Q > const &exponent)'],['../a00864.html#ga4975ffcacd312a8c0bbd046a76c5607e',1,'glm::pow(qua< T, Q > const &q, T y)'],['../a00948.html#ga465016030a81d513fa2fac881ebdaa83',1,'glm::pow(int x, uint y)'],['../a00948.html#ga998e5ee915d3769255519e2fbaa2bbf0',1,'glm::pow(uint x, uint y)']]], + ['pow2_2960',['pow2',['../a00966.html#ga7288d7bb23f192bd64a60ba2a61a1c9f',1,'glm']]], + ['pow3_2961',['pow3',['../a00966.html#ga156e452c2d630001bb07f4a6f1060a10',1,'glm']]], + ['pow4_2962',['pow4',['../a00966.html#ga830b64f3b47818374e9d03cc20fadbf3',1,'glm']]], + ['poweroftwoabove_2963',['powerOfTwoAbove',['../a00927.html#ga8cda2459871f574a0aecbe702ac93291',1,'glm::powerOfTwoAbove(genIUType Value)'],['../a00927.html#ga2bbded187c5febfefc1e524ba31b3fab',1,'glm::powerOfTwoAbove(vec< L, T, Q > const &value)']]], + ['poweroftwobelow_2964',['powerOfTwoBelow',['../a00927.html#ga3de7df63c589325101a2817a56f8e29d',1,'glm::powerOfTwoBelow(genIUType Value)'],['../a00927.html#gaf78ddcc4152c051b2a21e68fecb10980',1,'glm::powerOfTwoBelow(vec< L, T, Q > const &value)']]], + ['poweroftwonearest_2965',['powerOfTwoNearest',['../a00927.html#ga5f65973a5d2ea38c719e6a663149ead9',1,'glm::powerOfTwoNearest(genIUType Value)'],['../a00927.html#gac87e65d11e16c3d6b91c3bcfaef7da0b',1,'glm::powerOfTwoNearest(vec< L, T, Q > const &value)']]], + ['prev_5ffloat_2966',['prev_float',['../a00924.html#gaf2a8466ad7470fcafaf91b24b43d1d4d',1,'glm::prev_float(genType x)'],['../a00924.html#ga71d68bb1fff11ac1c757d44cd23ddf50',1,'glm::prev_float(genType x, int ULPs)'],['../a00924.html#gaf2268a89effe42c4d6952085fa616cee',1,'glm::prev_float(vec< L, T, Q > const &x)'],['../a00924.html#gaa761d18f8e3a93752550c9ce9556749c',1,'glm::prev_float(vec< L, T, Q > const &x, int ULPs)'],['../a00924.html#ga471608a1ffbf4472dc5c84216ea937e8',1,'glm::prev_float(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['prevfloat_2967',['prevFloat',['../a00874.html#ga25320ace5b3e239405077912eb4e7bf9',1,'glm::prevFloat(genType x)'],['../a00874.html#ga760b98a221f1f511edbcdf0b06c49841',1,'glm::prevFloat(genType x, int ULPs)'],['../a00896.html#ga82d4ce132256c1a70d0e7100e6eae2e1',1,'glm::prevFloat(vec< L, T, Q > const &x)'],['../a00896.html#ga4ab818050036d40994346defe41a05b9',1,'glm::prevFloat(vec< L, T, Q > const &x, int ULPs)'],['../a00896.html#ga569e3ce6771e1e4f9e425ec6d859d9f9',1,'glm::prevFloat(vec< L, T, Q > const &x, vec< L, int, Q > const &ULPs)']]], + ['prevmultiple_2968',['prevMultiple',['../a00869.html#gada3bdd871ffe31f2d484aa668362f636',1,'glm::prevMultiple(genIUType v, genIUType Multiple)'],['../a00887.html#ga7b3915a7cd3d50ff4976ab7a75a6880a',1,'glm::prevMultiple(vec< L, T, Q > const &v, T Multiple)'],['../a00887.html#ga51e04379e8aebbf83e2e5ab094578ee9',1,'glm::prevMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['prevpoweroftwo_2969',['prevPowerOfTwo',['../a00869.html#gab21902a0e7e5a8451a7ad80333618727',1,'glm::prevPowerOfTwo(genIUType v)'],['../a00887.html#ga759db73f14d79f63612bd2398b577e7a',1,'glm::prevPowerOfTwo(vec< L, T, Q > const &v)']]], + ['proj_2970',['proj',['../a00971.html#ga58384b7170801dd513de46f87c7fb00e',1,'glm']]], + ['proj2d_2971',['proj2D',['../a00985.html#ga5b992a0cdc8298054edb68e228f0d93e',1,'glm']]], + ['proj3d_2972',['proj3D',['../a00985.html#gaa2b7f4f15b98f697caede11bef50509e',1,'glm']]], + ['project_2973',['project',['../a00835.html#gaf36e96033f456659e6705472a06b6e11',1,'glm']]], + ['projectno_2974',['projectNO',['../a00835.html#ga05249751f48d14cb282e4979802b8111',1,'glm']]], + ['projectzo_2975',['projectZO',['../a00835.html#ga77d157525063dec83a557186873ee080',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_e.html b/include/glm/doc/api/search/functions_e.html new file mode 100644 index 0000000..705e3de --- /dev/null +++ b/include/glm/doc/api/search/functions_e.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_e.js b/include/glm/doc/api/search/functions_e.js new file mode 100644 index 0000000..b85bdd3 --- /dev/null +++ b/include/glm/doc/api/search/functions_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['qr_5fdecompose_2976',['qr_decompose',['../a00955.html#ga2b88704e76f42a8894072e73101a56c3',1,'glm']]], + ['quadraticeasein_2977',['quadraticEaseIn',['../a00936.html#gaf42089d35855695132d217cd902304a0',1,'glm']]], + ['quadraticeaseinout_2978',['quadraticEaseInOut',['../a00936.html#ga03e8fc2d7945a4e63ee33b2159c14cea',1,'glm']]], + ['quadraticeaseout_2979',['quadraticEaseOut',['../a00936.html#ga283717bc2d937547ad34ec0472234ee3',1,'glm']]], + ['quarter_5fpi_2980',['quarter_pi',['../a00908.html#ga3c9df42bd73c519a995c43f0f99e77e0',1,'glm']]], + ['quarticeasein_2981',['quarticEaseIn',['../a00936.html#ga808b41f14514f47dad5dcc69eb924afd',1,'glm']]], + ['quarticeaseinout_2982',['quarticEaseInOut',['../a00936.html#ga6d000f852de12b197e154f234b20c505',1,'glm']]], + ['quarticeaseout_2983',['quarticEaseOut',['../a00936.html#ga4dfb33fa7664aa888eb647999d329b98',1,'glm']]], + ['quat_5fcast_2984',['quat_cast',['../a00917.html#ga1108a4ab88ca87bac321454eea7702f8',1,'glm::quat_cast(mat< 3, 3, T, Q > const &x)'],['../a00917.html#ga4524810f07f72e8c7bdc7764fa11cb58',1,'glm::quat_cast(mat< 4, 4, T, Q > const &x)']]], + ['quat_5fidentity_2985',['quat_identity',['../a00972.html#ga77d9e2c313b98a1002a1b12408bf5b45',1,'glm']]], + ['quatlookat_2986',['quatLookAt',['../a00917.html#gabe7fc5ec5feb41ab234d5d2b6254697f',1,'glm']]], + ['quatlookatlh_2987',['quatLookAtLH',['../a00917.html#ga2da350c73411be3bb19441b226b81a74',1,'glm']]], + ['quatlookatrh_2988',['quatLookAtRH',['../a00917.html#gaf6529ac8c04a57fcc35865b5c9437cc8',1,'glm']]], + ['quinticeasein_2989',['quinticEaseIn',['../a00936.html#ga097579d8e087dcf48037588140a21640',1,'glm']]], + ['quinticeaseinout_2990',['quinticEaseInOut',['../a00936.html#ga2a82d5c46df7e2d21cc0108eb7b83934',1,'glm']]], + ['quinticeaseout_2991',['quinticEaseOut',['../a00936.html#ga7dbd4d5c8da3f5353121f615e7b591d7',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/functions_f.html b/include/glm/doc/api/search/functions_f.html new file mode 100644 index 0000000..7de862c --- /dev/null +++ b/include/glm/doc/api/search/functions_f.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/functions_f.js b/include/glm/doc/api/search/functions_f.js new file mode 100644 index 0000000..8ce5e64 --- /dev/null +++ b/include/glm/doc/api/search/functions_f.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['radialgradient_2992',['radialGradient',['../a00945.html#gaaecb1e93de4cbe0758b882812d4da294',1,'glm']]], + ['radians_2993',['radians',['../a00995.html#ga6e1db4862c5e25afd553930e2fdd6a68',1,'glm']]], + ['reflect_2994',['reflect',['../a00897.html#ga5631dd1d5618de5450b1ea3cf3e94905',1,'glm']]], + ['refract_2995',['refract',['../a00897.html#ga01da3dff9e2ef6b9d4915c3047e22b74',1,'glm']]], + ['repeat_2996',['repeat',['../a00866.html#ga809650c6310ea7c42666e918c117fb6f',1,'glm::repeat(genType const &Texcoord)'],['../a00877.html#ga3025883ad3d8b69a8a1ec65368268be7',1,'glm::repeat(vec< L, T, Q > const &Texcoord)']]], + ['rgb2ycocg_2997',['rgb2YCoCg',['../a00931.html#ga0606353ec2a9b9eaa84f1b02ec391bc5',1,'glm']]], + ['rgb2ycocgr_2998',['rgb2YCoCgR',['../a00931.html#ga0389772e44ca0fd2ba4a79bdd8efe898',1,'glm']]], + ['rgbcolor_2999',['rgbColor',['../a00930.html#ga5f9193be46f45f0655c05a0cdca006db',1,'glm']]], + ['righthanded_3000',['rightHanded',['../a00946.html#ga99386a5ab5491871b947076e21699cc8',1,'glm']]], + ['roll_3001',['roll',['../a00917.html#ga0cc5ad970d0b00829b139fe0fe5a1e13',1,'glm']]], + ['root_5ffive_3002',['root_five',['../a00908.html#gae9ebbded75b53d4faeb1e4ef8b3347a2',1,'glm']]], + ['root_5fhalf_5fpi_3003',['root_half_pi',['../a00908.html#ga4e276cb823cc5e612d4f89ed99c75039',1,'glm']]], + ['root_5fln_5ffour_3004',['root_ln_four',['../a00908.html#ga4129412e96b33707a77c1a07652e23e2',1,'glm']]], + ['root_5fpi_3005',['root_pi',['../a00908.html#ga261380796b2cd496f68d2cf1d08b8eb9',1,'glm']]], + ['root_5fthree_3006',['root_three',['../a00908.html#ga4f286be4abe88be1eed7d2a9f6cb193e',1,'glm']]], + ['root_5ftwo_3007',['root_two',['../a00908.html#ga74e607d29020f100c0d0dc46ce2ca950',1,'glm']]], + ['root_5ftwo_5fpi_3008',['root_two_pi',['../a00908.html#ga2bcedc575039fe0cd765742f8bbb0bd3',1,'glm']]], + ['rotate_3009',['rotate',['../a00837.html#gaee9e865eaa9776370996da2940873fd4',1,'glm::rotate(mat< 4, 4, T, Q > const &m, T angle, vec< 3, T, Q > const &axis)'],['../a00864.html#gabfc57de6d4d2e11970f54119c5ccf0f5',1,'glm::rotate(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)'],['../a00960.html#gad5c84a4932a758f385a87098ce1b1660',1,'glm::rotate(mat< 3, 3, T, Q > const &m, T angle)'],['../a00972.html#ga07da6ef58646442efe93b0c273d73776',1,'glm::rotate(qua< T, Q > const &q, vec< 3, T, Q > const &v)'],['../a00972.html#gafcb78dfff45fbf19a7fcb2bd03fbf196',1,'glm::rotate(qua< T, Q > const &q, vec< 4, T, Q > const &v)'],['../a00976.html#gab64a67b52ff4f86c3ba16595a5a25af6',1,'glm::rotate(vec< 2, T, Q > const &v, T const &angle)'],['../a00976.html#ga1ba501ef83d1a009a17ac774cc560f21',1,'glm::rotate(vec< 3, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00976.html#ga1005f1267ed9c57faa3f24cf6873b961',1,'glm::rotate(vec< 4, T, Q > const &v, T const &angle, vec< 3, T, Q > const &normal)'],['../a00984.html#gaf599be4c0e9d99be1f9cddba79b6018b',1,'glm::rotate(T angle, vec< 3, T, Q > const &v)']]], + ['rotatenormalizedaxis_3010',['rotateNormalizedAxis',['../a00975.html#ga50efd7ebca0f7a603bb3cc11e34c708d',1,'glm::rotateNormalizedAxis(mat< 4, 4, T, Q > const &m, T const &angle, vec< 3, T, Q > const &axis)'],['../a00975.html#ga08f9c5411437d528019a25bfc01473d1',1,'glm::rotateNormalizedAxis(qua< T, Q > const &q, T const &angle, vec< 3, T, Q > const &axis)']]], + ['rotatex_3011',['rotateX',['../a00976.html#ga059fdbdba4cca35cdff172a9d0d0afc9',1,'glm::rotateX(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga4333b1ea8ebf1bd52bc3801a7617398a',1,'glm::rotateX(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotatey_3012',['rotateY',['../a00976.html#gaebdc8b054ace27d9f62e054531c6f44d',1,'glm::rotateY(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga3ce3db0867b7f8efd878ee34f95a623b',1,'glm::rotateY(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotatez_3013',['rotateZ',['../a00976.html#ga5a048838a03f6249acbacb4dbacf79c4',1,'glm::rotateZ(vec< 3, T, Q > const &v, T const &angle)'],['../a00976.html#ga923b75c6448161053768822d880702e6',1,'glm::rotateZ(vec< 4, T, Q > const &v, T const &angle)']]], + ['rotation_3014',['rotation',['../a00972.html#ga03e61282831cc3f52cc76f72f52ad2c5',1,'glm']]], + ['round_3015',['round',['../a00812.html#gafa03aca8c4713e1cc892aa92ca135a7e',1,'glm']]], + ['roundeven_3016',['roundEven',['../a00812.html#ga76b81785045a057989a84d99aeeb1578',1,'glm']]], + ['roundmultiple_3017',['roundMultiple',['../a00920.html#gab892defcc9c0b0618df7251253dc0fbb',1,'glm::roundMultiple(genType v, genType Multiple)'],['../a00920.html#ga2f1a68332d761804c054460a612e3a4b',1,'glm::roundMultiple(vec< L, T, Q > const &v, vec< L, T, Q > const &Multiple)']]], + ['roundpoweroftwo_3018',['roundPowerOfTwo',['../a00920.html#gae4e1bf5d1cd179f59261a7342bdcafca',1,'glm::roundPowerOfTwo(genIUType v)'],['../a00920.html#ga258802a7d55c03c918f28cf4d241c4d0',1,'glm::roundPowerOfTwo(vec< L, T, Q > const &v)']]], + ['row_3019',['row',['../a00911.html#ga259e5ebd0f31ec3f83440f8cae7f5dba',1,'glm::row(genType const &m, length_t index)'],['../a00911.html#gaadcc64829aadf4103477679e48c7594f',1,'glm::row(genType const &m, length_t index, typename genType::row_type const &x)']]], + ['rowmajor2_3020',['rowMajor2',['../a00957.html#gaf5b1aee9e3eb1acf9d6c3c8be1e73bb8',1,'glm::rowMajor2(vec< 2, T, Q > const &v1, vec< 2, T, Q > const &v2)'],['../a00957.html#gaf66c75ed69ca9e87462550708c2c6726',1,'glm::rowMajor2(mat< 2, 2, T, Q > const &m)']]], + ['rowmajor3_3021',['rowMajor3',['../a00957.html#ga2ae46497493339f745754e40f438442e',1,'glm::rowMajor3(vec< 3, T, Q > const &v1, vec< 3, T, Q > const &v2, vec< 3, T, Q > const &v3)'],['../a00957.html#gad8a3a50ab47bbe8d36cdb81d90dfcf77',1,'glm::rowMajor3(mat< 3, 3, T, Q > const &m)']]], + ['rowmajor4_3022',['rowMajor4',['../a00957.html#ga9636cd6bbe2c32a8d0c03ffb8b1ef284',1,'glm::rowMajor4(vec< 4, T, Q > const &v1, vec< 4, T, Q > const &v2, vec< 4, T, Q > const &v3, vec< 4, T, Q > const &v4)'],['../a00957.html#gac92ad1c2acdf18d3eb7be45a32f9566b',1,'glm::rowMajor4(mat< 4, 4, T, Q > const &m)']]], + ['rq_5fdecompose_3023',['rq_decompose',['../a00955.html#ga90ce5524aa7390a722817f6c9342e360',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/groups_0.html b/include/glm/doc/api/search/groups_0.html new file mode 100644 index 0000000..5d72bbb --- /dev/null +++ b/include/glm/doc/api/search/groups_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_0.js b/include/glm/doc/api/search/groups_0.js new file mode 100644 index 0000000..a1b0a6b --- /dev/null +++ b/include/glm/doc/api/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['angle_20and_20trigonometry_20functions_4404',['Angle and Trigonometry Functions',['../a00995.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_1.html b/include/glm/doc/api/search/groups_1.html new file mode 100644 index 0000000..2909493 --- /dev/null +++ b/include/glm/doc/api/search/groups_1.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_1.js b/include/glm/doc/api/search/groups_1.js new file mode 100644 index 0000000..914ef00 --- /dev/null +++ b/include/glm/doc/api/search/groups_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['core_20features_4405',['Core features',['../a00898.html',1,'']]], + ['common_20functions_4406',['Common functions',['../a00812.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_2.html b/include/glm/doc/api/search/groups_2.html new file mode 100644 index 0000000..ec36b21 --- /dev/null +++ b/include/glm/doc/api/search/groups_2.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_2.js b/include/glm/doc/api/search/groups_2.js new file mode 100644 index 0000000..2289eb5 --- /dev/null +++ b/include/glm/doc/api/search/groups_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['exponential_20functions_4407',['Exponential functions',['../a00813.html',1,'']]], + ['experimental_20extensions_4408',['Experimental extensions',['../a00905.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_3.html b/include/glm/doc/api/search/groups_3.html new file mode 100644 index 0000000..fc86ed9 --- /dev/null +++ b/include/glm/doc/api/search/groups_3.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_3.js b/include/glm/doc/api/search/groups_3.js new file mode 100644 index 0000000..a44ae95 --- /dev/null +++ b/include/glm/doc/api/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['floating_2dpoint_20pack_20and_20unpack_20functions_4409',['Floating-Point Pack and Unpack Functions',['../a00994.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_4.html b/include/glm/doc/api/search/groups_4.html new file mode 100644 index 0000000..0276a69 --- /dev/null +++ b/include/glm/doc/api/search/groups_4.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_4.js b/include/glm/doc/api/search/groups_4.js new file mode 100644 index 0000000..9b12136 --- /dev/null +++ b/include/glm/doc/api/search/groups_4.js @@ -0,0 +1,173 @@ +var searchData= +[ + ['geometric_20functions_4410',['Geometric functions',['../a00897.html',1,'']]], + ['glm_5fext_5fmatrix_5fclip_5fspace_4411',['GLM_EXT_matrix_clip_space',['../a00814.html',1,'']]], + ['glm_5fext_5fmatrix_5fcommon_4412',['GLM_EXT_matrix_common',['../a00815.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x2_4413',['GLM_EXT_matrix_int2x2',['../a00816.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x2_5fsized_4414',['GLM_EXT_matrix_int2x2_sized',['../a00817.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x3_4415',['GLM_EXT_matrix_int2x3',['../a00818.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x3_5fsized_4416',['GLM_EXT_matrix_int2x3_sized',['../a00819.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_4417',['GLM_EXT_matrix_int2x4',['../a00820.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_5fsized_4418',['GLM_EXT_matrix_int2x4_sized',['../a00821.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x2_4419',['GLM_EXT_matrix_int3x2',['../a00822.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x2_5fsized_4420',['GLM_EXT_matrix_int3x2_sized',['../a00823.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x3_4421',['GLM_EXT_matrix_int3x3',['../a00824.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x3_5fsized_4422',['GLM_EXT_matrix_int3x3_sized',['../a00825.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x4_4423',['GLM_EXT_matrix_int3x4',['../a00826.html',1,'']]], + ['glm_5fext_5fmatrix_5fint3x4_5fsized_4424',['GLM_EXT_matrix_int3x4_sized',['../a00827.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x2_4425',['GLM_EXT_matrix_int4x2',['../a00828.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x2_5fsized_4426',['GLM_EXT_matrix_int4x2_sized',['../a00829.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x3_4427',['GLM_EXT_matrix_int4x3',['../a00830.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x3_5fsized_4428',['GLM_EXT_matrix_int4x3_sized',['../a00831.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x4_4429',['GLM_EXT_matrix_int4x4',['../a00832.html',1,'']]], + ['glm_5fext_5fmatrix_5fint4x4_5fsized_4430',['GLM_EXT_matrix_int4x4_sized',['../a00833.html',1,'']]], + ['glm_5fext_5fmatrix_5finteger_4431',['GLM_EXT_matrix_integer',['../a00834.html',1,'']]], + ['glm_5fext_5fmatrix_5fprojection_4432',['GLM_EXT_matrix_projection',['../a00835.html',1,'']]], + ['glm_5fext_5fmatrix_5frelational_4433',['GLM_EXT_matrix_relational',['../a00836.html',1,'']]], + ['glm_5fext_5fmatrix_5ftransform_4434',['GLM_EXT_matrix_transform',['../a00837.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x2_4435',['GLM_EXT_matrix_uint2x2',['../a00838.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x2_5fsized_4436',['GLM_EXT_matrix_uint2x2_sized',['../a00839.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x3_4437',['GLM_EXT_matrix_uint2x3',['../a00840.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x3_5fsized_4438',['GLM_EXT_matrix_uint2x3_sized',['../a00841.html',1,'']]], + ['glm_5fext_5fmatrix_5fint2x4_4439',['GLM_EXT_matrix_int2x4',['../a00842.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint2x4_5fsized_4440',['GLM_EXT_matrix_uint2x4_sized',['../a00843.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x2_4441',['GLM_EXT_matrix_uint3x2',['../a00844.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x2_5fsized_4442',['GLM_EXT_matrix_uint3x2_sized',['../a00845.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x3_4443',['GLM_EXT_matrix_uint3x3',['../a00846.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x3_5fsized_4444',['GLM_EXT_matrix_uint3x3_sized',['../a00847.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x4_4445',['GLM_EXT_matrix_uint3x4',['../a00848.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint3x4_5fsized_4446',['GLM_EXT_matrix_uint3x4_sized',['../a00849.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x2_4447',['GLM_EXT_matrix_uint4x2',['../a00850.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x2_5fsized_4448',['GLM_EXT_matrix_uint4x2_sized',['../a00851.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x3_4449',['GLM_EXT_matrix_uint4x3',['../a00852.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x3_5fsized_4450',['GLM_EXT_matrix_uint4x3_sized',['../a00853.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x4_4451',['GLM_EXT_matrix_uint4x4',['../a00854.html',1,'']]], + ['glm_5fext_5fmatrix_5fuint4x4_5fsized_4452',['GLM_EXT_matrix_uint4x4_sized',['../a00855.html',1,'']]], + ['glm_5fext_5fquaternion_5fcommon_4453',['GLM_EXT_quaternion_common',['../a00856.html',1,'']]], + ['glm_5fext_5fquaternion_5fdouble_4454',['GLM_EXT_quaternion_double',['../a00857.html',1,'']]], + ['glm_5fext_5fquaternion_5fdouble_5fprecision_4455',['GLM_EXT_quaternion_double_precision',['../a00858.html',1,'']]], + ['glm_5fext_5fquaternion_5fexponential_4456',['GLM_EXT_quaternion_exponential',['../a00859.html',1,'']]], + ['glm_5fext_5fquaternion_5ffloat_4457',['GLM_EXT_quaternion_float',['../a00860.html',1,'']]], + ['glm_5fext_5fquaternion_5ffloat_5fprecision_4458',['GLM_EXT_quaternion_float_precision',['../a00861.html',1,'']]], + ['glm_5fext_5fquaternion_5fgeometric_4459',['GLM_EXT_quaternion_geometric',['../a00862.html',1,'']]], + ['glm_5fext_5fquaternion_5frelational_4460',['GLM_EXT_quaternion_relational',['../a00863.html',1,'']]], + ['glm_5fext_5fquaternion_5ftransform_4461',['GLM_EXT_quaternion_transform',['../a00864.html',1,'']]], + ['glm_5fext_5fquaternion_5ftrigonometric_4462',['GLM_EXT_quaternion_trigonometric',['../a00865.html',1,'']]], + ['glm_5fext_5fscalar_5fcommon_4463',['GLM_EXT_scalar_common',['../a00866.html',1,'']]], + ['glm_5fext_5fscalar_5fconstants_4464',['GLM_EXT_scalar_constants',['../a00867.html',1,'']]], + ['glm_5fext_5fscalar_5fint_5fsized_4465',['GLM_EXT_scalar_int_sized',['../a00868.html',1,'']]], + ['glm_5fext_5fscalar_5finteger_4466',['GLM_EXT_scalar_integer',['../a00869.html',1,'']]], + ['glm_5fext_5fscalar_5fpacking_4467',['GLM_EXT_scalar_packing',['../a00870.html',1,'']]], + ['glm_5fext_5fscalar_5freciprocal_4468',['GLM_EXT_scalar_reciprocal',['../a00871.html',1,'']]], + ['glm_5fext_5fscalar_5frelational_4469',['GLM_EXT_scalar_relational',['../a00872.html',1,'']]], + ['glm_5fext_5fscalar_5fuint_5fsized_4470',['GLM_EXT_scalar_uint_sized',['../a00873.html',1,'']]], + ['glm_5fext_5fscalar_5fulp_4471',['GLM_EXT_scalar_ulp',['../a00874.html',1,'']]], + ['glm_5fext_5fvector_5fbool1_4472',['GLM_EXT_vector_bool1',['../a00875.html',1,'']]], + ['glm_5fext_5fvector_5fbool1_5fprecision_4473',['GLM_EXT_vector_bool1_precision',['../a00876.html',1,'']]], + ['glm_5fext_5fvector_5fcommon_4474',['GLM_EXT_vector_common',['../a00877.html',1,'']]], + ['glm_5fext_5fvector_5fdouble1_4475',['GLM_EXT_vector_double1',['../a00878.html',1,'']]], + ['glm_5fext_5fvector_5fdouble1_5fprecision_4476',['GLM_EXT_vector_double1_precision',['../a00879.html',1,'']]], + ['glm_5fext_5fvector_5ffloat1_4477',['GLM_EXT_vector_float1',['../a00880.html',1,'']]], + ['glm_5fext_5fvector_5ffloat1_5fprecision_4478',['GLM_EXT_vector_float1_precision',['../a00881.html',1,'']]], + ['glm_5fext_5fvector_5fint1_4479',['GLM_EXT_vector_int1',['../a00882.html',1,'']]], + ['glm_5fext_5fvector_5fint1_5fsized_4480',['GLM_EXT_vector_int1_sized',['../a00883.html',1,'']]], + ['glm_5fext_5fvector_5fint2_5fsized_4481',['GLM_EXT_vector_int2_sized',['../a00884.html',1,'']]], + ['glm_5fext_5fvector_5fint3_5fsized_4482',['GLM_EXT_vector_int3_sized',['../a00885.html',1,'']]], + ['glm_5fext_5fvector_5fint4_5fsized_4483',['GLM_EXT_vector_int4_sized',['../a00886.html',1,'']]], + ['glm_5fext_5fvector_5finteger_4484',['GLM_EXT_vector_integer',['../a00887.html',1,'']]], + ['glm_5fext_5fvector_5fpacking_4485',['GLM_EXT_vector_packing',['../a00888.html',1,'']]], + ['glm_5fext_5fvector_5freciprocal_4486',['GLM_EXT_vector_reciprocal',['../a00889.html',1,'']]], + ['glm_5fext_5fvector_5frelational_4487',['GLM_EXT_vector_relational',['../a00890.html',1,'']]], + ['glm_5fext_5fvector_5fuint1_4488',['GLM_EXT_vector_uint1',['../a00891.html',1,'']]], + ['glm_5fext_5fvector_5fuint1_5fsized_4489',['GLM_EXT_vector_uint1_sized',['../a00892.html',1,'']]], + ['glm_5fext_5fvector_5fuint2_5fsized_4490',['GLM_EXT_vector_uint2_sized',['../a00893.html',1,'']]], + ['glm_5fext_5fvector_5fuint3_5fsized_4491',['GLM_EXT_vector_uint3_sized',['../a00894.html',1,'']]], + ['glm_5fext_5fvector_5fuint4_5fsized_4492',['GLM_EXT_vector_uint4_sized',['../a00895.html',1,'']]], + ['glm_5fext_5fvector_5fulp_4493',['GLM_EXT_vector_ulp',['../a00896.html',1,'']]], + ['glm_5fgtc_5fbitfield_4494',['GLM_GTC_bitfield',['../a00906.html',1,'']]], + ['glm_5fgtc_5fcolor_5fspace_4495',['GLM_GTC_color_space',['../a00907.html',1,'']]], + ['glm_5fgtc_5fconstants_4496',['GLM_GTC_constants',['../a00908.html',1,'']]], + ['glm_5fgtc_5fepsilon_4497',['GLM_GTC_epsilon',['../a00909.html',1,'']]], + ['glm_5fgtc_5finteger_4498',['GLM_GTC_integer',['../a00910.html',1,'']]], + ['glm_5fgtc_5fmatrix_5faccess_4499',['GLM_GTC_matrix_access',['../a00911.html',1,'']]], + ['glm_5fgtc_5fmatrix_5finteger_4500',['GLM_GTC_matrix_integer',['../a00912.html',1,'']]], + ['glm_5fgtc_5fmatrix_5finverse_4501',['GLM_GTC_matrix_inverse',['../a00913.html',1,'']]], + ['glm_5fgtc_5fmatrix_5ftransform_4502',['GLM_GTC_matrix_transform',['../a00914.html',1,'']]], + ['glm_5fgtc_5fnoise_4503',['GLM_GTC_noise',['../a00915.html',1,'']]], + ['glm_5fgtc_5fpacking_4504',['GLM_GTC_packing',['../a00916.html',1,'']]], + ['glm_5fgtc_5fquaternion_4505',['GLM_GTC_quaternion',['../a00917.html',1,'']]], + ['glm_5fgtc_5frandom_4506',['GLM_GTC_random',['../a00918.html',1,'']]], + ['glm_5fgtc_5freciprocal_4507',['GLM_GTC_reciprocal',['../a00919.html',1,'']]], + ['glm_5fgtc_5fround_4508',['GLM_GTC_round',['../a00920.html',1,'']]], + ['glm_5fgtc_5ftype_5faligned_4509',['GLM_GTC_type_aligned',['../a00921.html',1,'']]], + ['glm_5fgtc_5ftype_5fprecision_4510',['GLM_GTC_type_precision',['../a00922.html',1,'']]], + ['glm_5fgtc_5ftype_5fptr_4511',['GLM_GTC_type_ptr',['../a00923.html',1,'']]], + ['glm_5fgtc_5fulp_4512',['GLM_GTC_ulp',['../a00924.html',1,'']]], + ['glm_5fgtc_5fvec1_4513',['GLM_GTC_vec1',['../a00925.html',1,'']]], + ['glm_5fgtx_5fassociated_5fmin_5fmax_4514',['GLM_GTX_associated_min_max',['../a00926.html',1,'']]], + ['glm_5fgtx_5fbit_4515',['GLM_GTX_bit',['../a00927.html',1,'']]], + ['glm_5fgtx_5fclosest_5fpoint_4516',['GLM_GTX_closest_point',['../a00928.html',1,'']]], + ['glm_5fgtx_5fcolor_5fencoding_4517',['GLM_GTX_color_encoding',['../a00929.html',1,'']]], + ['glm_5fgtx_5fcolor_5fspace_4518',['GLM_GTX_color_space',['../a00930.html',1,'']]], + ['glm_5fgtx_5fcolor_5fspace_5fycocg_4519',['GLM_GTX_color_space_YCoCg',['../a00931.html',1,'']]], + ['glm_5fgtx_5fcommon_4520',['GLM_GTX_common',['../a00932.html',1,'']]], + ['glm_5fgtx_5fcompatibility_4521',['GLM_GTX_compatibility',['../a00933.html',1,'']]], + ['glm_5fgtx_5fcomponent_5fwise_4522',['GLM_GTX_component_wise',['../a00934.html',1,'']]], + ['glm_5fgtx_5fdual_5fquaternion_4523',['GLM_GTX_dual_quaternion',['../a00935.html',1,'']]], + ['glm_5fgtx_5feasing_4524',['GLM_GTX_easing',['../a00936.html',1,'']]], + ['glm_5fgtx_5feuler_5fangles_4525',['GLM_GTX_euler_angles',['../a00937.html',1,'']]], + ['glm_5fgtx_5fextend_4526',['GLM_GTX_extend',['../a00938.html',1,'']]], + ['glm_5fgtx_5fextended_5fmin_5fmax_4527',['GLM_GTX_extended_min_max',['../a00939.html',1,'']]], + ['glm_5fgtx_5fexterior_5fproduct_4528',['GLM_GTX_exterior_product',['../a00940.html',1,'']]], + ['glm_5fgtx_5ffast_5fexponential_4529',['GLM_GTX_fast_exponential',['../a00941.html',1,'']]], + ['glm_5fgtx_5ffast_5fsquare_5froot_4530',['GLM_GTX_fast_square_root',['../a00942.html',1,'']]], + ['glm_5fgtx_5ffast_5ftrigonometry_4531',['GLM_GTX_fast_trigonometry',['../a00943.html',1,'']]], + ['glm_5fgtx_5ffunctions_4532',['GLM_GTX_functions',['../a00944.html',1,'']]], + ['glm_5fgtx_5fgradient_5fpaint_4533',['GLM_GTX_gradient_paint',['../a00945.html',1,'']]], + ['glm_5fgtx_5fhanded_5fcoordinate_5fspace_4534',['GLM_GTX_handed_coordinate_space',['../a00946.html',1,'']]], + ['glm_5fgtx_5fhash_4535',['GLM_GTX_hash',['../a00947.html',1,'']]], + ['glm_5fgtx_5finteger_4536',['GLM_GTX_integer',['../a00948.html',1,'']]], + ['glm_5fgtx_5fintersect_4537',['GLM_GTX_intersect',['../a00949.html',1,'']]], + ['glm_5fgtx_5fio_4538',['GLM_GTX_io',['../a00950.html',1,'']]], + ['glm_5fgtx_5fiteration_4539',['GLM_GTX_iteration',['../a00951.html',1,'']]], + ['glm_5fgtx_5flog_5fbase_4540',['GLM_GTX_log_base',['../a00952.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fcross_5fproduct_4541',['GLM_GTX_matrix_cross_product',['../a00953.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fdecompose_4542',['GLM_GTX_matrix_decompose',['../a00954.html',1,'']]], + ['glm_5fgtx_5fmatrix_5ffactorisation_4543',['GLM_GTX_matrix_factorisation',['../a00955.html',1,'']]], + ['glm_5fgtx_5fmatrix_5finterpolation_4544',['GLM_GTX_matrix_interpolation',['../a00956.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fmajor_5fstorage_4545',['GLM_GTX_matrix_major_storage',['../a00957.html',1,'']]], + ['glm_5fgtx_5fmatrix_5foperation_4546',['GLM_GTX_matrix_operation',['../a00958.html',1,'']]], + ['glm_5fgtx_5fmatrix_5fquery_4547',['GLM_GTX_matrix_query',['../a00959.html',1,'']]], + ['glm_5fgtx_5fmatrix_5ftransform_5f2d_4548',['GLM_GTX_matrix_transform_2d',['../a00960.html',1,'']]], + ['glm_5fgtx_5fmixed_5fproducte_4549',['GLM_GTX_mixed_producte',['../a00961.html',1,'']]], + ['glm_5fgtx_5fnorm_4550',['GLM_GTX_norm',['../a00962.html',1,'']]], + ['glm_5fgtx_5fnormal_4551',['GLM_GTX_normal',['../a00963.html',1,'']]], + ['glm_5fgtx_5fnormalize_5fdot_4552',['GLM_GTX_normalize_dot',['../a00964.html',1,'']]], + ['glm_5fgtx_5fnumber_5fprecision_4553',['GLM_GTX_number_precision',['../a00965.html',1,'']]], + ['glm_5fgtx_5foptimum_5fpow_4554',['GLM_GTX_optimum_pow',['../a00966.html',1,'']]], + ['glm_5fgtx_5forthonormalize_4555',['GLM_GTX_orthonormalize',['../a00967.html',1,'']]], + ['glm_5fgtx_5fpca_4556',['GLM_GTX_pca',['../a00968.html',1,'']]], + ['glm_5fgtx_5fperpendicular_4557',['GLM_GTX_perpendicular',['../a00969.html',1,'']]], + ['glm_5fgtx_5fpolar_5fcoordinates_4558',['GLM_GTX_polar_coordinates',['../a00970.html',1,'']]], + ['glm_5fgtx_5fprojection_4559',['GLM_GTX_projection',['../a00971.html',1,'']]], + ['glm_5fgtx_5fquaternion_4560',['GLM_GTX_quaternion',['../a00972.html',1,'']]], + ['glm_5fgtx_5frange_4561',['GLM_GTX_range',['../a00973.html',1,'']]], + ['glm_5fgtx_5fraw_5fdata_4562',['GLM_GTX_raw_data',['../a00974.html',1,'']]], + ['glm_5fgtx_5frotate_5fnormalized_5faxis_4563',['GLM_GTX_rotate_normalized_axis',['../a00975.html',1,'']]], + ['glm_5fgtx_5frotate_5fvector_4564',['GLM_GTX_rotate_vector',['../a00976.html',1,'']]], + ['glm_5fgtx_5fscalar_5fmultiplication_4565',['GLM_GTX_scalar_multiplication',['../a00977.html',1,'']]], + ['glm_5fgtx_5fscalar_5frelational_4566',['GLM_GTX_scalar_relational',['../a00978.html',1,'']]], + ['glm_5fgtx_5fspline_4567',['GLM_GTX_spline',['../a00979.html',1,'']]], + ['glm_5fgtx_5fstd_5fbased_5ftype_4568',['GLM_GTX_std_based_type',['../a00980.html',1,'']]], + ['glm_5fgtx_5fstring_5fcast_4569',['GLM_GTX_string_cast',['../a00981.html',1,'']]], + ['glm_5fgtx_5fstructured_5fbindings_4570',['GLM_GTX_structured_bindings',['../a00982.html',1,'']]], + ['glm_5fgtx_5ftexture_4571',['GLM_GTX_texture',['../a00983.html',1,'']]], + ['glm_5fgtx_5ftransform_4572',['GLM_GTX_transform',['../a00984.html',1,'']]], + ['glm_5fgtx_5ftransform2_4573',['GLM_GTX_transform2',['../a00985.html',1,'']]], + ['glm_5fgtx_5ftype_5faligned_4574',['GLM_GTX_type_aligned',['../a00986.html',1,'']]], + ['glm_5fgtx_5ftype_5ftrait_4575',['GLM_GTX_type_trait',['../a00987.html',1,'']]], + ['glm_5fgtx_5fvec_5fswizzle_4576',['GLM_GTX_vec_swizzle',['../a00988.html',1,'']]], + ['glm_5fgtx_5fvector_5fangle_4577',['GLM_GTX_vector_angle',['../a00989.html',1,'']]], + ['glm_5fgtx_5fvector_5fquery_4578',['GLM_GTX_vector_query',['../a00990.html',1,'']]], + ['glm_5fgtx_5fwrap_4579',['GLM_GTX_wrap',['../a00991.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_5.html b/include/glm/doc/api/search/groups_5.html new file mode 100644 index 0000000..1e57d85 --- /dev/null +++ b/include/glm/doc/api/search/groups_5.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_5.js b/include/glm/doc/api/search/groups_5.js new file mode 100644 index 0000000..39ae060 --- /dev/null +++ b/include/glm/doc/api/search/groups_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['integer_20functions_4580',['Integer functions',['../a00992.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_6.html b/include/glm/doc/api/search/groups_6.html new file mode 100644 index 0000000..329b5bc --- /dev/null +++ b/include/glm/doc/api/search/groups_6.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_6.js b/include/glm/doc/api/search/groups_6.js new file mode 100644 index 0000000..b4b7d90 --- /dev/null +++ b/include/glm/doc/api/search/groups_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['matrix_20functions_4581',['Matrix functions',['../a00993.html',1,'']]], + ['matrix_20types_4582',['Matrix types',['../a00901.html',1,'']]], + ['matrix_20types_20with_20precision_20qualifiers_4583',['Matrix types with precision qualifiers',['../a00902.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_7.html b/include/glm/doc/api/search/groups_7.html new file mode 100644 index 0000000..c7de058 --- /dev/null +++ b/include/glm/doc/api/search/groups_7.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_7.js b/include/glm/doc/api/search/groups_7.js new file mode 100644 index 0000000..d584064 --- /dev/null +++ b/include/glm/doc/api/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['recommended_20extensions_4584',['Recommended extensions',['../a00904.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_8.html b/include/glm/doc/api/search/groups_8.html new file mode 100644 index 0000000..69cd6c8 --- /dev/null +++ b/include/glm/doc/api/search/groups_8.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_8.js b/include/glm/doc/api/search/groups_8.js new file mode 100644 index 0000000..6774088 --- /dev/null +++ b/include/glm/doc/api/search/groups_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['stable_20extensions_4585',['Stable extensions',['../a00903.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/groups_9.html b/include/glm/doc/api/search/groups_9.html new file mode 100644 index 0000000..43f6974 --- /dev/null +++ b/include/glm/doc/api/search/groups_9.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/groups_9.js b/include/glm/doc/api/search/groups_9.js new file mode 100644 index 0000000..cb67299 --- /dev/null +++ b/include/glm/doc/api/search/groups_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vector_20relational_20functions_4586',['Vector Relational Functions',['../a00996.html',1,'']]], + ['vector_20types_4587',['Vector types',['../a00899.html',1,'']]], + ['vector_20types_20with_20precision_20qualifiers_4588',['Vector types with precision qualifiers',['../a00900.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/mag_sel.png b/include/glm/doc/api/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7 GIT binary patch literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/search/nomatches.html b/include/glm/doc/api/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/include/glm/doc/api/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/include/glm/doc/api/search/pages_0.html b/include/glm/doc/api/search/pages_0.html new file mode 100644 index 0000000..ca7755f --- /dev/null +++ b/include/glm/doc/api/search/pages_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/pages_0.js b/include/glm/doc/api/search/pages_0.js new file mode 100644 index 0000000..94fe400 --- /dev/null +++ b/include/glm/doc/api/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['opengl_20mathematics_20_28glm_29_4589',['OpenGL Mathematics (GLM)',['../index.html',1,'']]] +]; diff --git a/include/glm/doc/api/search/search.css b/include/glm/doc/api/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/include/glm/doc/api/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/include/glm/doc/api/search/search.js b/include/glm/doc/api/search/search.js new file mode 100644 index 0000000..ff2b8c8 --- /dev/null +++ b/include/glm/doc/api/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + 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. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/search/search_r.png b/include/glm/doc/api/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/search/searchdata.js b/include/glm/doc/api/search/searchdata.js new file mode 100644 index 0000000..eb606a0 --- /dev/null +++ b/include/glm/doc/api/search/searchdata.js @@ -0,0 +1,30 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghilmnopqrstuvwyz", + 1: "abcdefghilmnopqrstuvw", + 2: "abcdefghilmnopqrstuvwyz", + 3: "abdfhilmpqsuvw", + 4: "acefgimrsv", + 5: "o" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "files", + 2: "functions", + 3: "typedefs", + 4: "groups", + 5: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Files", + 2: "Functions", + 3: "Typedefs", + 4: "Modules", + 5: "Pages" +}; + diff --git a/include/glm/doc/api/search/typedefs_0.html b/include/glm/doc/api/search/typedefs_0.html new file mode 100644 index 0000000..43353ee --- /dev/null +++ b/include/glm/doc/api/search/typedefs_0.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_0.js b/include/glm/doc/api/search/typedefs_0.js new file mode 100644 index 0000000..97df19b --- /dev/null +++ b/include/glm/doc/api/search/typedefs_0.js @@ -0,0 +1,187 @@ +var searchData= +[ + ['aligned_5fbvec1_3127',['aligned_bvec1',['../a00921.html#ga780a35f764020f553a9601a3fcdcd059',1,'glm']]], + ['aligned_5fbvec2_3128',['aligned_bvec2',['../a00921.html#gae766b317c5afec852bfb3d74a3c54bc8',1,'glm']]], + ['aligned_5fbvec3_3129',['aligned_bvec3',['../a00921.html#gae1964ba70d15915e5b710926decbb3cb',1,'glm']]], + ['aligned_5fbvec4_3130',['aligned_bvec4',['../a00921.html#gae164a1f7879f828bc35e50b79d786b05',1,'glm']]], + ['aligned_5fdmat2_3131',['aligned_dmat2',['../a00921.html#ga6783859382677d35fcd5dac7dcbefdbd',1,'glm']]], + ['aligned_5fdmat2x2_3132',['aligned_dmat2x2',['../a00921.html#ga449a3ec2dde6b6bb4bb94c49a6aad388',1,'glm']]], + ['aligned_5fdmat2x3_3133',['aligned_dmat2x3',['../a00921.html#ga53d519a7b1bfb69076b3ec206a6b3bd1',1,'glm']]], + ['aligned_5fdmat2x4_3134',['aligned_dmat2x4',['../a00921.html#ga5ccb2baeb0ab57b818c24e0d486c59d0',1,'glm']]], + ['aligned_5fdmat3_3135',['aligned_dmat3',['../a00921.html#ga19aa695ffdb45ce29f7ea0b5029627de',1,'glm']]], + ['aligned_5fdmat3x2_3136',['aligned_dmat3x2',['../a00921.html#ga5f5123d834bd1170edf8c386834e112c',1,'glm']]], + ['aligned_5fdmat3x3_3137',['aligned_dmat3x3',['../a00921.html#ga635bf3732281a2c2ca54d8f9d33d178f',1,'glm']]], + ['aligned_5fdmat3x4_3138',['aligned_dmat3x4',['../a00921.html#gaf488c6ad88c185054595d4d5c7ba5b9d',1,'glm']]], + ['aligned_5fdmat4_3139',['aligned_dmat4',['../a00921.html#ga001bb387ae8192fa94dbd8b23b600439',1,'glm']]], + ['aligned_5fdmat4x2_3140',['aligned_dmat4x2',['../a00921.html#gaa409cfb737bd59b68dc683e9b03930cc',1,'glm']]], + ['aligned_5fdmat4x3_3141',['aligned_dmat4x3',['../a00921.html#ga621e89ca1dbdcb7b5a3e7de237c44121',1,'glm']]], + ['aligned_5fdmat4x4_3142',['aligned_dmat4x4',['../a00921.html#gac9bda778d0b7ad82f656dab99b71857a',1,'glm']]], + ['aligned_5fdquat_3143',['aligned_dquat',['../a00921.html#gab13e5f42b0c1d36f883ed30b86a55d29',1,'glm']]], + ['aligned_5fdvec1_3144',['aligned_dvec1',['../a00921.html#ga4974f46ae5a19415d91316960a53617a',1,'glm']]], + ['aligned_5fdvec2_3145',['aligned_dvec2',['../a00921.html#ga18d859f87122b2b3b2992ffe86dbebc0',1,'glm']]], + ['aligned_5fdvec3_3146',['aligned_dvec3',['../a00921.html#gaa37869eea77d28419b2fb0ff70b69bf0',1,'glm']]], + ['aligned_5fdvec4_3147',['aligned_dvec4',['../a00921.html#ga8a9f0a4795ccc442fa9901845026f9f5',1,'glm']]], + ['aligned_5fhighp_5fbvec1_3148',['aligned_highp_bvec1',['../a00921.html#ga862843a45b01c35ffe4d44c47ea774ad',1,'glm']]], + ['aligned_5fhighp_5fbvec2_3149',['aligned_highp_bvec2',['../a00921.html#ga0731b593c5e33559954c80f8687e76c6',1,'glm']]], + ['aligned_5fhighp_5fbvec3_3150',['aligned_highp_bvec3',['../a00921.html#ga0913bdf048d0cb74af1d2512aec675bc',1,'glm']]], + ['aligned_5fhighp_5fbvec4_3151',['aligned_highp_bvec4',['../a00921.html#ga9df1d0c425852cf63a57e533b7a83f4f',1,'glm']]], + ['aligned_5fhighp_5fdmat2_3152',['aligned_highp_dmat2',['../a00921.html#ga3a7eeae43cb7673e14cc89bf02f7dd45',1,'glm']]], + ['aligned_5fhighp_5fdmat2x2_3153',['aligned_highp_dmat2x2',['../a00921.html#gaef26dfe3855a91644665b55c9096a8c8',1,'glm']]], + ['aligned_5fhighp_5fdmat2x3_3154',['aligned_highp_dmat2x3',['../a00921.html#gaa7c9d4ab7ab651cdf8001fe7843e238b',1,'glm']]], + ['aligned_5fhighp_5fdmat2x4_3155',['aligned_highp_dmat2x4',['../a00921.html#gaa0d2b8a75f1908dcf32c27f8524bdced',1,'glm']]], + ['aligned_5fhighp_5fdmat3_3156',['aligned_highp_dmat3',['../a00921.html#gad8f6abb2c9994850b5d5c04a5f979ed8',1,'glm']]], + ['aligned_5fhighp_5fdmat3x2_3157',['aligned_highp_dmat3x2',['../a00921.html#gab069b2fc2ec785fc4e193cf26c022679',1,'glm']]], + ['aligned_5fhighp_5fdmat3x3_3158',['aligned_highp_dmat3x3',['../a00921.html#ga66073b1ddef34b681741f572338ddb8e',1,'glm']]], + ['aligned_5fhighp_5fdmat3x4_3159',['aligned_highp_dmat3x4',['../a00921.html#ga683c8ca66de323ea533a760abedd0efc',1,'glm']]], + ['aligned_5fhighp_5fdmat4_3160',['aligned_highp_dmat4',['../a00921.html#gacaa7407ea00ffdd322ce86a57adb547e',1,'glm']]], + ['aligned_5fhighp_5fdmat4x2_3161',['aligned_highp_dmat4x2',['../a00921.html#ga93a23ca3d42818d56e0702213c66354b',1,'glm']]], + ['aligned_5fhighp_5fdmat4x3_3162',['aligned_highp_dmat4x3',['../a00921.html#gacab7374b560745cb1d0a306a90353f58',1,'glm']]], + ['aligned_5fhighp_5fdmat4x4_3163',['aligned_highp_dmat4x4',['../a00921.html#ga1fbfba14368b742972d3b58a0a303682',1,'glm']]], + ['aligned_5fhighp_5fdquat_3164',['aligned_highp_dquat',['../a00921.html#gaf4a25da5becfd7e5df53ec4befa13670',1,'glm']]], + ['aligned_5fhighp_5fdvec1_3165',['aligned_highp_dvec1',['../a00921.html#gaf0448b0f7ceb8273f7eda3a92205eefc',1,'glm']]], + ['aligned_5fhighp_5fdvec2_3166',['aligned_highp_dvec2',['../a00921.html#gab173a333e6b7ce153ceba66ac4a321cf',1,'glm']]], + ['aligned_5fhighp_5fdvec3_3167',['aligned_highp_dvec3',['../a00921.html#gae94ef61edfa047d05bc69b6065fc42ba',1,'glm']]], + ['aligned_5fhighp_5fdvec4_3168',['aligned_highp_dvec4',['../a00921.html#ga8fad35c5677f228e261fe541f15363a4',1,'glm']]], + ['aligned_5fhighp_5fivec1_3169',['aligned_highp_ivec1',['../a00921.html#gad63b8c5b4dc0500d54d7414ef555178f',1,'glm']]], + ['aligned_5fhighp_5fivec2_3170',['aligned_highp_ivec2',['../a00921.html#ga41563650f36cb7f479e080de21e08418',1,'glm']]], + ['aligned_5fhighp_5fivec3_3171',['aligned_highp_ivec3',['../a00921.html#ga6eca5170bb35eac90b4972590fd31a06',1,'glm']]], + ['aligned_5fhighp_5fivec4_3172',['aligned_highp_ivec4',['../a00921.html#ga31bfa801e1579fdba752ec3f7a45ec91',1,'glm']]], + ['aligned_5fhighp_5fmat2_3173',['aligned_highp_mat2',['../a00921.html#gaf9db5e8a929c317da5aa12cc53741b63',1,'glm']]], + ['aligned_5fhighp_5fmat2x2_3174',['aligned_highp_mat2x2',['../a00921.html#gab559d943abf92bc588bcd3f4c0e4664b',1,'glm']]], + ['aligned_5fhighp_5fmat2x3_3175',['aligned_highp_mat2x3',['../a00921.html#ga50c9af5aa3a848956d625fc64dc8488e',1,'glm']]], + ['aligned_5fhighp_5fmat2x4_3176',['aligned_highp_mat2x4',['../a00921.html#ga0edcfdd179f8a158342eead48a4d0c2a',1,'glm']]], + ['aligned_5fhighp_5fmat3_3177',['aligned_highp_mat3',['../a00921.html#gabab3afcc04459c7b123604ae5dc663f6',1,'glm']]], + ['aligned_5fhighp_5fmat3x2_3178',['aligned_highp_mat3x2',['../a00921.html#ga9fc2167b47c9be9295f2d8eea7f0ca75',1,'glm']]], + ['aligned_5fhighp_5fmat3x3_3179',['aligned_highp_mat3x3',['../a00921.html#ga2f7b8c99ba6f2d07c73a195a8143c259',1,'glm']]], + ['aligned_5fhighp_5fmat3x4_3180',['aligned_highp_mat3x4',['../a00921.html#ga52e00afd0eb181e6738f40cf41787049',1,'glm']]], + ['aligned_5fhighp_5fmat4_3181',['aligned_highp_mat4',['../a00921.html#ga058ae939bfdbcbb80521dd4a3b01afba',1,'glm']]], + ['aligned_5fhighp_5fmat4x2_3182',['aligned_highp_mat4x2',['../a00921.html#ga84e1f5e0718952a079b748825c03f956',1,'glm']]], + ['aligned_5fhighp_5fmat4x3_3183',['aligned_highp_mat4x3',['../a00921.html#gafff1684c4ff19b4a818138ccacc1e78d',1,'glm']]], + ['aligned_5fhighp_5fmat4x4_3184',['aligned_highp_mat4x4',['../a00921.html#ga40d49648083a0498a12a4bb41ae6ece8',1,'glm']]], + ['aligned_5fhighp_5fquat_3185',['aligned_highp_quat',['../a00921.html#ga1f4d1cae53972e1ccb16b6710f3ac6a3',1,'glm']]], + ['aligned_5fhighp_5fuvec1_3186',['aligned_highp_uvec1',['../a00921.html#ga5b80e28396c6ef7d32c6fd18df498451',1,'glm']]], + ['aligned_5fhighp_5fuvec2_3187',['aligned_highp_uvec2',['../a00921.html#ga04db692662a4908beeaf5a5ba6e19483',1,'glm']]], + ['aligned_5fhighp_5fuvec3_3188',['aligned_highp_uvec3',['../a00921.html#ga073fd6e8b241afade6d8afbd676b2667',1,'glm']]], + ['aligned_5fhighp_5fuvec4_3189',['aligned_highp_uvec4',['../a00921.html#gabdd60462042859f876c17c7346c732a5',1,'glm']]], + ['aligned_5fhighp_5fvec1_3190',['aligned_highp_vec1',['../a00921.html#ga4d0bd70d5fac49b800546d608b707513',1,'glm']]], + ['aligned_5fhighp_5fvec2_3191',['aligned_highp_vec2',['../a00921.html#gac9f8482dde741fb6bab7248b81a45465',1,'glm']]], + ['aligned_5fhighp_5fvec3_3192',['aligned_highp_vec3',['../a00921.html#ga65415d2d68c9cc0ca554524a8f5510b2',1,'glm']]], + ['aligned_5fhighp_5fvec4_3193',['aligned_highp_vec4',['../a00921.html#ga7cb26d354dd69d23849c34c4fba88da9',1,'glm']]], + ['aligned_5fivec1_3194',['aligned_ivec1',['../a00921.html#ga76298aed82a439063c3d55980c84aa0b',1,'glm']]], + ['aligned_5fivec2_3195',['aligned_ivec2',['../a00921.html#gae4f38fd2c86cee6940986197777b3ca4',1,'glm']]], + ['aligned_5fivec3_3196',['aligned_ivec3',['../a00921.html#ga32794322d294e5ace7fed4a61896f270',1,'glm']]], + ['aligned_5fivec4_3197',['aligned_ivec4',['../a00921.html#ga7f79eae5927c9033d84617e49f6f34e4',1,'glm']]], + ['aligned_5flowp_5fbvec1_3198',['aligned_lowp_bvec1',['../a00921.html#gac6036449ab1c4abf8efe1ea00fcdd1c9',1,'glm']]], + ['aligned_5flowp_5fbvec2_3199',['aligned_lowp_bvec2',['../a00921.html#ga59fadcd3835646e419372ae8b43c5d37',1,'glm']]], + ['aligned_5flowp_5fbvec3_3200',['aligned_lowp_bvec3',['../a00921.html#ga83aab4d191053f169c93a3e364f2e118',1,'glm']]], + ['aligned_5flowp_5fbvec4_3201',['aligned_lowp_bvec4',['../a00921.html#gaa7a76555ee4853614e5755181a8dd54e',1,'glm']]], + ['aligned_5flowp_5fdmat2_3202',['aligned_lowp_dmat2',['../a00921.html#ga79a90173d8faa9816dc852ce447d66ca',1,'glm']]], + ['aligned_5flowp_5fdmat2x2_3203',['aligned_lowp_dmat2x2',['../a00921.html#ga07cb8e846666cbf56045b064fb553d2e',1,'glm']]], + ['aligned_5flowp_5fdmat2x3_3204',['aligned_lowp_dmat2x3',['../a00921.html#ga7a4536b6e1f2ebb690f63816b5d7e48b',1,'glm']]], + ['aligned_5flowp_5fdmat2x4_3205',['aligned_lowp_dmat2x4',['../a00921.html#gab0cf4f7c9a264941519acad286e055ea',1,'glm']]], + ['aligned_5flowp_5fdmat3_3206',['aligned_lowp_dmat3',['../a00921.html#gac00e15efded8a57c9dec3aed0fb547e7',1,'glm']]], + ['aligned_5flowp_5fdmat3x2_3207',['aligned_lowp_dmat3x2',['../a00921.html#gaa281a47d5d627313984d0f8df993b648',1,'glm']]], + ['aligned_5flowp_5fdmat3x3_3208',['aligned_lowp_dmat3x3',['../a00921.html#ga7f3148a72355e39932d6855baca42ebc',1,'glm']]], + ['aligned_5flowp_5fdmat3x4_3209',['aligned_lowp_dmat3x4',['../a00921.html#gaea3ccc5ef5b178e6e49b4fa1427605d3',1,'glm']]], + ['aligned_5flowp_5fdmat4_3210',['aligned_lowp_dmat4',['../a00921.html#gab92c6d7d58d43dfb8147e9aedfe8351b',1,'glm']]], + ['aligned_5flowp_5fdmat4x2_3211',['aligned_lowp_dmat4x2',['../a00921.html#gaf806dfdaffb2e9f7681b1cd2825898ce',1,'glm']]], + ['aligned_5flowp_5fdmat4x3_3212',['aligned_lowp_dmat4x3',['../a00921.html#gab0931ac7807fa1428c7bbf249efcdf0d',1,'glm']]], + ['aligned_5flowp_5fdmat4x4_3213',['aligned_lowp_dmat4x4',['../a00921.html#gad8220a93d2fca2dd707821b4ab6f809e',1,'glm']]], + ['aligned_5flowp_5fdquat_3214',['aligned_lowp_dquat',['../a00921.html#gafe9b7a5f9e4ca385df4b5a3aee5d647e',1,'glm']]], + ['aligned_5flowp_5fdvec1_3215',['aligned_lowp_dvec1',['../a00921.html#ga7f8a2cc5a686e52b1615761f4978ca62',1,'glm']]], + ['aligned_5flowp_5fdvec2_3216',['aligned_lowp_dvec2',['../a00921.html#ga0e37cff4a43cca866101f0a35f01db6d',1,'glm']]], + ['aligned_5flowp_5fdvec3_3217',['aligned_lowp_dvec3',['../a00921.html#gab9e669c4efd52d3347fc6d5f6b20fd59',1,'glm']]], + ['aligned_5flowp_5fdvec4_3218',['aligned_lowp_dvec4',['../a00921.html#ga226f5ec7a953cea559c16fe3aff9924f',1,'glm']]], + ['aligned_5flowp_5fivec1_3219',['aligned_lowp_ivec1',['../a00921.html#ga1101d3a82b2e3f5f8828bd8f3adab3e1',1,'glm']]], + ['aligned_5flowp_5fivec2_3220',['aligned_lowp_ivec2',['../a00921.html#ga44c4accad582cfbd7226a19b83b0cadc',1,'glm']]], + ['aligned_5flowp_5fivec3_3221',['aligned_lowp_ivec3',['../a00921.html#ga65663f10a02e52cedcddbcfe36ddf38d',1,'glm']]], + ['aligned_5flowp_5fivec4_3222',['aligned_lowp_ivec4',['../a00921.html#gaae92fcec8b2e0328ffbeac31cc4fc419',1,'glm']]], + ['aligned_5flowp_5fmat2_3223',['aligned_lowp_mat2',['../a00921.html#ga17c424412207b00dba1cf587b099eea3',1,'glm']]], + ['aligned_5flowp_5fmat2x2_3224',['aligned_lowp_mat2x2',['../a00921.html#ga0e44aeb930a47f9cbf2db15b56433b0f',1,'glm']]], + ['aligned_5flowp_5fmat2x3_3225',['aligned_lowp_mat2x3',['../a00921.html#ga7dec6d96bc61312b1e56d137c9c74030',1,'glm']]], + ['aligned_5flowp_5fmat2x4_3226',['aligned_lowp_mat2x4',['../a00921.html#gaa694fab1f8df5f658846573ba8ffc563',1,'glm']]], + ['aligned_5flowp_5fmat3_3227',['aligned_lowp_mat3',['../a00921.html#ga1eb9076cc28ead5020fd3029fd0472c5',1,'glm']]], + ['aligned_5flowp_5fmat3x2_3228',['aligned_lowp_mat3x2',['../a00921.html#ga2d6639f0bd777bae1ee0eba71cd7bfdc',1,'glm']]], + ['aligned_5flowp_5fmat3x3_3229',['aligned_lowp_mat3x3',['../a00921.html#gaeaab04e378a90956eec8d68a99d777ed',1,'glm']]], + ['aligned_5flowp_5fmat3x4_3230',['aligned_lowp_mat3x4',['../a00921.html#ga1f03696ab066572c6c044e63edf635a2',1,'glm']]], + ['aligned_5flowp_5fmat4_3231',['aligned_lowp_mat4',['../a00921.html#ga25ea2f684e36aa5e978b4f2f86593824',1,'glm']]], + ['aligned_5flowp_5fmat4x2_3232',['aligned_lowp_mat4x2',['../a00921.html#ga2cb16c3fdfb15e0719d942ee3b548bc4',1,'glm']]], + ['aligned_5flowp_5fmat4x3_3233',['aligned_lowp_mat4x3',['../a00921.html#ga7e96981e872f17a780d9f1c22dc1f512',1,'glm']]], + ['aligned_5flowp_5fmat4x4_3234',['aligned_lowp_mat4x4',['../a00921.html#gadae3dcfc22d28c64d0548cbfd9d08719',1,'glm']]], + ['aligned_5flowp_5fquat_3235',['aligned_lowp_quat',['../a00921.html#ga9608c6b6a8c44cb18cb18ce914487594',1,'glm']]], + ['aligned_5flowp_5fuvec1_3236',['aligned_lowp_uvec1',['../a00921.html#gad09b93acc43c43423408d17a64f6d7ca',1,'glm']]], + ['aligned_5flowp_5fuvec2_3237',['aligned_lowp_uvec2',['../a00921.html#ga6f94fcd28dde906fc6cad5f742b55c1a',1,'glm']]], + ['aligned_5flowp_5fuvec3_3238',['aligned_lowp_uvec3',['../a00921.html#ga9e9f006970b1a00862e3e6e599eedd4c',1,'glm']]], + ['aligned_5flowp_5fuvec4_3239',['aligned_lowp_uvec4',['../a00921.html#ga46b1b0b9eb8625a5d69137bd66cd13dc',1,'glm']]], + ['aligned_5flowp_5fvec1_3240',['aligned_lowp_vec1',['../a00921.html#gab34aee3d5e121c543fea11d2c50ecc43',1,'glm']]], + ['aligned_5flowp_5fvec2_3241',['aligned_lowp_vec2',['../a00921.html#ga53ac5d252317f1fa43c2ef921857bf13',1,'glm']]], + ['aligned_5flowp_5fvec3_3242',['aligned_lowp_vec3',['../a00921.html#ga98f0b5cd65fce164ff1367c2a3b3aa1e',1,'glm']]], + ['aligned_5flowp_5fvec4_3243',['aligned_lowp_vec4',['../a00921.html#ga82f7275d6102593a69ce38cdad680409',1,'glm']]], + ['aligned_5fmat2_3244',['aligned_mat2',['../a00921.html#ga5a8a5f8c47cd7d5502dd9932f83472b9',1,'glm']]], + ['aligned_5fmat2x2_3245',['aligned_mat2x2',['../a00921.html#gabb04f459d81d753d278b2072e2375e8e',1,'glm']]], + ['aligned_5fmat2x3_3246',['aligned_mat2x3',['../a00921.html#ga832476bb1c59ef673db37433ff34e399',1,'glm']]], + ['aligned_5fmat2x4_3247',['aligned_mat2x4',['../a00921.html#gadab11a7504430825b648ff7c7e36b725',1,'glm']]], + ['aligned_5fmat3_3248',['aligned_mat3',['../a00921.html#ga43a92a24ca863e0e0f3b65834b3cf714',1,'glm']]], + ['aligned_5fmat3x2_3249',['aligned_mat3x2',['../a00921.html#ga5c0df24ba85eafafc0eb0c90690510ed',1,'glm']]], + ['aligned_5fmat3x3_3250',['aligned_mat3x3',['../a00921.html#gadb065dbe5c11271fef8cf2ea8608f187',1,'glm']]], + ['aligned_5fmat3x4_3251',['aligned_mat3x4',['../a00921.html#ga88061c72c997b94c420f2b0a60d9df26',1,'glm']]], + ['aligned_5fmat4_3252',['aligned_mat4',['../a00921.html#gab0fddcf95dd51cbcbf624ea7c40dfeb8',1,'glm']]], + ['aligned_5fmat4x2_3253',['aligned_mat4x2',['../a00921.html#gac9a2d0fb815fd5c2bd58b869c55e32d3',1,'glm']]], + ['aligned_5fmat4x3_3254',['aligned_mat4x3',['../a00921.html#ga452bbbfd26e244de216e4d004d50bb74',1,'glm']]], + ['aligned_5fmat4x4_3255',['aligned_mat4x4',['../a00921.html#ga8b8fb86973a0b768c5bd802c92fac1a1',1,'glm']]], + ['aligned_5fmediump_5fbvec1_3256',['aligned_mediump_bvec1',['../a00921.html#gadd3b8bd71a758f7fb0da8e525156f34e',1,'glm']]], + ['aligned_5fmediump_5fbvec2_3257',['aligned_mediump_bvec2',['../a00921.html#gacb183eb5e67ec0d0ea5a016cba962810',1,'glm']]], + ['aligned_5fmediump_5fbvec3_3258',['aligned_mediump_bvec3',['../a00921.html#gacfa4a542f1b20a5b63ad702dfb6fd587',1,'glm']]], + ['aligned_5fmediump_5fbvec4_3259',['aligned_mediump_bvec4',['../a00921.html#ga91bc1f513bb9b0fd60281d57ded9a48c',1,'glm']]], + ['aligned_5fmediump_5fdmat2_3260',['aligned_mediump_dmat2',['../a00921.html#ga62a2dfd668c91072b72c3109fc6cda28',1,'glm']]], + ['aligned_5fmediump_5fdmat2x2_3261',['aligned_mediump_dmat2x2',['../a00921.html#ga9b7feec247d378dd407ba81f56ea96c8',1,'glm']]], + ['aligned_5fmediump_5fdmat2x3_3262',['aligned_mediump_dmat2x3',['../a00921.html#gafcb189f4f93648fe7ca802ca4aca2eb8',1,'glm']]], + ['aligned_5fmediump_5fdmat2x4_3263',['aligned_mediump_dmat2x4',['../a00921.html#ga92f8873e3bbd5ca1323c8bbe5725cc5e',1,'glm']]], + ['aligned_5fmediump_5fdmat3_3264',['aligned_mediump_dmat3',['../a00921.html#ga6dc2832b747c00e0a0df621aba196960',1,'glm']]], + ['aligned_5fmediump_5fdmat3x2_3265',['aligned_mediump_dmat3x2',['../a00921.html#ga5a97f0355d801de3444d42c1d5b40438',1,'glm']]], + ['aligned_5fmediump_5fdmat3x3_3266',['aligned_mediump_dmat3x3',['../a00921.html#ga649d0acf01054b17e679cf00e150e025',1,'glm']]], + ['aligned_5fmediump_5fdmat3x4_3267',['aligned_mediump_dmat3x4',['../a00921.html#ga45e155a4840f69b2fa4ed8047a676860',1,'glm']]], + ['aligned_5fmediump_5fdmat4_3268',['aligned_mediump_dmat4',['../a00921.html#ga8a9376d82f0e946e25137eb55543e6ce',1,'glm']]], + ['aligned_5fmediump_5fdmat4x2_3269',['aligned_mediump_dmat4x2',['../a00921.html#gabc25e547f4de4af62403492532cd1b6d',1,'glm']]], + ['aligned_5fmediump_5fdmat4x3_3270',['aligned_mediump_dmat4x3',['../a00921.html#gae84f4763ecdc7457ecb7930bad12057c',1,'glm']]], + ['aligned_5fmediump_5fdmat4x4_3271',['aligned_mediump_dmat4x4',['../a00921.html#gaa292ebaa907afdecb2d5967fb4fb1247',1,'glm']]], + ['aligned_5fmediump_5fdquat_3272',['aligned_mediump_dquat',['../a00921.html#ga224812837186d3426283e29bbdaa98c0',1,'glm']]], + ['aligned_5fmediump_5fdvec1_3273',['aligned_mediump_dvec1',['../a00921.html#ga7180b685c581adb224406a7f831608e3',1,'glm']]], + ['aligned_5fmediump_5fdvec2_3274',['aligned_mediump_dvec2',['../a00921.html#ga9af1eabe22f569e70d9893be72eda0f5',1,'glm']]], + ['aligned_5fmediump_5fdvec3_3275',['aligned_mediump_dvec3',['../a00921.html#ga058e7ddab1428e47f2197bdd3a5a6953',1,'glm']]], + ['aligned_5fmediump_5fdvec4_3276',['aligned_mediump_dvec4',['../a00921.html#gaffd747ea2aea1e69c2ecb04e68521b21',1,'glm']]], + ['aligned_5fmediump_5fivec1_3277',['aligned_mediump_ivec1',['../a00921.html#ga20e63dd980b81af10cadbbe219316650',1,'glm']]], + ['aligned_5fmediump_5fivec2_3278',['aligned_mediump_ivec2',['../a00921.html#gaea13d89d49daca2c796aeaa82fc2c2f2',1,'glm']]], + ['aligned_5fmediump_5fivec3_3279',['aligned_mediump_ivec3',['../a00921.html#gabbf0f15e9c3d9868e43241ad018f82bd',1,'glm']]], + ['aligned_5fmediump_5fivec4_3280',['aligned_mediump_ivec4',['../a00921.html#ga6099dd7878d0a78101a4250d8cd2d736',1,'glm']]], + ['aligned_5fmediump_5fmat2_3281',['aligned_mediump_mat2',['../a00921.html#gaf6f041b212c57664d88bc6aefb7e36f3',1,'glm']]], + ['aligned_5fmediump_5fmat2x2_3282',['aligned_mediump_mat2x2',['../a00921.html#ga04bf49316ee777d42fcfe681ee37d7be',1,'glm']]], + ['aligned_5fmediump_5fmat2x3_3283',['aligned_mediump_mat2x3',['../a00921.html#ga26a0b61e444a51a37b9737cf4d84291b',1,'glm']]], + ['aligned_5fmediump_5fmat2x4_3284',['aligned_mediump_mat2x4',['../a00921.html#ga163facc9ed2692ea1300ed57c5d12b17',1,'glm']]], + ['aligned_5fmediump_5fmat3_3285',['aligned_mediump_mat3',['../a00921.html#ga3b76ba17ae5d53debeb6f7e55919a57c',1,'glm']]], + ['aligned_5fmediump_5fmat3x2_3286',['aligned_mediump_mat3x2',['../a00921.html#ga80dee705d714300378e0847f45059097',1,'glm']]], + ['aligned_5fmediump_5fmat3x3_3287',['aligned_mediump_mat3x3',['../a00921.html#ga721f5404caf40d68962dcc0529de71d9',1,'glm']]], + ['aligned_5fmediump_5fmat3x4_3288',['aligned_mediump_mat3x4',['../a00921.html#ga98f4dc6722a2541a990918c074075359',1,'glm']]], + ['aligned_5fmediump_5fmat4_3289',['aligned_mediump_mat4',['../a00921.html#gaeefee8317192174596852ce19b602720',1,'glm']]], + ['aligned_5fmediump_5fmat4x2_3290',['aligned_mediump_mat4x2',['../a00921.html#ga46f372a006345c252a41267657cc22c0',1,'glm']]], + ['aligned_5fmediump_5fmat4x3_3291',['aligned_mediump_mat4x3',['../a00921.html#ga0effece4545acdebdc2a5512a303110e',1,'glm']]], + ['aligned_5fmediump_5fmat4x4_3292',['aligned_mediump_mat4x4',['../a00921.html#ga312864244cae4e8f10f478cffd0f76de',1,'glm']]], + ['aligned_5fmediump_5fquat_3293',['aligned_mediump_quat',['../a00921.html#ga1504373315ffd788a4c08669b997ab5e',1,'glm']]], + ['aligned_5fmediump_5fuvec1_3294',['aligned_mediump_uvec1',['../a00921.html#gacb78126ea2eb779b41c7511128ff1283',1,'glm']]], + ['aligned_5fmediump_5fuvec2_3295',['aligned_mediump_uvec2',['../a00921.html#ga081d53e0a71443d0b68ea61c870f9adc',1,'glm']]], + ['aligned_5fmediump_5fuvec3_3296',['aligned_mediump_uvec3',['../a00921.html#gad6fc921bdde2bdbc7e09b028e1e9b379',1,'glm']]], + ['aligned_5fmediump_5fuvec4_3297',['aligned_mediump_uvec4',['../a00921.html#ga73ea0c1ba31580e107d21270883f51fc',1,'glm']]], + ['aligned_5fmediump_5fvec1_3298',['aligned_mediump_vec1',['../a00921.html#ga6b797eec76fa471e300158f3453b3b2e',1,'glm']]], + ['aligned_5fmediump_5fvec2_3299',['aligned_mediump_vec2',['../a00921.html#ga026a55ddbf2bafb1432f1157a2708616',1,'glm']]], + ['aligned_5fmediump_5fvec3_3300',['aligned_mediump_vec3',['../a00921.html#ga3a25e494173f6a64637b08a1b50a2132',1,'glm']]], + ['aligned_5fmediump_5fvec4_3301',['aligned_mediump_vec4',['../a00921.html#ga320d1c661cff2ef214eb50241f2928b2',1,'glm']]], + ['aligned_5fquat_3302',['aligned_quat',['../a00921.html#ga32e247c58235caf15a0f5e68356e285b',1,'glm']]], + ['aligned_5fuvec1_3303',['aligned_uvec1',['../a00921.html#ga1ff8ed402c93d280ff0597c1c5e7c548',1,'glm']]], + ['aligned_5fuvec2_3304',['aligned_uvec2',['../a00921.html#ga074137e3be58528d67041c223d49f398',1,'glm']]], + ['aligned_5fuvec3_3305',['aligned_uvec3',['../a00921.html#ga2a8d9c3046f89d854eb758adfa0811c0',1,'glm']]], + ['aligned_5fuvec4_3306',['aligned_uvec4',['../a00921.html#gabf842c45eea186170c267a328e3f3b7d',1,'glm']]], + ['aligned_5fvec1_3307',['aligned_vec1',['../a00921.html#ga05e6d4c908965d04191c2070a8d0a65e',1,'glm']]], + ['aligned_5fvec2_3308',['aligned_vec2',['../a00921.html#ga0682462f8096a226773e20fac993cde5',1,'glm']]], + ['aligned_5fvec3_3309',['aligned_vec3',['../a00921.html#ga7cf643b66664e0cd3c48759ae66c2bd0',1,'glm']]], + ['aligned_5fvec4_3310',['aligned_vec4',['../a00921.html#ga85d89e83cb8137e1be1446de8c3b643a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_1.html b/include/glm/doc/api/search/typedefs_1.html new file mode 100644 index 0000000..84e9542 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_1.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_1.js b/include/glm/doc/api/search/typedefs_1.js new file mode 100644 index 0000000..63789fe --- /dev/null +++ b/include/glm/doc/api/search/typedefs_1.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['bool1_3311',['bool1',['../a00933.html#gaddcd7aa2e30e61af5b38660613d3979e',1,'glm']]], + ['bool1x1_3312',['bool1x1',['../a00933.html#ga7f895c936f0c29c8729afbbf22806090',1,'glm']]], + ['bool2_3313',['bool2',['../a00933.html#gaa09ab65ec9c3c54305ff502e2b1fe6d9',1,'glm']]], + ['bool2x2_3314',['bool2x2',['../a00933.html#gadb3703955e513632f98ba12fe051ba3e',1,'glm']]], + ['bool2x3_3315',['bool2x3',['../a00933.html#ga9ae6ee155d0f90cb1ae5b6c4546738a0',1,'glm']]], + ['bool2x4_3316',['bool2x4',['../a00933.html#ga4d7fa65be8e8e4ad6d920b45c44e471f',1,'glm']]], + ['bool3_3317',['bool3',['../a00933.html#ga99629f818737f342204071ef8296b2ed',1,'glm']]], + ['bool3x2_3318',['bool3x2',['../a00933.html#gac7d7311f7e0fa8b6163d96dab033a755',1,'glm']]], + ['bool3x3_3319',['bool3x3',['../a00933.html#ga6c97b99aac3e302053ffb58aace9033c',1,'glm']]], + ['bool3x4_3320',['bool3x4',['../a00933.html#gae7d6b679463d37d6c527d478fb470fdf',1,'glm']]], + ['bool4_3321',['bool4',['../a00933.html#ga13c3200b82708f73faac6d7f09ec91a3',1,'glm']]], + ['bool4x2_3322',['bool4x2',['../a00933.html#ga9ed830f52408b2f83c085063a3eaf1d0',1,'glm']]], + ['bool4x3_3323',['bool4x3',['../a00933.html#gad0f5dc7f22c2065b1b06d57f1c0658fe',1,'glm']]], + ['bool4x4_3324',['bool4x4',['../a00933.html#ga7d2a7d13986602ae2896bfaa394235d4',1,'glm']]], + ['bvec1_3325',['bvec1',['../a00875.html#ga067af382616d93f8e850baae5154cdcc',1,'glm']]], + ['bvec2_3326',['bvec2',['../a00899.html#ga0b6123e03653cc1bbe366fc55238a934',1,'glm']]], + ['bvec3_3327',['bvec3',['../a00899.html#ga197151b72dfaf289daf98b361760ffe7',1,'glm']]], + ['bvec4_3328',['bvec4',['../a00899.html#ga9f7b9712373ff4342d9114619b55f5e3',1,'glm']]], + ['byte_3329',['byte',['../a00974.html#ga3005cb0d839d546c616becfa6602c607',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_2.html b/include/glm/doc/api/search/typedefs_2.html new file mode 100644 index 0000000..41586e9 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_2.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_2.js b/include/glm/doc/api/search/typedefs_2.js new file mode 100644 index 0000000..8a392df --- /dev/null +++ b/include/glm/doc/api/search/typedefs_2.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['ddualquat_3330',['ddualquat',['../a00935.html#ga3d71f98d84ba59dfe4e369fde4714cd6',1,'glm']]], + ['dmat2_3331',['dmat2',['../a00901.html#ga21dbd1f987775d7cc7607c139531c7e6',1,'glm']]], + ['dmat2x2_3332',['dmat2x2',['../a00901.html#ga66b6a9af787e468a46dfe24189e87f9b',1,'glm']]], + ['dmat2x3_3333',['dmat2x3',['../a00901.html#ga92cd388753d48e20de69ea2dbedf826a',1,'glm']]], + ['dmat2x4_3334',['dmat2x4',['../a00901.html#gaef2198807e937072803ae0ae45e1965e',1,'glm']]], + ['dmat3_3335',['dmat3',['../a00901.html#ga6f40aa56265b4b0ccad41b86802efe33',1,'glm']]], + ['dmat3x2_3336',['dmat3x2',['../a00901.html#ga001e3e0638fbf8719788fc64c5b8cf39',1,'glm']]], + ['dmat3x3_3337',['dmat3x3',['../a00901.html#ga970cb3306be25a5ca5db5a9456831228',1,'glm']]], + ['dmat3x4_3338',['dmat3x4',['../a00901.html#ga0412a634d183587e6188e9b11869f8f4',1,'glm']]], + ['dmat4_3339',['dmat4',['../a00901.html#ga0f34486bb7fec8e5a5b3830b6a6cbeca',1,'glm']]], + ['dmat4x2_3340',['dmat4x2',['../a00901.html#ga9bc0b3ab8b6ba2cb6782e179ad7ad156',1,'glm']]], + ['dmat4x3_3341',['dmat4x3',['../a00901.html#gacd18864049f8c83799babe7e596ca05b',1,'glm']]], + ['dmat4x4_3342',['dmat4x4',['../a00901.html#gad5a6484b983b74f9d801cab8bc4e6a10',1,'glm']]], + ['double1_3343',['double1',['../a00933.html#ga20b861a9b6e2a300323671c57a02525b',1,'glm']]], + ['double1x1_3344',['double1x1',['../a00933.html#ga45f16a4dd0db1f199afaed9fd12fe9a8',1,'glm']]], + ['double2_3345',['double2',['../a00933.html#ga31b729b04facccda73f07ed26958b3c2',1,'glm']]], + ['double2x2_3346',['double2x2',['../a00933.html#gae57d0201096834d25f2b91b319e7cdbd',1,'glm']]], + ['double2x3_3347',['double2x3',['../a00933.html#ga3655bc324008553ca61f39952d0b2d08',1,'glm']]], + ['double2x4_3348',['double2x4',['../a00933.html#gacd33061fc64a7b2dcfd7322c49d9557a',1,'glm']]], + ['double3_3349',['double3',['../a00933.html#ga3d8b9028a1053a44a98902cd1c389472',1,'glm']]], + ['double3x2_3350',['double3x2',['../a00933.html#ga5ec08fc39c9d783dfcc488be240fe975',1,'glm']]], + ['double3x3_3351',['double3x3',['../a00933.html#ga4bad5bb20c6ddaecfe4006c93841d180',1,'glm']]], + ['double3x4_3352',['double3x4',['../a00933.html#ga2ef022e453d663d70aec414b2a80f756',1,'glm']]], + ['double4_3353',['double4',['../a00933.html#gaf92f58af24f35617518aeb3d4f63fda6',1,'glm']]], + ['double4x2_3354',['double4x2',['../a00933.html#gabca29ccceea53669618b751aae0ba83d',1,'glm']]], + ['double4x3_3355',['double4x3',['../a00933.html#gafad66a02ccd360c86d6ab9ff9cfbc19c',1,'glm']]], + ['double4x4_3356',['double4x4',['../a00933.html#gaab541bed2e788e4537852a2492860806',1,'glm']]], + ['dquat_3357',['dquat',['../a00857.html#ga1181459aa5d640a3ea43861b118f3f0b',1,'glm']]], + ['dualquat_3358',['dualquat',['../a00935.html#gae93abee0c979902fbec6a7bee0f6fae1',1,'glm']]], + ['dvec1_3359',['dvec1',['../a00878.html#ga6221af17edc2d4477a4583d2cd53e569',1,'glm']]], + ['dvec2_3360',['dvec2',['../a00899.html#ga8b09c71aaac7da7867ae58377fe219a8',1,'glm']]], + ['dvec3_3361',['dvec3',['../a00899.html#ga5b83ae3d0fdec519c038e4d2cf967cf0',1,'glm']]], + ['dvec4_3362',['dvec4',['../a00899.html#ga57debab5d98ce618f7b2a97fe26eb3ac',1,'glm']]], + ['dword_3363',['dword',['../a00974.html#ga86e46fff9f80ae33893d8d697f2ca98a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_3.html b/include/glm/doc/api/search/typedefs_3.html new file mode 100644 index 0000000..294c880 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_3.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_3.js b/include/glm/doc/api/search/typedefs_3.js new file mode 100644 index 0000000..6289c3c --- /dev/null +++ b/include/glm/doc/api/search/typedefs_3.js @@ -0,0 +1,78 @@ +var searchData= +[ + ['f32_3364',['f32',['../a00922.html#gabe6a542dd6c1d5ffd847f1b9b4c9c9b7',1,'glm']]], + ['f32mat1_3365',['f32mat1',['../a00965.html#ga145ad477a2a3e152855511c3b52469a6',1,'glm']]], + ['f32mat1x1_3366',['f32mat1x1',['../a00965.html#gac88c6a4dbfc380aa26e3adbbade36348',1,'glm']]], + ['f32mat2_3367',['f32mat2',['../a00922.html#gab12383ed6ac7595ed6fde4d266c58425',1,'glm']]], + ['f32mat2x2_3368',['f32mat2x2',['../a00922.html#ga04100c76f7d55a0dd0983ccf05142bff',1,'glm']]], + ['f32mat2x3_3369',['f32mat2x3',['../a00922.html#gab256cdab5eb582e426d749ae77b5b566',1,'glm']]], + ['f32mat2x4_3370',['f32mat2x4',['../a00922.html#gaf512b74c4400b68f9fdf9388b3d6aac8',1,'glm']]], + ['f32mat3_3371',['f32mat3',['../a00922.html#ga856f3905ee7cc2e4890a8a1d56c150be',1,'glm']]], + ['f32mat3x2_3372',['f32mat3x2',['../a00922.html#ga1320a08e14fdff3821241eefab6947e9',1,'glm']]], + ['f32mat3x3_3373',['f32mat3x3',['../a00922.html#ga65261fa8a21045c8646ddff114a56174',1,'glm']]], + ['f32mat3x4_3374',['f32mat3x4',['../a00922.html#gab90ade28222f8b861d5ceaf81a3a7f5d',1,'glm']]], + ['f32mat4_3375',['f32mat4',['../a00922.html#ga99d1b85ff99956b33da7e9992aad129a',1,'glm']]], + ['f32mat4x2_3376',['f32mat4x2',['../a00922.html#ga3b32ca1e57a4ef91babbc3d35a34ea20',1,'glm']]], + ['f32mat4x3_3377',['f32mat4x3',['../a00922.html#ga239b96198771b7add8eea7e6b59840c0',1,'glm']]], + ['f32mat4x4_3378',['f32mat4x4',['../a00922.html#gaee4da0e9fbd8cfa2f89cb80889719dc3',1,'glm']]], + ['f32quat_3379',['f32quat',['../a00922.html#ga38e674196ba411d642be40c47bf33939',1,'glm']]], + ['f32vec1_3380',['f32vec1',['../a00922.html#ga701f32ab5b3fb06996b41f5c0d643805',1,'glm']]], + ['f32vec2_3381',['f32vec2',['../a00922.html#ga5d6c70e080409a76a257dc55bd8ea2c8',1,'glm']]], + ['f32vec3_3382',['f32vec3',['../a00922.html#gaea5c4518e175162e306d2c2b5ef5ac79',1,'glm']]], + ['f32vec4_3383',['f32vec4',['../a00922.html#ga31c6ca0e074a44007f49a9a3720b18c8',1,'glm']]], + ['f64_3384',['f64',['../a00922.html#ga1d794d240091678f602e8de225b8d8c9',1,'glm']]], + ['f64mat1_3385',['f64mat1',['../a00965.html#ga59bfa589419b5265d01314fcecd33435',1,'glm']]], + ['f64mat1x1_3386',['f64mat1x1',['../a00965.html#ga448eeb08d0b7d8c43a8b292c981955fd',1,'glm']]], + ['f64mat2_3387',['f64mat2',['../a00922.html#gad9771450a54785d13080cdde0fe20c1d',1,'glm']]], + ['f64mat2x2_3388',['f64mat2x2',['../a00922.html#ga9ec7c4c79e303c053e30729a95fb2c37',1,'glm']]], + ['f64mat2x3_3389',['f64mat2x3',['../a00922.html#gae3ab5719fc4c1e966631dbbcba8d412a',1,'glm']]], + ['f64mat2x4_3390',['f64mat2x4',['../a00922.html#gac87278e0c702ba8afff76316d4eeb769',1,'glm']]], + ['f64mat3_3391',['f64mat3',['../a00922.html#ga9b69181efbf8f37ae934f135137b29c0',1,'glm']]], + ['f64mat3x2_3392',['f64mat3x2',['../a00922.html#ga2473d8bf3f4abf967c4d0e18175be6f7',1,'glm']]], + ['f64mat3x3_3393',['f64mat3x3',['../a00922.html#ga916c1aed91cf91f7b41399ebe7c6e185',1,'glm']]], + ['f64mat3x4_3394',['f64mat3x4',['../a00922.html#gaab239fa9e35b65a67cbaa6ac082f3675',1,'glm']]], + ['f64mat4_3395',['f64mat4',['../a00922.html#ga0ecd3f4952536e5ef12702b44d2626fc',1,'glm']]], + ['f64mat4x2_3396',['f64mat4x2',['../a00922.html#gab7daf79d6bc06a68bea1c6f5e11b5512',1,'glm']]], + ['f64mat4x3_3397',['f64mat4x3',['../a00922.html#ga3e2e66ffbe341a80bc005ba2b9552110',1,'glm']]], + ['f64mat4x4_3398',['f64mat4x4',['../a00922.html#gae52e2b7077a9ff928a06ab5ce600b81e',1,'glm']]], + ['f64quat_3399',['f64quat',['../a00922.html#ga2b114a2f2af0fe1dfeb569c767822940',1,'glm']]], + ['f64vec1_3400',['f64vec1',['../a00922.html#gade502df1ce14f837fae7f60a03ddb9b0',1,'glm']]], + ['f64vec2_3401',['f64vec2',['../a00922.html#gadc4e1594f9555d919131ee02b17822a2',1,'glm']]], + ['f64vec3_3402',['f64vec3',['../a00922.html#gaa7a1ddca75c5f629173bf4772db7a635',1,'glm']]], + ['f64vec4_3403',['f64vec4',['../a00922.html#ga66e92e57260bdb910609b9a56bf83e97',1,'glm']]], + ['fdualquat_3404',['fdualquat',['../a00935.html#ga237c2b9b42c9a930e49de5840ae0f930',1,'glm']]], + ['float1_3405',['float1',['../a00933.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead',1,'glm']]], + ['float1x1_3406',['float1x1',['../a00933.html#ga73720b8dc4620835b17f74d428f98c0c',1,'glm']]], + ['float2_3407',['float2',['../a00933.html#ga02d3c013982c183906c61d74aa3166ce',1,'glm']]], + ['float2x2_3408',['float2x2',['../a00933.html#ga33d43ecbb60a85a1366ff83f8a0ec85f',1,'glm']]], + ['float2x3_3409',['float2x3',['../a00933.html#ga939b0cff15cee3030f75c1b2e36f89fe',1,'glm']]], + ['float2x4_3410',['float2x4',['../a00933.html#gafec3cfd901ab334a92e0242b8f2269b4',1,'glm']]], + ['float3_3411',['float3',['../a00933.html#ga821ff110fc8533a053cbfcc93e078cc0',1,'glm']]], + ['float32_3412',['float32',['../a00922.html#gaacdc525d6f7bddb3ae95d5c311bd06a1',1,'glm']]], + ['float32_5ft_3413',['float32_t',['../a00922.html#gaa4947bc8b47c72fceea9bda730ecf603',1,'glm']]], + ['float3x2_3414',['float3x2',['../a00933.html#gaa6c69f04ba95f3faedf95dae874de576',1,'glm']]], + ['float3x3_3415',['float3x3',['../a00933.html#ga6ceb5d38a58becdf420026e12a6562f3',1,'glm']]], + ['float3x4_3416',['float3x4',['../a00933.html#ga4d2679c321b793ca3784fe0315bb5332',1,'glm']]], + ['float4_3417',['float4',['../a00933.html#gae2da7345087db3815a25d8837a727ef1',1,'glm']]], + ['float4x2_3418',['float4x2',['../a00933.html#ga308b9af0c221145bcfe9bfc129d9098e',1,'glm']]], + ['float4x3_3419',['float4x3',['../a00933.html#gac0a51b4812038aa81d73ffcc37f741ac',1,'glm']]], + ['float4x4_3420',['float4x4',['../a00933.html#gad3051649b3715d828a4ab92cdae7c3bf',1,'glm']]], + ['float64_3421',['float64',['../a00922.html#ga232fad1b0d6dcc7c16aabde98b2e2a80',1,'glm']]], + ['float64_5ft_3422',['float64_t',['../a00922.html#ga728366fef72cd96f0a5fa6429f05469e',1,'glm']]], + ['fmat2_3423',['fmat2',['../a00922.html#ga4541dc2feb2a31d6ecb5a303f3dd3280',1,'glm']]], + ['fmat2x2_3424',['fmat2x2',['../a00922.html#ga3350c93c3275298f940a42875388e4b4',1,'glm']]], + ['fmat2x3_3425',['fmat2x3',['../a00922.html#ga55a2d2a8eb09b5633668257eb3cad453',1,'glm']]], + ['fmat2x4_3426',['fmat2x4',['../a00922.html#ga681381f19f11c9e5ee45cda2c56937ff',1,'glm']]], + ['fmat3_3427',['fmat3',['../a00922.html#ga253d453c20e037730023fea0215cb6f6',1,'glm']]], + ['fmat3x2_3428',['fmat3x2',['../a00922.html#ga6af54d70d9beb0a7ef992a879e86b04f',1,'glm']]], + ['fmat3x3_3429',['fmat3x3',['../a00922.html#gaa07c86650253672a19dbfb898f3265b8',1,'glm']]], + ['fmat3x4_3430',['fmat3x4',['../a00922.html#ga44e158af77a670ee1b58c03cda9e1619',1,'glm']]], + ['fmat4_3431',['fmat4',['../a00922.html#ga8cb400c0f4438f2640035d7b9824a0ca',1,'glm']]], + ['fmat4x2_3432',['fmat4x2',['../a00922.html#ga8c8aa45aafcc23238edb1d5aeb801774',1,'glm']]], + ['fmat4x3_3433',['fmat4x3',['../a00922.html#ga4295048a78bdf46b8a7de77ec665b497',1,'glm']]], + ['fmat4x4_3434',['fmat4x4',['../a00922.html#gad01cc6479bde1fd1870f13d3ed9530b3',1,'glm']]], + ['fvec1_3435',['fvec1',['../a00922.html#ga98b9ed43cf8c5cf1d354b23c7df9119f',1,'glm']]], + ['fvec2_3436',['fvec2',['../a00922.html#ga24273aa02abaecaab7f160bac437a339',1,'glm']]], + ['fvec3_3437',['fvec3',['../a00922.html#ga89930533646b30d021759298aa6bf04a',1,'glm']]], + ['fvec4_3438',['fvec4',['../a00922.html#ga713c796c54875cf4092d42ff9d9096b0',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_4.html b/include/glm/doc/api/search/typedefs_4.html new file mode 100644 index 0000000..d0dbba9 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_4.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_4.js b/include/glm/doc/api/search/typedefs_4.js new file mode 100644 index 0000000..2775e0d --- /dev/null +++ b/include/glm/doc/api/search/typedefs_4.js @@ -0,0 +1,188 @@ +var searchData= +[ + ['highp_5fbvec1_3439',['highp_bvec1',['../a00876.html#gae8a1e14abae1387274f57741750c06a2',1,'glm']]], + ['highp_5fbvec2_3440',['highp_bvec2',['../a00900.html#gac6c781a85f012d77a75310a3058702c2',1,'glm']]], + ['highp_5fbvec3_3441',['highp_bvec3',['../a00900.html#gaedb70027d89a0a405046aefda4eabaa6',1,'glm']]], + ['highp_5fbvec4_3442',['highp_bvec4',['../a00900.html#gaee663ff64429443ab07a5327074192f6',1,'glm']]], + ['highp_5fddualquat_3443',['highp_ddualquat',['../a00935.html#ga8f67eafa7197d7a668dad5105a463d2a',1,'glm']]], + ['highp_5fdmat2_3444',['highp_dmat2',['../a00902.html#ga369b447bb1b312449b679ea1f90f3cea',1,'glm']]], + ['highp_5fdmat2x2_3445',['highp_dmat2x2',['../a00902.html#gae27ac20302c2e39b6c78e7fe18e62ef7',1,'glm']]], + ['highp_5fdmat2x3_3446',['highp_dmat2x3',['../a00902.html#gad4689ec33bc2c26e10132b174b49001a',1,'glm']]], + ['highp_5fdmat2x4_3447',['highp_dmat2x4',['../a00902.html#ga5ceeb46670fdc000a0701910cc5061c9',1,'glm']]], + ['highp_5fdmat3_3448',['highp_dmat3',['../a00902.html#ga86d6d4dbad92ffdcc759773340e15a97',1,'glm']]], + ['highp_5fdmat3x2_3449',['highp_dmat3x2',['../a00902.html#ga3647309010a2160e9ec89bc6f7c95c35',1,'glm']]], + ['highp_5fdmat3x3_3450',['highp_dmat3x3',['../a00902.html#gae367ea93c4ad8a7c101dd27b8b2b04ce',1,'glm']]], + ['highp_5fdmat3x4_3451',['highp_dmat3x4',['../a00902.html#ga6543eeeb64f48d79a0b96484308c50f0',1,'glm']]], + ['highp_5fdmat4_3452',['highp_dmat4',['../a00902.html#ga945254f459860741138bceb74da496b9',1,'glm']]], + ['highp_5fdmat4x2_3453',['highp_dmat4x2',['../a00902.html#gaeda1f474c668eaecc443bea85a4a4eca',1,'glm']]], + ['highp_5fdmat4x3_3454',['highp_dmat4x3',['../a00902.html#gacf237c2d8832fe8db2d7e187585d34bd',1,'glm']]], + ['highp_5fdmat4x4_3455',['highp_dmat4x4',['../a00902.html#ga118d24a3d12c034e7cccef7bf2f01b8a',1,'glm']]], + ['highp_5fdquat_3456',['highp_dquat',['../a00858.html#gaf13a25f41afc03480b40fc71bd249cec',1,'glm']]], + ['highp_5fdualquat_3457',['highp_dualquat',['../a00935.html#ga9ef5bf1da52a9d4932335a517086ceaf',1,'glm']]], + ['highp_5fdvec1_3458',['highp_dvec1',['../a00879.html#ga77c22c4426da3a6865c88d3fc907e3fe',1,'glm']]], + ['highp_5fdvec2_3459',['highp_dvec2',['../a00900.html#gab98d77cca255914f5e29697fcbc2d975',1,'glm']]], + ['highp_5fdvec3_3460',['highp_dvec3',['../a00900.html#gab24dc20dcdc5b71282634bdbf6b70105',1,'glm']]], + ['highp_5fdvec4_3461',['highp_dvec4',['../a00900.html#gab654f4ed4a99d64a6cfc65320c2a7590',1,'glm']]], + ['highp_5ff32_3462',['highp_f32',['../a00922.html#ga6906e1ef0b34064b4b675489c5c38725',1,'glm']]], + ['highp_5ff32mat2_3463',['highp_f32mat2',['../a00922.html#ga298f7d4d273678d0282812368da27fda',1,'glm']]], + ['highp_5ff32mat2x2_3464',['highp_f32mat2x2',['../a00922.html#gae5eb02d92b7d4605a4b7f37ae5cb2968',1,'glm']]], + ['highp_5ff32mat2x3_3465',['highp_f32mat2x3',['../a00922.html#ga0aeb5cb001473b08c88175012708a379',1,'glm']]], + ['highp_5ff32mat2x4_3466',['highp_f32mat2x4',['../a00922.html#ga88938ee1e7981fa3402e88da6ad74531',1,'glm']]], + ['highp_5ff32mat3_3467',['highp_f32mat3',['../a00922.html#ga24f9ef3263b1638564713892cc37981f',1,'glm']]], + ['highp_5ff32mat3x2_3468',['highp_f32mat3x2',['../a00922.html#ga36537e701456f12c20e73f469cac4967',1,'glm']]], + ['highp_5ff32mat3x3_3469',['highp_f32mat3x3',['../a00922.html#gaab691ae40c37976d268d8cac0096e0e1',1,'glm']]], + ['highp_5ff32mat3x4_3470',['highp_f32mat3x4',['../a00922.html#gaa5086dbd6efb272d13fc88829330861d',1,'glm']]], + ['highp_5ff32mat4_3471',['highp_f32mat4',['../a00922.html#ga14c90ca49885723f51d06e295587236f',1,'glm']]], + ['highp_5ff32mat4x2_3472',['highp_f32mat4x2',['../a00922.html#ga602e119c6b246b4f6edcf66845f2aa0f',1,'glm']]], + ['highp_5ff32mat4x3_3473',['highp_f32mat4x3',['../a00922.html#ga66bffdd8e5c0d3ef9958bbab9ca1ba59',1,'glm']]], + ['highp_5ff32mat4x4_3474',['highp_f32mat4x4',['../a00922.html#gaf1b712b97b2322685fbbed28febe5f84',1,'glm']]], + ['highp_5ff32quat_3475',['highp_f32quat',['../a00922.html#ga4252cf7f5b0e3cd47c3d3badf0ef43b3',1,'glm']]], + ['highp_5ff32vec1_3476',['highp_f32vec1',['../a00922.html#gab1b1c9e8667902b78b2c330e4d383a61',1,'glm']]], + ['highp_5ff32vec2_3477',['highp_f32vec2',['../a00922.html#ga0b8ebd4262331e139ff257d7cf2a4b77',1,'glm']]], + ['highp_5ff32vec3_3478',['highp_f32vec3',['../a00922.html#ga522775dbcc6d96246a1c5cf02344fd8c',1,'glm']]], + ['highp_5ff32vec4_3479',['highp_f32vec4',['../a00922.html#ga0f038d4e09862a74f03d102c59eda73e',1,'glm']]], + ['highp_5ff64_3480',['highp_f64',['../a00922.html#ga51d5266017d88f62737c1973923a7cf4',1,'glm']]], + ['highp_5ff64mat2_3481',['highp_f64mat2',['../a00922.html#gaf7adb92ce8de0afaff01436b039fd924',1,'glm']]], + ['highp_5ff64mat2x2_3482',['highp_f64mat2x2',['../a00922.html#ga773ea237a051827cfc20de960bc73ff0',1,'glm']]], + ['highp_5ff64mat2x3_3483',['highp_f64mat2x3',['../a00922.html#ga8342c7469384c6d769cacc9e309278d9',1,'glm']]], + ['highp_5ff64mat2x4_3484',['highp_f64mat2x4',['../a00922.html#ga5a67a7440b9c0d1538533540f99036a5',1,'glm']]], + ['highp_5ff64mat3_3485',['highp_f64mat3',['../a00922.html#ga609bf0ace941d6ab1bb2f9522a04e546',1,'glm']]], + ['highp_5ff64mat3x2_3486',['highp_f64mat3x2',['../a00922.html#ga5bdbfb4ce7d05ce1e1b663f50be17e8a',1,'glm']]], + ['highp_5ff64mat3x3_3487',['highp_f64mat3x3',['../a00922.html#ga7c2cadb9b85cc7e0d125db21ca19dea4',1,'glm']]], + ['highp_5ff64mat3x4_3488',['highp_f64mat3x4',['../a00922.html#gad310b1dddeec9ec837a104e7db8de580',1,'glm']]], + ['highp_5ff64mat4_3489',['highp_f64mat4',['../a00922.html#gad308e0ed27d64daa4213fb257fcbd5a5',1,'glm']]], + ['highp_5ff64mat4x2_3490',['highp_f64mat4x2',['../a00922.html#ga58c4631421e323e252fc716b6103e38c',1,'glm']]], + ['highp_5ff64mat4x3_3491',['highp_f64mat4x3',['../a00922.html#gae94823d65648e44d972863c6caa13103',1,'glm']]], + ['highp_5ff64mat4x4_3492',['highp_f64mat4x4',['../a00922.html#ga09a2374b725c4246d263ee36fb66434c',1,'glm']]], + ['highp_5ff64quat_3493',['highp_f64quat',['../a00922.html#gafcfdd74a115163af2ce1093551747352',1,'glm']]], + ['highp_5ff64vec1_3494',['highp_f64vec1',['../a00922.html#ga62c31b133ceee9984fbee05ac4c434a9',1,'glm']]], + ['highp_5ff64vec2_3495',['highp_f64vec2',['../a00922.html#ga670ea1b0a1172bc73b1d7c1e0c26cce2',1,'glm']]], + ['highp_5ff64vec3_3496',['highp_f64vec3',['../a00922.html#gacd1196090ece7a69fb5c3e43a7d4d851',1,'glm']]], + ['highp_5ff64vec4_3497',['highp_f64vec4',['../a00922.html#ga61185c44c8cc0b25d9a0f67d8a267444',1,'glm']]], + ['highp_5ffdualquat_3498',['highp_fdualquat',['../a00935.html#ga4c4e55e9c99dc57b299ed590968da564',1,'glm']]], + ['highp_5ffloat32_3499',['highp_float32',['../a00922.html#gac5a7f21136e0a78d0a1b9f60ef2f8aea',1,'glm']]], + ['highp_5ffloat32_5ft_3500',['highp_float32_t',['../a00922.html#ga5376ef18dca9d248897c3363ef5a06b2',1,'glm']]], + ['highp_5ffloat64_3501',['highp_float64',['../a00922.html#gadbb198a4d7aad82a0f4dc466ef6f6215',1,'glm']]], + ['highp_5ffloat64_5ft_3502',['highp_float64_t',['../a00922.html#gaaeeb0077198cff40e3f48b1108ece139',1,'glm']]], + ['highp_5ffmat2_3503',['highp_fmat2',['../a00922.html#gae98c88d9a7befa9b5877f49176225535',1,'glm']]], + ['highp_5ffmat2x2_3504',['highp_fmat2x2',['../a00922.html#ga28635abcddb2f3e92c33c3f0fcc682ad',1,'glm']]], + ['highp_5ffmat2x3_3505',['highp_fmat2x3',['../a00922.html#gacf111095594996fef29067b2454fccad',1,'glm']]], + ['highp_5ffmat2x4_3506',['highp_fmat2x4',['../a00922.html#ga4920a1536f161f7ded1d6909b7fef0d2',1,'glm']]], + ['highp_5ffmat3_3507',['highp_fmat3',['../a00922.html#gaed2dc69e0d507d4191092dbd44b3eb75',1,'glm']]], + ['highp_5ffmat3x2_3508',['highp_fmat3x2',['../a00922.html#gae54e4d1aeb5a0f0c64822e6f1b299e19',1,'glm']]], + ['highp_5ffmat3x3_3509',['highp_fmat3x3',['../a00922.html#gaa5b44d3ef6efcf33f44876673a7a936e',1,'glm']]], + ['highp_5ffmat3x4_3510',['highp_fmat3x4',['../a00922.html#ga961fac2a885907ffcf4d40daac6615c5',1,'glm']]], + ['highp_5ffmat4_3511',['highp_fmat4',['../a00922.html#gabf28443ce0cc0959077ec39b21f32c39',1,'glm']]], + ['highp_5ffmat4x2_3512',['highp_fmat4x2',['../a00922.html#ga076961cf2d120c7168b957cb2ed107b3',1,'glm']]], + ['highp_5ffmat4x3_3513',['highp_fmat4x3',['../a00922.html#gae406ec670f64170a7437b5e302eeb2cb',1,'glm']]], + ['highp_5ffmat4x4_3514',['highp_fmat4x4',['../a00922.html#gaee80c7cd3caa0f2635058656755f6f69',1,'glm']]], + ['highp_5ffvec1_3515',['highp_fvec1',['../a00922.html#gaa1040342c4efdedc8f90e6267db8d41c',1,'glm']]], + ['highp_5ffvec2_3516',['highp_fvec2',['../a00922.html#ga7c0d196f5fa79f7e892a2f323a0be1ae',1,'glm']]], + ['highp_5ffvec3_3517',['highp_fvec3',['../a00922.html#ga6ef77413883f48d6b53b4169b25edbd0',1,'glm']]], + ['highp_5ffvec4_3518',['highp_fvec4',['../a00922.html#ga8b839abbb44f5102609eed89f6ed61f7',1,'glm']]], + ['highp_5fi16_3519',['highp_i16',['../a00922.html#ga0336abc2604dd2c20c30e036454b64f8',1,'glm']]], + ['highp_5fi16vec1_3520',['highp_i16vec1',['../a00922.html#ga70fdfcc1fd38084bde83c3f06a8b9f19',1,'glm']]], + ['highp_5fi16vec2_3521',['highp_i16vec2',['../a00922.html#gaa7db3ad10947cf70cae6474d05ebd227',1,'glm']]], + ['highp_5fi16vec3_3522',['highp_i16vec3',['../a00922.html#ga5609c8fa2b7eac3dec337d321cb0ca96',1,'glm']]], + ['highp_5fi16vec4_3523',['highp_i16vec4',['../a00922.html#ga7a18659438828f91ccca28f1a1e067b4',1,'glm']]], + ['highp_5fi32_3524',['highp_i32',['../a00922.html#ga727675ac6b5d2fc699520e0059735e25',1,'glm']]], + ['highp_5fi32vec1_3525',['highp_i32vec1',['../a00922.html#ga6a9d71cc62745302f70422b7dc98755c',1,'glm']]], + ['highp_5fi32vec2_3526',['highp_i32vec2',['../a00922.html#gaa9b4579f8e6f3d9b649a965bcb785530',1,'glm']]], + ['highp_5fi32vec3_3527',['highp_i32vec3',['../a00922.html#ga31e070ea3bdee623e6e18a61ba5718b1',1,'glm']]], + ['highp_5fi32vec4_3528',['highp_i32vec4',['../a00922.html#gadf70eaaa230aeed5a4c9f4c9c5c55902',1,'glm']]], + ['highp_5fi64_3529',['highp_i64',['../a00922.html#gac25db6d2b1e2a0f351b77ba3409ac4cd',1,'glm']]], + ['highp_5fi64vec1_3530',['highp_i64vec1',['../a00922.html#gabd2fda3cd208acf5a370ec9b5b3c58d4',1,'glm']]], + ['highp_5fi64vec2_3531',['highp_i64vec2',['../a00922.html#gad9d1903cb20899966e8ebe0670889a5f',1,'glm']]], + ['highp_5fi64vec3_3532',['highp_i64vec3',['../a00922.html#ga62324224b9c6cce9c6b4db96bb704a8a',1,'glm']]], + ['highp_5fi64vec4_3533',['highp_i64vec4',['../a00922.html#gad23b1be9b3bf20352089a6b738f0ebba',1,'glm']]], + ['highp_5fi8_3534',['highp_i8',['../a00922.html#gacb88796f2d08ef253d0345aff20c3aee',1,'glm']]], + ['highp_5fi8vec1_3535',['highp_i8vec1',['../a00922.html#ga1d8c10949691b0fd990253476f47beb3',1,'glm']]], + ['highp_5fi8vec2_3536',['highp_i8vec2',['../a00922.html#ga50542e4cb9b2f9bec213b66e06145d07',1,'glm']]], + ['highp_5fi8vec3_3537',['highp_i8vec3',['../a00922.html#ga8396bfdc081d9113190d0c39c9f67084',1,'glm']]], + ['highp_5fi8vec4_3538',['highp_i8vec4',['../a00922.html#ga4824e3ddf6e608117dfe4809430737b4',1,'glm']]], + ['highp_5fimat2_3539',['highp_imat2',['../a00912.html#ga8499cc3b016003f835314c1c756e9db9',1,'glm']]], + ['highp_5fimat2x2_3540',['highp_imat2x2',['../a00912.html#ga02470e29b72461d18b0ca69abedd7ed9',1,'glm']]], + ['highp_5fimat2x3_3541',['highp_imat2x3',['../a00912.html#gaa9cc128d4b33a9a3d9c41945409c6a09',1,'glm']]], + ['highp_5fimat2x4_3542',['highp_imat2x4',['../a00912.html#gafc4c0a84e63da3c5dd49fb893c036f03',1,'glm']]], + ['highp_5fimat3_3543',['highp_imat3',['../a00912.html#gaca4506a3efa679eff7c006d9826291fd',1,'glm']]], + ['highp_5fimat3x2_3544',['highp_imat3x2',['../a00912.html#ga5ad2efa5da7d3331f264c9623e3def51',1,'glm']]], + ['highp_5fimat3x3_3545',['highp_imat3x3',['../a00912.html#ga92349a807c25033fad67f0d402d4cb98',1,'glm']]], + ['highp_5fimat3x4_3546',['highp_imat3x4',['../a00912.html#ga314765ba5934d6fe6e8ca189417e2ab6',1,'glm']]], + ['highp_5fimat4_3547',['highp_imat4',['../a00912.html#ga7cfb09b34e0fcf73eaf6512d6483ef56',1,'glm']]], + ['highp_5fimat4x2_3548',['highp_imat4x2',['../a00912.html#ga89f150a46de983f1e27d0045ec05b4e3',1,'glm']]], + ['highp_5fimat4x3_3549',['highp_imat4x3',['../a00912.html#gadbccb0a2e7f43c31baea7fecbfa10bbf',1,'glm']]], + ['highp_5fimat4x4_3550',['highp_imat4x4',['../a00912.html#gabb667869006fd8b1944bbd03c6d56690',1,'glm']]], + ['highp_5fint16_3551',['highp_int16',['../a00922.html#ga5fde0fa4a3852a9dd5d637a92ee74718',1,'glm']]], + ['highp_5fint16_5ft_3552',['highp_int16_t',['../a00922.html#gacaea06d0a79ef3172e887a7a6ba434ff',1,'glm']]], + ['highp_5fint32_3553',['highp_int32',['../a00922.html#ga84ed04b4e0de18c977e932d617e7c223',1,'glm']]], + ['highp_5fint32_5ft_3554',['highp_int32_t',['../a00922.html#ga2c71c8bd9e2fe7d2e93ca250d8b6157f',1,'glm']]], + ['highp_5fint64_3555',['highp_int64',['../a00922.html#ga226a8d52b4e3f77aaa6231135e886aac',1,'glm']]], + ['highp_5fint64_5ft_3556',['highp_int64_t',['../a00922.html#ga73c6abb280a45feeff60f9accaee91f3',1,'glm']]], + ['highp_5fint8_3557',['highp_int8',['../a00922.html#gad0549c902a96a7164e4ac858d5f39dbf',1,'glm']]], + ['highp_5fint8_5ft_3558',['highp_int8_t',['../a00922.html#ga1085c50dd8fbeb5e7e609b1c127492a5',1,'glm']]], + ['highp_5fivec1_3559',['highp_ivec1',['../a00922.html#gacf8589dd33b79b1637fecd546f4ce4ef',1,'glm']]], + ['highp_5fivec2_3560',['highp_ivec2',['../a00922.html#ga9003b53a8b6e86061e9713001e32fb2a',1,'glm']]], + ['highp_5fivec3_3561',['highp_ivec3',['../a00922.html#ga53216c727940d2679d1192600bd29282',1,'glm']]], + ['highp_5fivec4_3562',['highp_ivec4',['../a00922.html#ga81bd289ae2a99f7b957c1d3d7fba278b',1,'glm']]], + ['highp_5fmat2_3563',['highp_mat2',['../a00902.html#ga4d5a0055544a516237dcdace049b143d',1,'glm']]], + ['highp_5fmat2x2_3564',['highp_mat2x2',['../a00902.html#ga2352ae43b284c9f71446674c0208c05d',1,'glm']]], + ['highp_5fmat2x3_3565',['highp_mat2x3',['../a00902.html#ga7a0e3fe41512b0494e598f5c58722f19',1,'glm']]], + ['highp_5fmat2x4_3566',['highp_mat2x4',['../a00902.html#ga61f36a81f2ed1b5f9fc8bc3b26faec8f',1,'glm']]], + ['highp_5fmat3_3567',['highp_mat3',['../a00902.html#ga3fd9849f3da5ed6e3decc3fb10a20b3e',1,'glm']]], + ['highp_5fmat3x2_3568',['highp_mat3x2',['../a00902.html#ga1eda47a00027ec440eac05d63739c71b',1,'glm']]], + ['highp_5fmat3x3_3569',['highp_mat3x3',['../a00902.html#ga2ea82e12f4d7afcfce8f59894d400230',1,'glm']]], + ['highp_5fmat3x4_3570',['highp_mat3x4',['../a00902.html#ga6454b3a26ea30f69de8e44c08a63d1b7',1,'glm']]], + ['highp_5fmat4_3571',['highp_mat4',['../a00902.html#gad72e13d669d039f12ae5afa23148adc1',1,'glm']]], + ['highp_5fmat4x2_3572',['highp_mat4x2',['../a00902.html#gab68b66e6d2c37b804d0baf970fa4f0e5',1,'glm']]], + ['highp_5fmat4x3_3573',['highp_mat4x3',['../a00902.html#ga8d5a4e65fb976e4553b84995b95ecb38',1,'glm']]], + ['highp_5fmat4x4_3574',['highp_mat4x4',['../a00902.html#ga58cc504be0e3b61c48bc91554a767b9f',1,'glm']]], + ['highp_5fquat_3575',['highp_quat',['../a00861.html#gaa2fd8085774376310aeb80588e0eab6e',1,'glm']]], + ['highp_5fu16_3576',['highp_u16',['../a00922.html#ga8e62c883d13f47015f3b70ed88751369',1,'glm']]], + ['highp_5fu16vec1_3577',['highp_u16vec1',['../a00922.html#gad064202b4cf9a2972475c03de657cb39',1,'glm']]], + ['highp_5fu16vec2_3578',['highp_u16vec2',['../a00922.html#ga791b15ceb3f1e09d1a0ec6f3057ca159',1,'glm']]], + ['highp_5fu16vec3_3579',['highp_u16vec3',['../a00922.html#gacfd806749008f0ade6ac4bb9dd91082f',1,'glm']]], + ['highp_5fu16vec4_3580',['highp_u16vec4',['../a00922.html#ga8a85a3d54a8a9e14fe7a1f96196c4f61',1,'glm']]], + ['highp_5fu32_3581',['highp_u32',['../a00922.html#ga7a6f1929464dcc680b16381a4ee5f2cf',1,'glm']]], + ['highp_5fu32vec1_3582',['highp_u32vec1',['../a00922.html#ga0e35a565b9036bfc3989f5e23a0792e3',1,'glm']]], + ['highp_5fu32vec2_3583',['highp_u32vec2',['../a00922.html#ga2f256334f83fba4c2d219e414b51df6c',1,'glm']]], + ['highp_5fu32vec3_3584',['highp_u32vec3',['../a00922.html#gaf14d7a50502464e7cbfa074f24684cb1',1,'glm']]], + ['highp_5fu32vec4_3585',['highp_u32vec4',['../a00922.html#ga22166f0da65038b447f3c5e534fff1c2',1,'glm']]], + ['highp_5fu64_3586',['highp_u64',['../a00922.html#ga0c181fdf06a309691999926b6690c969',1,'glm']]], + ['highp_5fu64vec1_3587',['highp_u64vec1',['../a00922.html#gae4fe774744852c4d7d069be2e05257ab',1,'glm']]], + ['highp_5fu64vec2_3588',['highp_u64vec2',['../a00922.html#ga78f77b8b2d17b431ac5a68c0b5d7050d',1,'glm']]], + ['highp_5fu64vec3_3589',['highp_u64vec3',['../a00922.html#ga41bdabea6e589029659331ba47eb78c1',1,'glm']]], + ['highp_5fu64vec4_3590',['highp_u64vec4',['../a00922.html#ga4f15b41aa24b11cc42ad5798c04a2325',1,'glm']]], + ['highp_5fu8_3591',['highp_u8',['../a00922.html#gacd1259f3a9e8d2a9df5be2d74322ef9c',1,'glm']]], + ['highp_5fu8vec1_3592',['highp_u8vec1',['../a00922.html#ga8408cb76b6550ff01fa0a3024e7b68d2',1,'glm']]], + ['highp_5fu8vec2_3593',['highp_u8vec2',['../a00922.html#ga27585b7c3ab300059f11fcba465f6fd2',1,'glm']]], + ['highp_5fu8vec3_3594',['highp_u8vec3',['../a00922.html#ga45721c13b956eb691cbd6c6c1429167a',1,'glm']]], + ['highp_5fu8vec4_3595',['highp_u8vec4',['../a00922.html#gae0b75ad0fed8c00ddc0b5ce335d31060',1,'glm']]], + ['highp_5fuint16_3596',['highp_uint16',['../a00922.html#ga746dc6da204f5622e395f492997dbf57',1,'glm']]], + ['highp_5fuint16_5ft_3597',['highp_uint16_t',['../a00922.html#gacf54c3330ef60aa3d16cb676c7bcb8c7',1,'glm']]], + ['highp_5fuint32_3598',['highp_uint32',['../a00922.html#ga256b12b650c3f2fb86878fd1c5db8bc3',1,'glm']]], + ['highp_5fuint32_5ft_3599',['highp_uint32_t',['../a00922.html#gae978599c9711ac263ba732d4ac225b0e',1,'glm']]], + ['highp_5fuint64_3600',['highp_uint64',['../a00922.html#gaa38d732f5d4a7bc42a1b43b9d3c141ce',1,'glm']]], + ['highp_5fuint64_5ft_3601',['highp_uint64_t',['../a00922.html#gaa46172d7dc1c7ffe3e78107ff88adf08',1,'glm']]], + ['highp_5fuint8_3602',['highp_uint8',['../a00922.html#ga97432f9979e73e66567361fd01e4cffb',1,'glm']]], + ['highp_5fuint8_5ft_3603',['highp_uint8_t',['../a00922.html#gac4e00a26a2adb5f2c0a7096810df29e5',1,'glm']]], + ['highp_5fumat2_3604',['highp_umat2',['../a00912.html#ga42cbce64c4c1cd121b8437daa6e110de',1,'glm']]], + ['highp_5fumat2x2_3605',['highp_umat2x2',['../a00912.html#ga2dad0e8e8c909d3f5c74aa981384a7b9',1,'glm']]], + ['highp_5fumat2x3_3606',['highp_umat2x3',['../a00912.html#ga2c2bd3cf2b66069fcc70f5ba958ae48a',1,'glm']]], + ['highp_5fumat2x4_3607',['highp_umat2x4',['../a00912.html#ga57eed9d47bfb9a454d1310e84b11b3b8',1,'glm']]], + ['highp_5fumat3_3608',['highp_umat3',['../a00912.html#gaa1143120339b7d2d469d327662e8a172',1,'glm']]], + ['highp_5fumat3x2_3609',['highp_umat3x2',['../a00912.html#gaeed2950bed2c5014c932e78be4164ab6',1,'glm']]], + ['highp_5fumat3x3_3610',['highp_umat3x3',['../a00912.html#ga53564c99d65d1dad4835a9286cee0961',1,'glm']]], + ['highp_5fumat3x4_3611',['highp_umat3x4',['../a00912.html#gae4c04a557db14157f2627e0a5136843b',1,'glm']]], + ['highp_5fumat4_3612',['highp_umat4',['../a00912.html#gaf665e4e78c2cc32a54ab40325738f9c9',1,'glm']]], + ['highp_5fumat4x2_3613',['highp_umat4x2',['../a00912.html#ga1a236f645cb1dfb43f6207a46cd59aea',1,'glm']]], + ['highp_5fumat4x3_3614',['highp_umat4x3',['../a00912.html#ga730c61696dbb99b9a4be0732091a8fd3',1,'glm']]], + ['highp_5fumat4x4_3615',['highp_umat4x4',['../a00912.html#ga0d2e3526972ef22c088a529ebc790023',1,'glm']]], + ['highp_5fuvec1_3616',['highp_uvec1',['../a00922.html#ga1379900164b52f6495186b536e63219a',1,'glm']]], + ['highp_5fuvec2_3617',['highp_uvec2',['../a00922.html#gaff3354c7f0e39561f3594d496f2d12b1',1,'glm']]], + ['highp_5fuvec3_3618',['highp_uvec3',['../a00922.html#gab4c04fa2a3006e977f220f4f58eed009',1,'glm']]], + ['highp_5fuvec4_3619',['highp_uvec4',['../a00922.html#ga8d1fff5168a6ef78c138f99a56f0f588',1,'glm']]], + ['highp_5fvec1_3620',['highp_vec1',['../a00881.html#ga9e8ed21862a897c156c0b2abca70b1e9',1,'glm']]], + ['highp_5fvec2_3621',['highp_vec2',['../a00900.html#gaa92c1954d71b1e7914874bd787b43d1c',1,'glm']]], + ['highp_5fvec3_3622',['highp_vec3',['../a00900.html#gaca61dfaccbf2f58f2d8063a4e76b44a9',1,'glm']]], + ['highp_5fvec4_3623',['highp_vec4',['../a00900.html#gad281decae52948b82feb3a9db8f63a7b',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_5.html b/include/glm/doc/api/search/typedefs_5.html new file mode 100644 index 0000000..fa61be9 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_5.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_5.js b/include/glm/doc/api/search/typedefs_5.js new file mode 100644 index 0000000..c04ab38 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_5.js @@ -0,0 +1,109 @@ +var searchData= +[ + ['i16_3624',['i16',['../a00922.html#ga3ab5fe184343d394fb6c2723c3ee3699',1,'glm']]], + ['i16mat2_3625',['i16mat2',['../a00817.html#gad6e608aaaf7c28f1e659e40b62e1ae07',1,'glm']]], + ['i16mat2x2_3626',['i16mat2x2',['../a00817.html#ga47065ee69513dc0289a613eb3c32df60',1,'glm']]], + ['i16mat2x3_3627',['i16mat2x3',['../a00819.html#gaa71b21babc9d8a224e92d60703979448',1,'glm']]], + ['i16mat2x4_3628',['i16mat2x4',['../a00821.html#ga928a7def71f463e661f197ba9620208b',1,'glm']]], + ['i16mat3_3629',['i16mat3',['../a00825.html#ga7b4f37f881ec3362f134bd944560fe3f',1,'glm']]], + ['i16mat3x2_3630',['i16mat3x2',['../a00823.html#ga72ee4f64752177f6f5978c6a49cfe3db',1,'glm']]], + ['i16mat3x3_3631',['i16mat3x3',['../a00825.html#ga361b2094238f92774c8db5093b44566b',1,'glm']]], + ['i16mat3x4_3632',['i16mat3x4',['../a00827.html#ga71beebbf7447d8a32e5cc681d2db7849',1,'glm']]], + ['i16mat4_3633',['i16mat4',['../a00833.html#ga6ed05bec8bbe6c06fa9c7dc981c892f4',1,'glm']]], + ['i16mat4x2_3634',['i16mat4x2',['../a00829.html#ga1cd9115b5627b6e9c0ce423d450ded3b',1,'glm']]], + ['i16mat4x3_3635',['i16mat4x3',['../a00831.html#gae16035341f36e5afd002bdc7fc19ffbd',1,'glm']]], + ['i16mat4x4_3636',['i16mat4x4',['../a00833.html#ga3e9865fa750ba5a1f2a78a64d3128e96',1,'glm']]], + ['i16vec1_3637',['i16vec1',['../a00883.html#gafe730798732aa7b0647096a004db1b1c',1,'glm']]], + ['i16vec2_3638',['i16vec2',['../a00884.html#ga2996630ba7b10535af8e065cf326f761',1,'glm']]], + ['i16vec3_3639',['i16vec3',['../a00885.html#gae9c90a867a6026b1f6eab00456f3fb8b',1,'glm']]], + ['i16vec4_3640',['i16vec4',['../a00886.html#ga550831bfc26d1e0101c1cb3d79938c06',1,'glm']]], + ['i32_3641',['i32',['../a00922.html#ga96faea43ac5f875d2d3ffbf8d213e3eb',1,'glm']]], + ['i32mat2_3642',['i32mat2',['../a00817.html#ga29cc4fc2d059a71f654db8ffd6a0d1c8',1,'glm']]], + ['i32mat2x2_3643',['i32mat2x2',['../a00817.html#gaf39b46daac3fdc9580a8186d50bdc49b',1,'glm']]], + ['i32mat2x3_3644',['i32mat2x3',['../a00819.html#gabda3a64e16d3cf3826b630aee9e01421',1,'glm']]], + ['i32mat2x4_3645',['i32mat2x4',['../a00821.html#gac91b19cd25751d92107963f2eb819477',1,'glm']]], + ['i32mat3_3646',['i32mat3',['../a00825.html#gaeee8d25ed2061b68720bcb831327ffd4',1,'glm']]], + ['i32mat3x2_3647',['i32mat3x2',['../a00823.html#ga57877f8bbc5921651ad29935792f41a0',1,'glm']]], + ['i32mat3x3_3648',['i32mat3x3',['../a00825.html#ga75af30ee79bc6f01be007e6762e369aa',1,'glm']]], + ['i32mat3x4_3649',['i32mat3x4',['../a00827.html#gaa08c324017c156ad33b5240f38b1e2ae',1,'glm']]], + ['i32mat4_3650',['i32mat4',['../a00833.html#gae251517f782cb11ff0d9b79fcd13540e',1,'glm']]], + ['i32mat4x2_3651',['i32mat4x2',['../a00829.html#ga9b4aeda66c6da4e92c97977ac9c8423c',1,'glm']]], + ['i32mat4x3_3652',['i32mat4x3',['../a00831.html#gaeac0a48bdf2051127669ea8f52661b1f',1,'glm']]], + ['i32mat4x4_3653',['i32mat4x4',['../a00833.html#ga70bc41754e5d5a63ea90b04fd29a7e38',1,'glm']]], + ['i32vec1_3654',['i32vec1',['../a00883.html#ga54b8a4e0f5a7203a821bf8e9c1265bcf',1,'glm']]], + ['i32vec2_3655',['i32vec2',['../a00884.html#ga8b44026374982dcd1e52d22bac99247e',1,'glm']]], + ['i32vec3_3656',['i32vec3',['../a00885.html#ga7f526b5cccef126a2ebcf9bdd890394e',1,'glm']]], + ['i32vec4_3657',['i32vec4',['../a00886.html#ga866a05905c49912309ed1fa5f5980e61',1,'glm']]], + ['i64_3658',['i64',['../a00922.html#gadb997e409103d4da18abd837e636a496',1,'glm']]], + ['i64mat2_3659',['i64mat2',['../a00817.html#ga991f07e78a27044a26b55befae3a769a',1,'glm']]], + ['i64mat2x2_3660',['i64mat2x2',['../a00817.html#ga41c7a91e1c92094912f8bc5b823c1ce7',1,'glm']]], + ['i64mat2x3_3661',['i64mat2x3',['../a00819.html#ga086f53f13530ed954ed6845c27e2f765',1,'glm']]], + ['i64mat2x4_3662',['i64mat2x4',['../a00821.html#ga2b589f8bcde400f09bd606476c715f28',1,'glm']]], + ['i64mat3_3663',['i64mat3',['../a00825.html#ga94bbe4d004cd4507d370e529540e5c40',1,'glm']]], + ['i64mat3x2_3664',['i64mat3x2',['../a00823.html#ga87de638d4758ece144b404acbdbaaa74',1,'glm']]], + ['i64mat3x3_3665',['i64mat3x3',['../a00825.html#ga2d994eec234bb2f1f12d6c89519099e3',1,'glm']]], + ['i64mat3x4_3666',['i64mat3x4',['../a00827.html#gae298b2ac37981b232789b5a313c81ccc',1,'glm']]], + ['i64mat4_3667',['i64mat4',['../a00833.html#ga137dbc4ffc97899595676e737df3de71',1,'glm']]], + ['i64mat4x2_3668',['i64mat4x2',['../a00829.html#gaa078eeba33f2ee96c60cf7cab7299e66',1,'glm']]], + ['i64mat4x3_3669',['i64mat4x3',['../a00831.html#gafa6ab9b0940008de60ee78bbebba2306',1,'glm']]], + ['i64mat4x4_3670',['i64mat4x4',['../a00833.html#gaa56fe396b8efe61daadfd55782e1df93',1,'glm']]], + ['i64vec1_3671',['i64vec1',['../a00883.html#ga2b65767f8b5aed1bd1cf86c541662b50',1,'glm']]], + ['i64vec2_3672',['i64vec2',['../a00884.html#ga48310188e1d0c616bf8d78c92447523b',1,'glm']]], + ['i64vec3_3673',['i64vec3',['../a00885.html#ga667948cfe6fb3d6606c750729ec49f77',1,'glm']]], + ['i64vec4_3674',['i64vec4',['../a00886.html#gaa4e31c3d9de067029efeb161a44b0232',1,'glm']]], + ['i8_3675',['i8',['../a00922.html#ga302ec977b0c0c3ea245b6c9275495355',1,'glm']]], + ['i8mat2_3676',['i8mat2',['../a00817.html#ga982fb047723bc5fd4dd2106d8bcf0dfe',1,'glm']]], + ['i8mat2x2_3677',['i8mat2x2',['../a00817.html#ga2588340ecf113b18a1bb08c20f7c2989',1,'glm']]], + ['i8mat2x3_3678',['i8mat2x3',['../a00819.html#ga07be66899f390d383f7c9b59d03a711d',1,'glm']]], + ['i8mat2x4_3679',['i8mat2x4',['../a00821.html#ga16f963e233d40cae586c0670605acf64',1,'glm']]], + ['i8mat3_3680',['i8mat3',['../a00825.html#ga09dd4ed01cbdbaabea98ee994b6ae578',1,'glm']]], + ['i8mat3x2_3681',['i8mat3x2',['../a00823.html#ga457df325132fb92e9f023fae7ee6ecec',1,'glm']]], + ['i8mat3x3_3682',['i8mat3x3',['../a00825.html#gac6702a5f34779f892e8bcd4f9db8cc96',1,'glm']]], + ['i8mat3x4_3683',['i8mat3x4',['../a00827.html#ga92da3ce32ed1bdede71bc7028a856c25',1,'glm']]], + ['i8mat4_3684',['i8mat4',['../a00833.html#ga5a13150a001c529121c442acf997c1da',1,'glm']]], + ['i8mat4x2_3685',['i8mat4x2',['../a00829.html#ga9a40d61581a8f4db0c94eb6507fc441a',1,'glm']]], + ['i8mat4x3_3686',['i8mat4x3',['../a00831.html#ga81ddc1238242fea1d7462050e5609889',1,'glm']]], + ['i8mat4x4_3687',['i8mat4x4',['../a00833.html#gace28977d2e296a7d23fa466f55b114f7',1,'glm']]], + ['i8vec1_3688',['i8vec1',['../a00883.html#ga7e80d927ff0a3861ced68dfff8a4020b',1,'glm']]], + ['i8vec2_3689',['i8vec2',['../a00884.html#gad06935764d78f43f9d542c784c2212ec',1,'glm']]], + ['i8vec3_3690',['i8vec3',['../a00885.html#ga5a08d36cf7917cd19d081a603d0eae3e',1,'glm']]], + ['i8vec4_3691',['i8vec4',['../a00886.html#ga4177a44206121dabc8c4ff1c0f544574',1,'glm']]], + ['imat2_3692',['imat2',['../a00816.html#gaea0d06425d5020c7302df6cb412b9477',1,'glm']]], + ['imat2x2_3693',['imat2x2',['../a00816.html#ga8f9969e26ffeef99610abfd22577f5f1',1,'glm']]], + ['imat2x3_3694',['imat2x3',['../a00818.html#ga73766aa25add75d432e8d12890558edf',1,'glm']]], + ['imat2x4_3695',['imat2x4',['../a00820.html#ga4b0d247c6fe04618569092682ce26934',1,'glm']]], + ['imat3_3696',['imat3',['../a00824.html#gaf317be550c62aa66309b251526ee40ec',1,'glm']]], + ['imat3x2_3697',['imat3x2',['../a00822.html#gad47291b91ea6304a7c7e2c02caf5fad1',1,'glm']]], + ['imat3x3_3698',['imat3x3',['../a00824.html#gab82b19595eb6bad1bdc164b8d1ace60f',1,'glm']]], + ['imat3x4_3699',['imat3x4',['../a00826.html#ga03dcdd1a5cc6a0f59afaee28f68649c2',1,'glm']]], + ['imat4_3700',['imat4',['../a00832.html#gace7a6b13b37c7a530c676caf07e8876c',1,'glm']]], + ['imat4x2_3701',['imat4x2',['../a00828.html#ga422267d95355713db46e782b39746c0a',1,'glm']]], + ['imat4x3_3702',['imat4x3',['../a00830.html#ga5b02c51f7ee5924911b3d82faf3e2cc2',1,'glm']]], + ['imat4x4_3703',['imat4x4',['../a00832.html#ga76545537d9bf3a1be1458dd0a5ebbe1d',1,'glm']]], + ['int1_3704',['int1',['../a00933.html#ga0670a2111b5e4a6410bd027fa0232fc3',1,'glm']]], + ['int16_3705',['int16',['../a00868.html#ga259fa4834387bd68627ddf37bb3ebdb9',1,'glm']]], + ['int16_5ft_3706',['int16_t',['../a00922.html#gae8f5e3e964ca2ae240adc2c0d74adede',1,'glm']]], + ['int1x1_3707',['int1x1',['../a00933.html#ga056ffe02d3a45af626f8e62221881c7a',1,'glm']]], + ['int2_3708',['int2',['../a00933.html#gafe3a8fd56354caafe24bfe1b1e3ad22a',1,'glm']]], + ['int2x2_3709',['int2x2',['../a00933.html#ga4e5ce477c15836b21e3c42daac68554d',1,'glm']]], + ['int2x3_3710',['int2x3',['../a00933.html#ga197ded5ad8354f6b6fb91189d7a269b3',1,'glm']]], + ['int2x4_3711',['int2x4',['../a00933.html#ga2749d59a7fddbac44f34ba78e57ef807',1,'glm']]], + ['int3_3712',['int3',['../a00933.html#ga909c38a425f215a50c847145d7da09f0',1,'glm']]], + ['int32_3713',['int32',['../a00868.html#ga43d43196463bde49cb067f5c20ab8481',1,'glm']]], + ['int32_5ft_3714',['int32_t',['../a00922.html#ga042ef09ff2f0cb24a36f541bcb3a3710',1,'glm']]], + ['int3x2_3715',['int3x2',['../a00933.html#gaa4cbe16a92cf3664376c7a2fc5126aa8',1,'glm']]], + ['int3x3_3716',['int3x3',['../a00933.html#ga15c9649286f0bf431bdf9b3509580048',1,'glm']]], + ['int3x4_3717',['int3x4',['../a00933.html#gaacac46ddc7d15d0f9529d05c92946a0f',1,'glm']]], + ['int4_3718',['int4',['../a00933.html#gaecdef18c819c205aeee9f94dc93de56a',1,'glm']]], + ['int4x2_3719',['int4x2',['../a00933.html#ga97a39dd9bc7d572810d80b8467cbffa1',1,'glm']]], + ['int4x3_3720',['int4x3',['../a00933.html#gae4a2c53f14aeec9a17c2b81142b7e82d',1,'glm']]], + ['int4x4_3721',['int4x4',['../a00933.html#ga04dee1552424198b8f58b377c2ee00d8',1,'glm']]], + ['int64_3722',['int64',['../a00868.html#gaff5189f97f9e842d9636a0f240001b2e',1,'glm']]], + ['int64_5ft_3723',['int64_t',['../a00922.html#ga322a7d7d2c2c68994dc872a33de63c61',1,'glm']]], + ['int8_3724',['int8',['../a00868.html#ga1b956fe1df85f3c132b21edb4e116458',1,'glm']]], + ['int8_5ft_3725',['int8_t',['../a00922.html#ga4bf09d8838a86866b39ee6e109341645',1,'glm']]], + ['ivec1_3726',['ivec1',['../a00882.html#gac5197e18f85a147ad178c1a786afcc4d',1,'glm']]], + ['ivec2_3727',['ivec2',['../a00899.html#gaed4cbdb97920de4fabfdff438379ba40',1,'glm']]], + ['ivec3_3728',['ivec3',['../a00899.html#gad540fb5cf526e14b4729c2cb34e7b962',1,'glm']]], + ['ivec4_3729',['ivec4',['../a00899.html#ga791d3c7534500f15ef3eb97113f3f82a',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_6.html b/include/glm/doc/api/search/typedefs_6.html new file mode 100644 index 0000000..8cd2ed2 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_6.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_6.js b/include/glm/doc/api/search/typedefs_6.js new file mode 100644 index 0000000..01ad9c6 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_6.js @@ -0,0 +1,188 @@ +var searchData= +[ + ['lowp_5fbvec1_3730',['lowp_bvec1',['../a00876.html#ga24a3d364e2ddd444f5b9e7975bbef8f9',1,'glm']]], + ['lowp_5fbvec2_3731',['lowp_bvec2',['../a00900.html#ga5a5452140650988b94d5716e4d872465',1,'glm']]], + ['lowp_5fbvec3_3732',['lowp_bvec3',['../a00900.html#ga79e0922a977662a8fd39d7829be3908b',1,'glm']]], + ['lowp_5fbvec4_3733',['lowp_bvec4',['../a00900.html#ga15ac87724048ab7169bb5d3572939dd3',1,'glm']]], + ['lowp_5fddualquat_3734',['lowp_ddualquat',['../a00935.html#gab4c5103338af3dac7e0fbc86895a3f1a',1,'glm']]], + ['lowp_5fdmat2_3735',['lowp_dmat2',['../a00902.html#gad8e2727a6e7aa68280245bb0022118e1',1,'glm']]], + ['lowp_5fdmat2x2_3736',['lowp_dmat2x2',['../a00902.html#gac61b94f5d9775f83f321bac899322fe2',1,'glm']]], + ['lowp_5fdmat2x3_3737',['lowp_dmat2x3',['../a00902.html#gaf6bf2f5bde7ad5b9c289f777b93094af',1,'glm']]], + ['lowp_5fdmat2x4_3738',['lowp_dmat2x4',['../a00902.html#ga97507a31ecee8609887d0f23bbde92c7',1,'glm']]], + ['lowp_5fdmat3_3739',['lowp_dmat3',['../a00902.html#ga0cab80beee64a5f8d2ae4e823983063a',1,'glm']]], + ['lowp_5fdmat3x2_3740',['lowp_dmat3x2',['../a00902.html#ga1e0ea3fba496bc7c6f620d2590acb66b',1,'glm']]], + ['lowp_5fdmat3x3_3741',['lowp_dmat3x3',['../a00902.html#gac017848a9df570f60916a21a297b1e8e',1,'glm']]], + ['lowp_5fdmat3x4_3742',['lowp_dmat3x4',['../a00902.html#ga93add35d2a44c5830978b827e8c295e8',1,'glm']]], + ['lowp_5fdmat4_3743',['lowp_dmat4',['../a00902.html#ga708bc5b91bbfedd21debac8dcf2a64cd',1,'glm']]], + ['lowp_5fdmat4x2_3744',['lowp_dmat4x2',['../a00902.html#ga382dc5295cead78766239a8457abfa98',1,'glm']]], + ['lowp_5fdmat4x3_3745',['lowp_dmat4x3',['../a00902.html#ga3d7ea07da7c6e5c81a3f4c8b3d44056e',1,'glm']]], + ['lowp_5fdmat4x4_3746',['lowp_dmat4x4',['../a00902.html#ga5b0413198b7e9f061f7534a221c9dac9',1,'glm']]], + ['lowp_5fdquat_3747',['lowp_dquat',['../a00858.html#ga9e6e5f42e67dd5877350ba485c191f1c',1,'glm']]], + ['lowp_5fdualquat_3748',['lowp_dualquat',['../a00935.html#gade05d29ebd4deea0f883d0e1bb4169aa',1,'glm']]], + ['lowp_5fdvec1_3749',['lowp_dvec1',['../a00879.html#gaf906eb86b6e96c35138d0e4928e1435a',1,'glm']]], + ['lowp_5fdvec2_3750',['lowp_dvec2',['../a00900.html#ga108086730d086b7f6f7a033955dfb9c3',1,'glm']]], + ['lowp_5fdvec3_3751',['lowp_dvec3',['../a00900.html#ga42c518b2917e19ce6946a84c64a3a4b2',1,'glm']]], + ['lowp_5fdvec4_3752',['lowp_dvec4',['../a00900.html#ga0b4432cb8d910e406576d10d802e190d',1,'glm']]], + ['lowp_5ff32_3753',['lowp_f32',['../a00922.html#gaeea53879fc327293cf3352a409b7867b',1,'glm']]], + ['lowp_5ff32mat2_3754',['lowp_f32mat2',['../a00922.html#ga52409bc6d4a2ce3421526c069220d685',1,'glm']]], + ['lowp_5ff32mat2x2_3755',['lowp_f32mat2x2',['../a00922.html#ga1d091b6abfba1772450e1745a06525bc',1,'glm']]], + ['lowp_5ff32mat2x3_3756',['lowp_f32mat2x3',['../a00922.html#ga961ccb34cd1a5654c772c8709e001dc5',1,'glm']]], + ['lowp_5ff32mat2x4_3757',['lowp_f32mat2x4',['../a00922.html#gacc6bf0209dda0c7c14851a646071c974',1,'glm']]], + ['lowp_5ff32mat3_3758',['lowp_f32mat3',['../a00922.html#ga4187f89f196505b40e63f516139511e5',1,'glm']]], + ['lowp_5ff32mat3x2_3759',['lowp_f32mat3x2',['../a00922.html#gac53f9d7ab04eace67adad026092fb1e8',1,'glm']]], + ['lowp_5ff32mat3x3_3760',['lowp_f32mat3x3',['../a00922.html#ga841211b641cff1fcf861bdb14e5e4abc',1,'glm']]], + ['lowp_5ff32mat3x4_3761',['lowp_f32mat3x4',['../a00922.html#ga21b1b22dec013a72656e3644baf8a1e1',1,'glm']]], + ['lowp_5ff32mat4_3762',['lowp_f32mat4',['../a00922.html#ga766aed2871e6173a81011a877f398f04',1,'glm']]], + ['lowp_5ff32mat4x2_3763',['lowp_f32mat4x2',['../a00922.html#gae6f3fcb702a666de07650c149cfa845a',1,'glm']]], + ['lowp_5ff32mat4x3_3764',['lowp_f32mat4x3',['../a00922.html#gac21eda58a1475449a5709b412ebd776c',1,'glm']]], + ['lowp_5ff32mat4x4_3765',['lowp_f32mat4x4',['../a00922.html#ga4143d129898f91545948c46859adce44',1,'glm']]], + ['lowp_5ff32quat_3766',['lowp_f32quat',['../a00922.html#gaa3ba60ef8f69c6aeb1629594eaa95347',1,'glm']]], + ['lowp_5ff32vec1_3767',['lowp_f32vec1',['../a00922.html#ga43e5b41c834fcaf4db5a831c0e28128e',1,'glm']]], + ['lowp_5ff32vec2_3768',['lowp_f32vec2',['../a00922.html#gaf3b694b2b8ded7e0b9f07b061917e1a0',1,'glm']]], + ['lowp_5ff32vec3_3769',['lowp_f32vec3',['../a00922.html#gaf739a2cd7b81783a43148b53e40d983b',1,'glm']]], + ['lowp_5ff32vec4_3770',['lowp_f32vec4',['../a00922.html#ga4e2e1debe022074ab224c9faf856d374',1,'glm']]], + ['lowp_5ff64_3771',['lowp_f64',['../a00922.html#gabc7a97c07cbfac8e35eb5e63beb4b679',1,'glm']]], + ['lowp_5ff64mat2_3772',['lowp_f64mat2',['../a00922.html#gafc730f6b4242763b0eda0ffa25150292',1,'glm']]], + ['lowp_5ff64mat2x2_3773',['lowp_f64mat2x2',['../a00922.html#ga771fda9109933db34f808d92b9b84d7e',1,'glm']]], + ['lowp_5ff64mat2x3_3774',['lowp_f64mat2x3',['../a00922.html#ga39e90adcffe33264bd608fa9c6bd184b',1,'glm']]], + ['lowp_5ff64mat2x4_3775',['lowp_f64mat2x4',['../a00922.html#ga50265a202fbfe0a25fc70066c31d9336',1,'glm']]], + ['lowp_5ff64mat3_3776',['lowp_f64mat3',['../a00922.html#ga58119a41d143ebaea0df70fe882e8a40',1,'glm']]], + ['lowp_5ff64mat3x2_3777',['lowp_f64mat3x2',['../a00922.html#gab0eb2d65514ee3e49905aa2caad8c0ad',1,'glm']]], + ['lowp_5ff64mat3x3_3778',['lowp_f64mat3x3',['../a00922.html#gac8f8a12ee03105ef8861dc652434e3b7',1,'glm']]], + ['lowp_5ff64mat3x4_3779',['lowp_f64mat3x4',['../a00922.html#gade8d1edfb23996ab6c622e65e3893271',1,'glm']]], + ['lowp_5ff64mat4_3780',['lowp_f64mat4',['../a00922.html#ga7451266e67794bd1125163502bc4a570',1,'glm']]], + ['lowp_5ff64mat4x2_3781',['lowp_f64mat4x2',['../a00922.html#gab0cecb80fd106bc369b9e46a165815ce',1,'glm']]], + ['lowp_5ff64mat4x3_3782',['lowp_f64mat4x3',['../a00922.html#gae731613b25db3a5ef5a05d21e57a57d3',1,'glm']]], + ['lowp_5ff64mat4x4_3783',['lowp_f64mat4x4',['../a00922.html#ga8c9cd734e03cd49674f3e287aa4a6f95',1,'glm']]], + ['lowp_5ff64quat_3784',['lowp_f64quat',['../a00922.html#gaa3ee2bc4af03cc06578b66b3e3f878ae',1,'glm']]], + ['lowp_5ff64vec1_3785',['lowp_f64vec1',['../a00922.html#gaf2d02c5f4d59135b9bc524fe317fd26b',1,'glm']]], + ['lowp_5ff64vec2_3786',['lowp_f64vec2',['../a00922.html#ga4e641a54d70c81eabf56c25c966d04bd',1,'glm']]], + ['lowp_5ff64vec3_3787',['lowp_f64vec3',['../a00922.html#gae7a4711107b7d078fc5f03ce2227b90b',1,'glm']]], + ['lowp_5ff64vec4_3788',['lowp_f64vec4',['../a00922.html#gaa666bb9e6d204d3bea0b3a39a3a335f4',1,'glm']]], + ['lowp_5ffdualquat_3789',['lowp_fdualquat',['../a00935.html#gaa38f671be25a7f3b136a452a8bb42860',1,'glm']]], + ['lowp_5ffloat32_3790',['lowp_float32',['../a00922.html#ga41b0d390bd8cc827323b1b3816ff4bf8',1,'glm']]], + ['lowp_5ffloat32_5ft_3791',['lowp_float32_t',['../a00922.html#gaea881cae4ddc6c0fbf7cc5b08177ca5b',1,'glm']]], + ['lowp_5ffloat64_3792',['lowp_float64',['../a00922.html#ga3714dab2c16a6545a405cb0c3b3aaa6f',1,'glm']]], + ['lowp_5ffloat64_5ft_3793',['lowp_float64_t',['../a00922.html#ga7286a37076a09da140df18bfa75d4e38',1,'glm']]], + ['lowp_5ffmat2_3794',['lowp_fmat2',['../a00922.html#ga5bba0ce31210e274f73efacd3364c03f',1,'glm']]], + ['lowp_5ffmat2x2_3795',['lowp_fmat2x2',['../a00922.html#gab0feb11edd0d3ab3e8ed996d349a5066',1,'glm']]], + ['lowp_5ffmat2x3_3796',['lowp_fmat2x3',['../a00922.html#ga71cdb53801ed4c3aadb3603c04723210',1,'glm']]], + ['lowp_5ffmat2x4_3797',['lowp_fmat2x4',['../a00922.html#gaab217601c74974a84acbca428123ecf7',1,'glm']]], + ['lowp_5ffmat3_3798',['lowp_fmat3',['../a00922.html#ga83079315e230e8f39728f4bf0d2f9a9b',1,'glm']]], + ['lowp_5ffmat3x2_3799',['lowp_fmat3x2',['../a00922.html#ga49b98e7d71804af45d86886a489e633c',1,'glm']]], + ['lowp_5ffmat3x3_3800',['lowp_fmat3x3',['../a00922.html#gaba56275dd04a7a61560b0e8fa5d365b4',1,'glm']]], + ['lowp_5ffmat3x4_3801',['lowp_fmat3x4',['../a00922.html#ga28733aec7288191b314d42154fd0b690',1,'glm']]], + ['lowp_5ffmat4_3802',['lowp_fmat4',['../a00922.html#ga5803cb9ae26399762d8bba9e0b2fc09f',1,'glm']]], + ['lowp_5ffmat4x2_3803',['lowp_fmat4x2',['../a00922.html#ga5868c2dcce41cc3ea5edcaeae239f62c',1,'glm']]], + ['lowp_5ffmat4x3_3804',['lowp_fmat4x3',['../a00922.html#ga5e649bbdb135fbcb4bfe950f4c73a444',1,'glm']]], + ['lowp_5ffmat4x4_3805',['lowp_fmat4x4',['../a00922.html#gac2f5263708ac847b361a9841e74ddf9f',1,'glm']]], + ['lowp_5ffvec1_3806',['lowp_fvec1',['../a00922.html#ga346b2336fff168a7e0df1583aae3e5a5',1,'glm']]], + ['lowp_5ffvec2_3807',['lowp_fvec2',['../a00922.html#ga62a32c31f4e2e8ca859663b6e3289a2d',1,'glm']]], + ['lowp_5ffvec3_3808',['lowp_fvec3',['../a00922.html#ga40b5c557efebb5bb99d6b9aa81095afa',1,'glm']]], + ['lowp_5ffvec4_3809',['lowp_fvec4',['../a00922.html#ga755484ffbe39ae3db2875953ed04e7b7',1,'glm']]], + ['lowp_5fi16_3810',['lowp_i16',['../a00922.html#ga392b673fd10847bfb78fb808c6cf8ff7',1,'glm']]], + ['lowp_5fi16vec1_3811',['lowp_i16vec1',['../a00922.html#ga501a2f313f1c220eef4ab02bdabdc3c6',1,'glm']]], + ['lowp_5fi16vec2_3812',['lowp_i16vec2',['../a00922.html#ga7cac84b520a6b57f2fbd880d3d63c51b',1,'glm']]], + ['lowp_5fi16vec3_3813',['lowp_i16vec3',['../a00922.html#gab69ef9cbc2a9214bf5596c528c801b72',1,'glm']]], + ['lowp_5fi16vec4_3814',['lowp_i16vec4',['../a00922.html#ga1d47d94d17c2406abdd1f087a816e387',1,'glm']]], + ['lowp_5fi32_3815',['lowp_i32',['../a00922.html#ga7ff73a45cea9613ebf1a9fad0b9f82ac',1,'glm']]], + ['lowp_5fi32vec1_3816',['lowp_i32vec1',['../a00922.html#gae31ac3608cf643ceffd6554874bec4a0',1,'glm']]], + ['lowp_5fi32vec2_3817',['lowp_i32vec2',['../a00922.html#ga867a3c2d99ab369a454167d2c0a24dbd',1,'glm']]], + ['lowp_5fi32vec3_3818',['lowp_i32vec3',['../a00922.html#ga5fe17c87ede1b1b4d92454cff4da076d',1,'glm']]], + ['lowp_5fi32vec4_3819',['lowp_i32vec4',['../a00922.html#gac9b2eb4296ffe50a32eacca9ed932c08',1,'glm']]], + ['lowp_5fi64_3820',['lowp_i64',['../a00922.html#ga354736e0c645099cd44c42fb2f87c2b8',1,'glm']]], + ['lowp_5fi64vec1_3821',['lowp_i64vec1',['../a00922.html#gab0f7d875db5f3cc9f3168c5a0ed56437',1,'glm']]], + ['lowp_5fi64vec2_3822',['lowp_i64vec2',['../a00922.html#gab485c48f06a4fdd6b8d58d343bb49f3c',1,'glm']]], + ['lowp_5fi64vec3_3823',['lowp_i64vec3',['../a00922.html#ga5cb1dc9e8d300c2cdb0d7ff2308fa36c',1,'glm']]], + ['lowp_5fi64vec4_3824',['lowp_i64vec4',['../a00922.html#gabb4229a4c1488bf063eed0c45355bb9c',1,'glm']]], + ['lowp_5fi8_3825',['lowp_i8',['../a00922.html#ga552a6bde5e75984efb0f863278da2e54',1,'glm']]], + ['lowp_5fi8vec1_3826',['lowp_i8vec1',['../a00922.html#ga036d6c7ca9fbbdc5f3871bfcb937c85c',1,'glm']]], + ['lowp_5fi8vec2_3827',['lowp_i8vec2',['../a00922.html#gac03e5099d27eeaa74b6016ea435a1df2',1,'glm']]], + ['lowp_5fi8vec3_3828',['lowp_i8vec3',['../a00922.html#gae2f43ace6b5b33ab49516d9e40af1845',1,'glm']]], + ['lowp_5fi8vec4_3829',['lowp_i8vec4',['../a00922.html#ga6d388e9b9aa1b389f0672d9c7dfc61c5',1,'glm']]], + ['lowp_5fimat2_3830',['lowp_imat2',['../a00912.html#gaa0bff0be804142bb16d441aec0a7962e',1,'glm']]], + ['lowp_5fimat2x2_3831',['lowp_imat2x2',['../a00912.html#ga1437ac5564f56cbce31a920f363e166b',1,'glm']]], + ['lowp_5fimat2x3_3832',['lowp_imat2x3',['../a00912.html#ga8ac369996a5362cdf1abf8c36e3172f3',1,'glm']]], + ['lowp_5fimat2x4_3833',['lowp_imat2x4',['../a00912.html#ga6fe559c2ca940c01b91cf8c1de37c026',1,'glm']]], + ['lowp_5fimat3_3834',['lowp_imat3',['../a00912.html#ga69bfe668f4170379fc1f35d82b060c43',1,'glm']]], + ['lowp_5fimat3x2_3835',['lowp_imat3x2',['../a00912.html#gac59ceadfa1b442c50784b5e16523d1a1',1,'glm']]], + ['lowp_5fimat3x3_3836',['lowp_imat3x3',['../a00912.html#gaedb738acb8400e3dd8ab0ea6ee3a60cb',1,'glm']]], + ['lowp_5fimat3x4_3837',['lowp_imat3x4',['../a00912.html#ga05c27e87f62296a72f96d3cc4d9b3b9e',1,'glm']]], + ['lowp_5fimat4_3838',['lowp_imat4',['../a00912.html#gad1e77f7270cad461ca4fcb4c3ec2e98c',1,'glm']]], + ['lowp_5fimat4x2_3839',['lowp_imat4x2',['../a00912.html#ga838ff669fc2f7693f34356481603815a',1,'glm']]], + ['lowp_5fimat4x3_3840',['lowp_imat4x3',['../a00912.html#gaf3951f4c614e337fcd66b7bd43c688fb',1,'glm']]], + ['lowp_5fimat4x4_3841',['lowp_imat4x4',['../a00912.html#gadb109b0a3ddb1471ddff260980eace7d',1,'glm']]], + ['lowp_5fint16_3842',['lowp_int16',['../a00922.html#ga698e36b01167fc0f037889334dce8def',1,'glm']]], + ['lowp_5fint16_5ft_3843',['lowp_int16_t',['../a00922.html#ga8b2cd8d31eb345b2d641d9261c38db1a',1,'glm']]], + ['lowp_5fint32_3844',['lowp_int32',['../a00922.html#ga864aabca5f3296e176e0c3ed9cc16b02',1,'glm']]], + ['lowp_5fint32_5ft_3845',['lowp_int32_t',['../a00922.html#ga0350631d35ff800e6133ac6243b13cbc',1,'glm']]], + ['lowp_5fint64_3846',['lowp_int64',['../a00922.html#gaf645b1a60203b39c0207baff5e3d8c3c',1,'glm']]], + ['lowp_5fint64_5ft_3847',['lowp_int64_t',['../a00922.html#gaebf341fc4a5be233f7dde962c2e33847',1,'glm']]], + ['lowp_5fint8_3848',['lowp_int8',['../a00922.html#ga760bcf26fdb23a2c3ecad3c928a19ae6',1,'glm']]], + ['lowp_5fint8_5ft_3849',['lowp_int8_t',['../a00922.html#ga119c41d73fe9977358174eb3ac1035a3',1,'glm']]], + ['lowp_5fivec1_3850',['lowp_ivec1',['../a00922.html#ga68a0c853c31c372ee8e41358810b0c17',1,'glm']]], + ['lowp_5fivec2_3851',['lowp_ivec2',['../a00922.html#gaf6e144ceb74bc745aee2d2acaf19b1fd',1,'glm']]], + ['lowp_5fivec3_3852',['lowp_ivec3',['../a00922.html#ga0b0ead399b82f280988acb3b8c3f9995',1,'glm']]], + ['lowp_5fivec4_3853',['lowp_ivec4',['../a00922.html#gaec9094fb1d7d627a1410f3a10330df6d',1,'glm']]], + ['lowp_5fmat2_3854',['lowp_mat2',['../a00902.html#gae400c4ce1f5f3e1fa12861b2baed331a',1,'glm']]], + ['lowp_5fmat2x2_3855',['lowp_mat2x2',['../a00902.html#ga2df7cdaf9a571ce7a1b09435f502c694',1,'glm']]], + ['lowp_5fmat2x3_3856',['lowp_mat2x3',['../a00902.html#ga3eee3a74d0f1de8635d846dfb29ec4bb',1,'glm']]], + ['lowp_5fmat2x4_3857',['lowp_mat2x4',['../a00902.html#gade27f8324a16626cbce5d3e7da66b070',1,'glm']]], + ['lowp_5fmat3_3858',['lowp_mat3',['../a00902.html#ga6271ebc85ed778ccc15458c3d86fc854',1,'glm']]], + ['lowp_5fmat3x2_3859',['lowp_mat3x2',['../a00902.html#gaabf6cf90fd31efe25c94965507e98390',1,'glm']]], + ['lowp_5fmat3x3_3860',['lowp_mat3x3',['../a00902.html#ga63362cb4a63fc1be7d2e49cd5d574c84',1,'glm']]], + ['lowp_5fmat3x4_3861',['lowp_mat3x4',['../a00902.html#gac5fc6786688eff02904ca5e7d6960092',1,'glm']]], + ['lowp_5fmat4_3862',['lowp_mat4',['../a00902.html#ga2dedee030500865267cd5851c00c139d',1,'glm']]], + ['lowp_5fmat4x2_3863',['lowp_mat4x2',['../a00902.html#gafa3cdb8f24d09d761ec9ae2a4c7e5e21',1,'glm']]], + ['lowp_5fmat4x3_3864',['lowp_mat4x3',['../a00902.html#ga534c3ef5c3b8fdd8656b6afc205b4b77',1,'glm']]], + ['lowp_5fmat4x4_3865',['lowp_mat4x4',['../a00902.html#ga686468a9a815bd4db8cddae42a6d6b87',1,'glm']]], + ['lowp_5fquat_3866',['lowp_quat',['../a00861.html#gade62c5316c1c11a79c34c00c189558eb',1,'glm']]], + ['lowp_5fu16_3867',['lowp_u16',['../a00922.html#ga504ce1631cb2ac02fcf1d44d8c2aa126',1,'glm']]], + ['lowp_5fu16vec1_3868',['lowp_u16vec1',['../a00922.html#gaa6aab4ee7189b86716f5d7015d43021d',1,'glm']]], + ['lowp_5fu16vec2_3869',['lowp_u16vec2',['../a00922.html#ga2a7d997da9ac29cb931e35bd399f58df',1,'glm']]], + ['lowp_5fu16vec3_3870',['lowp_u16vec3',['../a00922.html#gac0253db6c3d3bae1f591676307a9dd8c',1,'glm']]], + ['lowp_5fu16vec4_3871',['lowp_u16vec4',['../a00922.html#gaa7f00459b9a2e5b2757e70afc0c189e1',1,'glm']]], + ['lowp_5fu32_3872',['lowp_u32',['../a00922.html#ga4f072ada9552e1e480bbb3b1acde5250',1,'glm']]], + ['lowp_5fu32vec1_3873',['lowp_u32vec1',['../a00922.html#gabed3be8dfdc4a0df4bf3271dbd7344c4',1,'glm']]], + ['lowp_5fu32vec2_3874',['lowp_u32vec2',['../a00922.html#gaf7e286e81347011e257ee779524e73b9',1,'glm']]], + ['lowp_5fu32vec3_3875',['lowp_u32vec3',['../a00922.html#gad3ad390560a671b1f676fbf03cd3aa15',1,'glm']]], + ['lowp_5fu32vec4_3876',['lowp_u32vec4',['../a00922.html#ga4502885718742aa238c36a312c3f3f20',1,'glm']]], + ['lowp_5fu64_3877',['lowp_u64',['../a00922.html#ga30069d1f02b19599cbfadf98c23ac6ed',1,'glm']]], + ['lowp_5fu64vec1_3878',['lowp_u64vec1',['../a00922.html#ga859be7b9d3a3765c1cafc14dbcf249a6',1,'glm']]], + ['lowp_5fu64vec2_3879',['lowp_u64vec2',['../a00922.html#ga581485db4ba6ddb501505ee711fd8e42',1,'glm']]], + ['lowp_5fu64vec3_3880',['lowp_u64vec3',['../a00922.html#gaa4a8682bec7ec8af666ef87fae38d5d1',1,'glm']]], + ['lowp_5fu64vec4_3881',['lowp_u64vec4',['../a00922.html#ga6fccc89c34045c86339f6fa781ce96de',1,'glm']]], + ['lowp_5fu8_3882',['lowp_u8',['../a00922.html#ga1b09f03da7ac43055c68a349d5445083',1,'glm']]], + ['lowp_5fu8vec1_3883',['lowp_u8vec1',['../a00922.html#ga4b2e0e10d8d154fec9cab50e216588ec',1,'glm']]], + ['lowp_5fu8vec2_3884',['lowp_u8vec2',['../a00922.html#gae6f63fa38635431e51a8f2602f15c566',1,'glm']]], + ['lowp_5fu8vec3_3885',['lowp_u8vec3',['../a00922.html#ga150dc47e31c6b8cf8461803c8d56f7bd',1,'glm']]], + ['lowp_5fu8vec4_3886',['lowp_u8vec4',['../a00922.html#ga9910927f3a4d1addb3da6a82542a8287',1,'glm']]], + ['lowp_5fuint16_3887',['lowp_uint16',['../a00922.html#gad68bfd9f881856fc863a6ebca0b67f78',1,'glm']]], + ['lowp_5fuint16_5ft_3888',['lowp_uint16_t',['../a00922.html#ga91c4815f93177eb423362fd296a87e9f',1,'glm']]], + ['lowp_5fuint32_3889',['lowp_uint32',['../a00922.html#gaa6a5b461bbf5fe20982472aa51896d4b',1,'glm']]], + ['lowp_5fuint32_5ft_3890',['lowp_uint32_t',['../a00922.html#gaf1b735b4b1145174f4e4167d13778f9b',1,'glm']]], + ['lowp_5fuint64_3891',['lowp_uint64',['../a00922.html#gaa212b805736a759998e312cbdd550fae',1,'glm']]], + ['lowp_5fuint64_5ft_3892',['lowp_uint64_t',['../a00922.html#ga8dd3a3281ae5c970ffe0c41d538aa153',1,'glm']]], + ['lowp_5fuint8_3893',['lowp_uint8',['../a00922.html#gaf49470869e9be2c059629b250619804e',1,'glm']]], + ['lowp_5fuint8_5ft_3894',['lowp_uint8_t',['../a00922.html#ga667b2ece2b258be898812dc2177995d1',1,'glm']]], + ['lowp_5fumat2_3895',['lowp_umat2',['../a00912.html#gaf2fba702d990437fc88ff3f3a76846ee',1,'glm']]], + ['lowp_5fumat2x2_3896',['lowp_umat2x2',['../a00912.html#gaa0e5a396da00c84e9d25666f83249bd4',1,'glm']]], + ['lowp_5fumat2x3_3897',['lowp_umat2x3',['../a00912.html#ga85ee1aa570068452f193970783ff2f4c',1,'glm']]], + ['lowp_5fumat2x4_3898',['lowp_umat2x4',['../a00912.html#ga23d07feb07f73d74a2f1e332869f1607',1,'glm']]], + ['lowp_5fumat3_3899',['lowp_umat3',['../a00912.html#gaf1145f72bcdd590f5808c4bc170c2924',1,'glm']]], + ['lowp_5fumat3x2_3900',['lowp_umat3x2',['../a00912.html#gafdc099cf3533b3fcdedd8547afa3670c',1,'glm']]], + ['lowp_5fumat3x3_3901',['lowp_umat3x3',['../a00912.html#gac02216341c63cd454968a81d4859bff2',1,'glm']]], + ['lowp_5fumat3x4_3902',['lowp_umat3x4',['../a00912.html#ga8a0ee76f801a451ff1c4c55c97c6204b',1,'glm']]], + ['lowp_5fumat4_3903',['lowp_umat4',['../a00912.html#gac092c6105827bf9ea080db38074b78eb',1,'glm']]], + ['lowp_5fumat4x2_3904',['lowp_umat4x2',['../a00912.html#ga25ec0b4a1dfcd2b9e37a5026a85e04a1',1,'glm']]], + ['lowp_5fumat4x3_3905',['lowp_umat4x3',['../a00912.html#ga0d7cf5fef436d7368b4a3d9bc3284549',1,'glm']]], + ['lowp_5fumat4x4_3906',['lowp_umat4x4',['../a00912.html#ga9dd0a988cce4208c4b3d43d50af7d056',1,'glm']]], + ['lowp_5fuvec1_3907',['lowp_uvec1',['../a00922.html#ga02cec5a492d6603014b6138e4ec876de',1,'glm']]], + ['lowp_5fuvec2_3908',['lowp_uvec2',['../a00922.html#ga87227fe1e39b5b03ab9a163d1984965e',1,'glm']]], + ['lowp_5fuvec3_3909',['lowp_uvec3',['../a00922.html#ga19866dd9e66f20301de4d084f0063c59',1,'glm']]], + ['lowp_5fuvec4_3910',['lowp_uvec4',['../a00922.html#ga247ee8f72db6d7cbc822721822d57e28',1,'glm']]], + ['lowp_5fvec1_3911',['lowp_vec1',['../a00881.html#ga0a57630f03031706b1d26a7d70d9184c',1,'glm']]], + ['lowp_5fvec2_3912',['lowp_vec2',['../a00900.html#ga30e8baef5d56d5c166872a2bc00f36e9',1,'glm']]], + ['lowp_5fvec3_3913',['lowp_vec3',['../a00900.html#ga868e8e4470a3ef97c7ee3032bf90dc79',1,'glm']]], + ['lowp_5fvec4_3914',['lowp_vec4',['../a00900.html#gace3acb313c800552a9411953eb8b2ed7',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_7.html b/include/glm/doc/api/search/typedefs_7.html new file mode 100644 index 0000000..3900507 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_7.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_7.js b/include/glm/doc/api/search/typedefs_7.js new file mode 100644 index 0000000..cf0a618 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_7.js @@ -0,0 +1,200 @@ +var searchData= +[ + ['mat2_3915',['mat2',['../a00901.html#ga8dd59e7fc6913ac5d61b86553e9148ba',1,'glm']]], + ['mat2x2_3916',['mat2x2',['../a00901.html#gaaa17ef6bfa4e4f2692348b1460c8efcb',1,'glm']]], + ['mat2x3_3917',['mat2x3',['../a00901.html#ga493ab21243abe564b3f7d381e677d29a',1,'glm']]], + ['mat2x4_3918',['mat2x4',['../a00901.html#ga8e879b57ddd81e5bf5a88929844e8b40',1,'glm']]], + ['mat3_3919',['mat3',['../a00901.html#gaefb0fc7a4960b782c18708bb6b655262',1,'glm']]], + ['mat3x2_3920',['mat3x2',['../a00901.html#ga2c27aea32de57d58aec8e92d5d2181e2',1,'glm']]], + ['mat3x3_3921',['mat3x3',['../a00901.html#gab91887d7565059dac640e3a1921c914a',1,'glm']]], + ['mat3x4_3922',['mat3x4',['../a00901.html#gaf991cad0b34f64e33af186326dbc4d66',1,'glm']]], + ['mat4_3923',['mat4',['../a00901.html#ga0db98d836c5549d31cf64ecd043b7af7',1,'glm']]], + ['mat4x2_3924',['mat4x2',['../a00901.html#gad941c947ad6cdd117a0e8554a4754983',1,'glm']]], + ['mat4x3_3925',['mat4x3',['../a00901.html#gac7574544bb94777bdbd2eb224eb72fd0',1,'glm']]], + ['mat4x4_3926',['mat4x4',['../a00901.html#gab2d35cc2655f44d60958d60a1de34e81',1,'glm']]], + ['mediump_5fbvec1_3927',['mediump_bvec1',['../a00876.html#ga7b4ccb989ba179fa44f7b0879c782621',1,'glm']]], + ['mediump_5fbvec2_3928',['mediump_bvec2',['../a00900.html#ga1e743764869efa9223c2bcefccedaddc',1,'glm']]], + ['mediump_5fbvec3_3929',['mediump_bvec3',['../a00900.html#ga50c783c25082882ef00fe2e5cddba4aa',1,'glm']]], + ['mediump_5fbvec4_3930',['mediump_bvec4',['../a00900.html#ga0be2c682258604a35004f088782a9645',1,'glm']]], + ['mediump_5fddualquat_3931',['mediump_ddualquat',['../a00935.html#ga0fb11e48e2d16348ccb06a25213641b4',1,'glm']]], + ['mediump_5fdmat2_3932',['mediump_dmat2',['../a00902.html#ga6205fd19be355600334edef6af0b27cb',1,'glm']]], + ['mediump_5fdmat2x2_3933',['mediump_dmat2x2',['../a00902.html#ga51dc36a7719cb458fa5114831c20d64f',1,'glm']]], + ['mediump_5fdmat2x3_3934',['mediump_dmat2x3',['../a00902.html#ga741e05adf1f12d5d913f67088db1009a',1,'glm']]], + ['mediump_5fdmat2x4_3935',['mediump_dmat2x4',['../a00902.html#ga685bda24922d112786af385deb4deb43',1,'glm']]], + ['mediump_5fdmat3_3936',['mediump_dmat3',['../a00902.html#ga939fbf9c53008a8e84c7dd7cf8de29e2',1,'glm']]], + ['mediump_5fdmat3x2_3937',['mediump_dmat3x2',['../a00902.html#ga2076157df85e49b8c021e03e46a376c1',1,'glm']]], + ['mediump_5fdmat3x3_3938',['mediump_dmat3x3',['../a00902.html#ga47bd2aae4701ee2fc865674a9df3d7a6',1,'glm']]], + ['mediump_5fdmat3x4_3939',['mediump_dmat3x4',['../a00902.html#ga3a132bd05675c2e46556f67cf738600b',1,'glm']]], + ['mediump_5fdmat4_3940',['mediump_dmat4',['../a00902.html#gaf650bc667bf2a0e496b5a9182bc8d378',1,'glm']]], + ['mediump_5fdmat4x2_3941',['mediump_dmat4x2',['../a00902.html#gae220fa4c5a7b13ef2ab0420340de645c',1,'glm']]], + ['mediump_5fdmat4x3_3942',['mediump_dmat4x3',['../a00902.html#ga43ef60e4d996db15c9c8f069a96ff763',1,'glm']]], + ['mediump_5fdmat4x4_3943',['mediump_dmat4x4',['../a00902.html#ga5389b3ab32dc0d72bea00057ab6d1dd3',1,'glm']]], + ['mediump_5fdquat_3944',['mediump_dquat',['../a00858.html#gacdf73b1f7fd8f5a0c79a3934e99c1a14',1,'glm']]], + ['mediump_5fdualquat_3945',['mediump_dualquat',['../a00935.html#gaa7aeb54c167712b38f2178a1be2360ad',1,'glm']]], + ['mediump_5fdvec1_3946',['mediump_dvec1',['../a00879.html#ga79a789ebb176b37a45848f7ccdd3b3dd',1,'glm']]], + ['mediump_5fdvec2_3947',['mediump_dvec2',['../a00900.html#ga2f4f6e9a69a0281d06940fd0990cafc3',1,'glm']]], + ['mediump_5fdvec3_3948',['mediump_dvec3',['../a00900.html#ga61c3b1dff4ec7c878af80503141b9f37',1,'glm']]], + ['mediump_5fdvec4_3949',['mediump_dvec4',['../a00900.html#ga23a8bca00914a51542bfea13a4778186',1,'glm']]], + ['mediump_5ff32_3950',['mediump_f32',['../a00922.html#ga3b27fcd9eaa2757f0aaf6b0ce0d85c80',1,'glm']]], + ['mediump_5ff32mat2_3951',['mediump_f32mat2',['../a00922.html#gaf9020c6176a75bc84828ab01ea7dac25',1,'glm']]], + ['mediump_5ff32mat2x2_3952',['mediump_f32mat2x2',['../a00922.html#gaa3ca74a44102035b3ffb5c9c52dfdd3f',1,'glm']]], + ['mediump_5ff32mat2x3_3953',['mediump_f32mat2x3',['../a00922.html#gad4cc829ab1ad3e05ac0a24828a3c95cf',1,'glm']]], + ['mediump_5ff32mat2x4_3954',['mediump_f32mat2x4',['../a00922.html#gae71445ac6cd0b9fba3e5c905cd030fb1',1,'glm']]], + ['mediump_5ff32mat3_3955',['mediump_f32mat3',['../a00922.html#gaaaf878d0d7bfc0aac054fe269a886ca8',1,'glm']]], + ['mediump_5ff32mat3x2_3956',['mediump_f32mat3x2',['../a00922.html#gaaab39454f56cf9fc6d940358ce5e6a0f',1,'glm']]], + ['mediump_5ff32mat3x3_3957',['mediump_f32mat3x3',['../a00922.html#gacd80ad7640e9e32f2edcb8330b1ffe4f',1,'glm']]], + ['mediump_5ff32mat3x4_3958',['mediump_f32mat3x4',['../a00922.html#ga8df705d775b776f5ae6b39e2ab892899',1,'glm']]], + ['mediump_5ff32mat4_3959',['mediump_f32mat4',['../a00922.html#ga4491baaebbc46a20f1cb5da985576bf4',1,'glm']]], + ['mediump_5ff32mat4x2_3960',['mediump_f32mat4x2',['../a00922.html#gab005efe0fa4de1a928e8ddec4bc2c43f',1,'glm']]], + ['mediump_5ff32mat4x3_3961',['mediump_f32mat4x3',['../a00922.html#gade108f16633cf95fa500b5b8c36c8b00',1,'glm']]], + ['mediump_5ff32mat4x4_3962',['mediump_f32mat4x4',['../a00922.html#ga936e95b881ecd2d109459ca41913fa99',1,'glm']]], + ['mediump_5ff32quat_3963',['mediump_f32quat',['../a00922.html#gaa40c03d52dbfbfaf03e75773b9606ff3',1,'glm']]], + ['mediump_5ff32vec1_3964',['mediump_f32vec1',['../a00922.html#gabb33cab7d7c74cc14aa95455d0690865',1,'glm']]], + ['mediump_5ff32vec2_3965',['mediump_f32vec2',['../a00922.html#gad6eb11412a3161ca8dc1d63b2a307c4b',1,'glm']]], + ['mediump_5ff32vec3_3966',['mediump_f32vec3',['../a00922.html#ga062ffef2973bd8241df993c3b30b327c',1,'glm']]], + ['mediump_5ff32vec4_3967',['mediump_f32vec4',['../a00922.html#gad80c84bcd5f585840faa6179f6fd446c',1,'glm']]], + ['mediump_5ff64_3968',['mediump_f64',['../a00922.html#ga6d40381d78472553f878f66e443feeef',1,'glm']]], + ['mediump_5ff64mat2_3969',['mediump_f64mat2',['../a00922.html#gac1281da5ded55047e8892b0e1f1ae965',1,'glm']]], + ['mediump_5ff64mat2x2_3970',['mediump_f64mat2x2',['../a00922.html#ga4fd527644cccbca4cb205320eab026f3',1,'glm']]], + ['mediump_5ff64mat2x3_3971',['mediump_f64mat2x3',['../a00922.html#gafd9a6ebc0c7b95f5c581d00d16a17c54',1,'glm']]], + ['mediump_5ff64mat2x4_3972',['mediump_f64mat2x4',['../a00922.html#gaf306dd69e53633636aee38cea79d4cb7',1,'glm']]], + ['mediump_5ff64mat3_3973',['mediump_f64mat3',['../a00922.html#gad35fb67eb1d03c5a514f0bd7aed1c776',1,'glm']]], + ['mediump_5ff64mat3x2_3974',['mediump_f64mat3x2',['../a00922.html#gacd926d36a72433f6cac51dd60fa13107',1,'glm']]], + ['mediump_5ff64mat3x3_3975',['mediump_f64mat3x3',['../a00922.html#ga84d88a6e3a54ccd2b67e195af4a4c23e',1,'glm']]], + ['mediump_5ff64mat3x4_3976',['mediump_f64mat3x4',['../a00922.html#gad38c544d332b8c4bd0b70b1bd9feccc2',1,'glm']]], + ['mediump_5ff64mat4_3977',['mediump_f64mat4',['../a00922.html#gaa805ef691c711dc41e2776cfb67f5cf5',1,'glm']]], + ['mediump_5ff64mat4x2_3978',['mediump_f64mat4x2',['../a00922.html#ga17d36f0ea22314117e1cec9594b33945',1,'glm']]], + ['mediump_5ff64mat4x3_3979',['mediump_f64mat4x3',['../a00922.html#ga54697a78f9a4643af6a57fc2e626ec0d',1,'glm']]], + ['mediump_5ff64mat4x4_3980',['mediump_f64mat4x4',['../a00922.html#ga66edb8de17b9235029472f043ae107e9',1,'glm']]], + ['mediump_5ff64quat_3981',['mediump_f64quat',['../a00922.html#ga5e52f485059ce6e3010c590b882602c9',1,'glm']]], + ['mediump_5ff64vec1_3982',['mediump_f64vec1',['../a00922.html#gac30fdf8afa489400053275b6a3350127',1,'glm']]], + ['mediump_5ff64vec2_3983',['mediump_f64vec2',['../a00922.html#ga8ebc04ecf6440c4ee24718a16600ce6b',1,'glm']]], + ['mediump_5ff64vec3_3984',['mediump_f64vec3',['../a00922.html#ga461c4c7d0757404dd0dba931760b25cf',1,'glm']]], + ['mediump_5ff64vec4_3985',['mediump_f64vec4',['../a00922.html#gacfea053bd6bb3eddb996a4f94de22a3e',1,'glm']]], + ['mediump_5ffdualquat_3986',['mediump_fdualquat',['../a00935.html#ga4a6b594ff7e81150d8143001367a9431',1,'glm']]], + ['mediump_5ffloat32_3987',['mediump_float32',['../a00922.html#ga7812bf00676fb1a86dcd62cca354d2c7',1,'glm']]], + ['mediump_5ffloat32_5ft_3988',['mediump_float32_t',['../a00922.html#gae4dee61f8fe1caccec309fbed02faf12',1,'glm']]], + ['mediump_5ffloat64_3989',['mediump_float64',['../a00922.html#gab83d8aae6e4f115e97a785e8574a115f',1,'glm']]], + ['mediump_5ffloat64_5ft_3990',['mediump_float64_t',['../a00922.html#gac61843e4fa96c1f4e9d8316454f32a8e',1,'glm']]], + ['mediump_5ffmat2_3991',['mediump_fmat2',['../a00922.html#ga74e9133378fd0b4da8ac0bc0876702ff',1,'glm']]], + ['mediump_5ffmat2x2_3992',['mediump_fmat2x2',['../a00922.html#ga98a687c17b174ea316b5f397b64f44bc',1,'glm']]], + ['mediump_5ffmat2x3_3993',['mediump_fmat2x3',['../a00922.html#gaa03f939d90d5ef157df957d93f0b9a64',1,'glm']]], + ['mediump_5ffmat2x4_3994',['mediump_fmat2x4',['../a00922.html#ga35223623e9ccebd8a281873b71b7d213',1,'glm']]], + ['mediump_5ffmat3_3995',['mediump_fmat3',['../a00922.html#ga80823dfad5dba98512c76af498343847',1,'glm']]], + ['mediump_5ffmat3x2_3996',['mediump_fmat3x2',['../a00922.html#ga42569e5b92f8635cedeadb1457ee1467',1,'glm']]], + ['mediump_5ffmat3x3_3997',['mediump_fmat3x3',['../a00922.html#gaa6f526388c74a66b3d52315a14d434ae',1,'glm']]], + ['mediump_5ffmat3x4_3998',['mediump_fmat3x4',['../a00922.html#gaefe8ef520c6cb78590ebbefe648da4d4',1,'glm']]], + ['mediump_5ffmat4_3999',['mediump_fmat4',['../a00922.html#gac1c38778c0b5a1263f07753c05a4f7b9',1,'glm']]], + ['mediump_5ffmat4x2_4000',['mediump_fmat4x2',['../a00922.html#gacea38a85893e17e6834b6cb09a9ad0cf',1,'glm']]], + ['mediump_5ffmat4x3_4001',['mediump_fmat4x3',['../a00922.html#ga41ad497f7eae211556aefd783cb02b90',1,'glm']]], + ['mediump_5ffmat4x4_4002',['mediump_fmat4x4',['../a00922.html#ga22e27beead07bff4d5ce9d6065a57279',1,'glm']]], + ['mediump_5ffvec1_4003',['mediump_fvec1',['../a00922.html#ga367964fc2133d3f1b5b3755ff9cf6c9b',1,'glm']]], + ['mediump_5ffvec2_4004',['mediump_fvec2',['../a00922.html#ga44bfa55cda5dbf53f24a1fb7610393d6',1,'glm']]], + ['mediump_5ffvec3_4005',['mediump_fvec3',['../a00922.html#ga999dc6703ad16e3d3c26b74ea8083f07',1,'glm']]], + ['mediump_5ffvec4_4006',['mediump_fvec4',['../a00922.html#ga1bed890513c0f50b7e7ba4f7f359dbfb',1,'glm']]], + ['mediump_5fi16_4007',['mediump_i16',['../a00922.html#ga62a17cddeb4dffb4e18fe3aea23f051a',1,'glm']]], + ['mediump_5fi16vec1_4008',['mediump_i16vec1',['../a00922.html#gacc44265ed440bf5e6e566782570de842',1,'glm']]], + ['mediump_5fi16vec2_4009',['mediump_i16vec2',['../a00922.html#ga4b5e2c9aaa5d7717bf71179aefa12e88',1,'glm']]], + ['mediump_5fi16vec3_4010',['mediump_i16vec3',['../a00922.html#ga3be6c7fc5fe08fa2274bdb001d5f2633',1,'glm']]], + ['mediump_5fi16vec4_4011',['mediump_i16vec4',['../a00922.html#gaf52982bb23e3a3772649b2c5bb84b107',1,'glm']]], + ['mediump_5fi32_4012',['mediump_i32',['../a00922.html#gaf5e94bf2a20af7601787c154751dc2e1',1,'glm']]], + ['mediump_5fi32vec1_4013',['mediump_i32vec1',['../a00922.html#ga46a57f71e430637559097a732b550a7e',1,'glm']]], + ['mediump_5fi32vec2_4014',['mediump_i32vec2',['../a00922.html#ga20bf224bd4f8a24ecc4ed2004a40c219',1,'glm']]], + ['mediump_5fi32vec3_4015',['mediump_i32vec3',['../a00922.html#ga13a221b910aa9eb1b04ca1c86e81015a',1,'glm']]], + ['mediump_5fi32vec4_4016',['mediump_i32vec4',['../a00922.html#ga6addd4dfee87fc09ab9525e3d07db4c8',1,'glm']]], + ['mediump_5fi64_4017',['mediump_i64',['../a00922.html#ga3ebcb1f6d8d8387253de8bccb058d77f',1,'glm']]], + ['mediump_5fi64vec1_4018',['mediump_i64vec1',['../a00922.html#ga8343e9d244fb17a5bbf0d94d36b3695e',1,'glm']]], + ['mediump_5fi64vec2_4019',['mediump_i64vec2',['../a00922.html#ga2c94aeae3457325944ca1059b0b68330',1,'glm']]], + ['mediump_5fi64vec3_4020',['mediump_i64vec3',['../a00922.html#ga8089722ffdf868cdfe721dea1fb6a90e',1,'glm']]], + ['mediump_5fi64vec4_4021',['mediump_i64vec4',['../a00922.html#gabf1f16c5ab8cb0484bd1e846ae4368f1',1,'glm']]], + ['mediump_5fi8_4022',['mediump_i8',['../a00922.html#gacf1ded173e1e2d049c511d095b259e21',1,'glm']]], + ['mediump_5fi8vec1_4023',['mediump_i8vec1',['../a00922.html#ga85e8893f4ae3630065690a9000c0c483',1,'glm']]], + ['mediump_5fi8vec2_4024',['mediump_i8vec2',['../a00922.html#ga2a8bdc32184ea0a522ef7bd90640cf67',1,'glm']]], + ['mediump_5fi8vec3_4025',['mediump_i8vec3',['../a00922.html#ga6dd1c1618378c6f94d522a61c28773c9',1,'glm']]], + ['mediump_5fi8vec4_4026',['mediump_i8vec4',['../a00922.html#gac7bb04fb857ef7b520e49f6c381432be',1,'glm']]], + ['mediump_5fimat2_4027',['mediump_imat2',['../a00912.html#ga20f4cc7ab23e2aa1f4db9fdb5496d378',1,'glm']]], + ['mediump_5fimat2x2_4028',['mediump_imat2x2',['../a00912.html#gaaa39fcf19d3b30ace619e1cd813be8c1',1,'glm']]], + ['mediump_5fimat2x3_4029',['mediump_imat2x3',['../a00912.html#gace3b4f5065f6e6793db8179161bc0c15',1,'glm']]], + ['mediump_5fimat2x4_4030',['mediump_imat2x4',['../a00912.html#gabf8b6cc6c5250d43e57c6a9d419d11d0',1,'glm']]], + ['mediump_5fimat3_4031',['mediump_imat3',['../a00912.html#ga6c63bdc736efd3466e0730de0251cb71',1,'glm']]], + ['mediump_5fimat3x2_4032',['mediump_imat3x2',['../a00912.html#ga4a85a15738d7a789f81a0ac8d2147c5f',1,'glm']]], + ['mediump_5fimat3x3_4033',['mediump_imat3x3',['../a00912.html#gad3d76765685183bab97e9a9cf91ea26e',1,'glm']]], + ['mediump_5fimat3x4_4034',['mediump_imat3x4',['../a00912.html#ga3cef6f8fd891e0e8a44aabafb2df1d58',1,'glm']]], + ['mediump_5fimat4_4035',['mediump_imat4',['../a00912.html#gaf348552978553630d2a00b78eb887ced',1,'glm']]], + ['mediump_5fimat4x2_4036',['mediump_imat4x2',['../a00912.html#ga8254ea8195f5675afea4be98e64dd04d',1,'glm']]], + ['mediump_5fimat4x3_4037',['mediump_imat4x3',['../a00912.html#gad15630b8337c9becd8c3f4e9b901bce9',1,'glm']]], + ['mediump_5fimat4x4_4038',['mediump_imat4x4',['../a00912.html#ga93d485d0de7835c4679e2cced1b7f033',1,'glm']]], + ['mediump_5fint16_4039',['mediump_int16',['../a00922.html#gadff3608baa4b5bd3ed28f95c1c2c345d',1,'glm']]], + ['mediump_5fint16_5ft_4040',['mediump_int16_t',['../a00922.html#ga80e72fe94c88498537e8158ba7591c54',1,'glm']]], + ['mediump_5fint32_4041',['mediump_int32',['../a00922.html#ga5244cef85d6e870e240c76428a262ae8',1,'glm']]], + ['mediump_5fint32_5ft_4042',['mediump_int32_t',['../a00922.html#ga26fc7ced1ad7ca5024f1c973c8dc9180',1,'glm']]], + ['mediump_5fint64_4043',['mediump_int64',['../a00922.html#ga7b968f2b86a0442a89c7359171e1d866',1,'glm']]], + ['mediump_5fint64_5ft_4044',['mediump_int64_t',['../a00922.html#gac3bc41bcac61d1ba8f02a6f68ce23f64',1,'glm']]], + ['mediump_5fint8_4045',['mediump_int8',['../a00922.html#ga6fbd69cbdaa44345bff923a2cf63de7e',1,'glm']]], + ['mediump_5fint8_5ft_4046',['mediump_int8_t',['../a00922.html#ga6d7b3789ecb932c26430009478cac7ae',1,'glm']]], + ['mediump_5fivec1_4047',['mediump_ivec1',['../a00922.html#ga6fde13de973ad9ae82839389353f8529',1,'glm']]], + ['mediump_5fivec2_4048',['mediump_ivec2',['../a00922.html#gaf39bf0b097a5c16905c28a31766b7e27',1,'glm']]], + ['mediump_5fivec3_4049',['mediump_ivec3',['../a00922.html#gaebbb60a777cc21c3e63154c23b02817d',1,'glm']]], + ['mediump_5fivec4_4050',['mediump_ivec4',['../a00922.html#ga15c4b5e063630bef11347f98de373ed9',1,'glm']]], + ['mediump_5fmat2_4051',['mediump_mat2',['../a00902.html#ga745452bd9c89f5ad948203e4fb4b4ea3',1,'glm']]], + ['mediump_5fmat2x2_4052',['mediump_mat2x2',['../a00902.html#ga0cdf57d29f9448864237b2fb3e39aa1d',1,'glm']]], + ['mediump_5fmat2x3_4053',['mediump_mat2x3',['../a00902.html#ga497d513d552d927537d61fa11e3701ab',1,'glm']]], + ['mediump_5fmat2x4_4054',['mediump_mat2x4',['../a00902.html#gae7b75ea2e09fa686a79bbe9b6ca68ee5',1,'glm']]], + ['mediump_5fmat3_4055',['mediump_mat3',['../a00902.html#ga5aae49834d02732942f44e61d7bce136',1,'glm']]], + ['mediump_5fmat3x2_4056',['mediump_mat3x2',['../a00902.html#ga9e1c9ee65fef547bde793e69723e24eb',1,'glm']]], + ['mediump_5fmat3x3_4057',['mediump_mat3x3',['../a00902.html#gabc0f2f4ad21c90b341881cf056f8650e',1,'glm']]], + ['mediump_5fmat3x4_4058',['mediump_mat3x4',['../a00902.html#gaa669c6675c3405f76c0b14020d1c0d61',1,'glm']]], + ['mediump_5fmat4_4059',['mediump_mat4',['../a00902.html#gab8531bc3f269aa45835cd6e1972b7fc7',1,'glm']]], + ['mediump_5fmat4x2_4060',['mediump_mat4x2',['../a00902.html#gad75706b70545412ba9ac27d5ee210f66',1,'glm']]], + ['mediump_5fmat4x3_4061',['mediump_mat4x3',['../a00902.html#ga4a1440b5ea3cf84d5b06c79b534bd770',1,'glm']]], + ['mediump_5fmat4x4_4062',['mediump_mat4x4',['../a00902.html#ga15bca2b70917d9752231160d9da74b01',1,'glm']]], + ['mediump_5fquat_4063',['mediump_quat',['../a00861.html#gad2a59409de1bb12ccb6eb692ee7e9d8d',1,'glm']]], + ['mediump_5fu16_4064',['mediump_u16',['../a00922.html#ga9df98857be695d5a30cb30f5bfa38a80',1,'glm']]], + ['mediump_5fu16vec1_4065',['mediump_u16vec1',['../a00922.html#ga400ce8cc566de093a9b28e59e220d6e4',1,'glm']]], + ['mediump_5fu16vec2_4066',['mediump_u16vec2',['../a00922.html#ga429c201b3e92c90b4ef4356f2be52ee1',1,'glm']]], + ['mediump_5fu16vec3_4067',['mediump_u16vec3',['../a00922.html#gac9ba20234b0c3751d45ce575fc71e551',1,'glm']]], + ['mediump_5fu16vec4_4068',['mediump_u16vec4',['../a00922.html#ga5793393686ce5bd2d5968ff9144762b8',1,'glm']]], + ['mediump_5fu32_4069',['mediump_u32',['../a00922.html#ga1bd0e914158bf03135f8a317de6debe9',1,'glm']]], + ['mediump_5fu32vec1_4070',['mediump_u32vec1',['../a00922.html#ga8a11ccd2e38f674bbf3c2d1afc232aee',1,'glm']]], + ['mediump_5fu32vec2_4071',['mediump_u32vec2',['../a00922.html#ga94f74851fce338549c705b5f0d601c4f',1,'glm']]], + ['mediump_5fu32vec3_4072',['mediump_u32vec3',['../a00922.html#ga012c24c8fc69707b90260474c70275a2',1,'glm']]], + ['mediump_5fu32vec4_4073',['mediump_u32vec4',['../a00922.html#ga5d43ee8b5dbaa06c327b03b83682598a',1,'glm']]], + ['mediump_5fu64_4074',['mediump_u64',['../a00922.html#ga2af9490085ae3bdf36a544e9dd073610',1,'glm']]], + ['mediump_5fu64vec1_4075',['mediump_u64vec1',['../a00922.html#ga659f372ccb8307d5db5beca942cde5e8',1,'glm']]], + ['mediump_5fu64vec2_4076',['mediump_u64vec2',['../a00922.html#ga73a08ef5a74798f3a1a99250b5f86a7d',1,'glm']]], + ['mediump_5fu64vec3_4077',['mediump_u64vec3',['../a00922.html#ga1900c6ab74acd392809425953359ef52',1,'glm']]], + ['mediump_5fu64vec4_4078',['mediump_u64vec4',['../a00922.html#gaec7ee455cb379ec2993e81482123e1cc',1,'glm']]], + ['mediump_5fu8_4079',['mediump_u8',['../a00922.html#gad1213a22bbb9e4107f07eaa4956f8281',1,'glm']]], + ['mediump_5fu8vec1_4080',['mediump_u8vec1',['../a00922.html#ga4a43050843b141bdc7e85437faef6f55',1,'glm']]], + ['mediump_5fu8vec2_4081',['mediump_u8vec2',['../a00922.html#ga907f85d4a0eac3d8aaf571e5c2647194',1,'glm']]], + ['mediump_5fu8vec3_4082',['mediump_u8vec3',['../a00922.html#gaddc6f7748b699254942c5216b68f8f7f',1,'glm']]], + ['mediump_5fu8vec4_4083',['mediump_u8vec4',['../a00922.html#gaaf4ee3b76d43d98da02ec399b99bda4b',1,'glm']]], + ['mediump_5fuint16_4084',['mediump_uint16',['../a00922.html#ga2885a6c89916911e418c06bb76b9bdbb',1,'glm']]], + ['mediump_5fuint16_5ft_4085',['mediump_uint16_t',['../a00922.html#ga3963b1050fc65a383ee28e3f827b6e3e',1,'glm']]], + ['mediump_5fuint32_4086',['mediump_uint32',['../a00922.html#ga34dd5ec1988c443bae80f1b20a8ade5f',1,'glm']]], + ['mediump_5fuint32_5ft_4087',['mediump_uint32_t',['../a00922.html#gaf4dae276fd29623950de14a6ca2586b5',1,'glm']]], + ['mediump_5fuint64_4088',['mediump_uint64',['../a00922.html#ga30652709815ad9404272a31957daa59e',1,'glm']]], + ['mediump_5fuint64_5ft_4089',['mediump_uint64_t',['../a00922.html#ga9b170dd4a8f38448a2dc93987c7875e9',1,'glm']]], + ['mediump_5fuint8_4090',['mediump_uint8',['../a00922.html#ga1fa92a233b9110861cdbc8c2ccf0b5a3',1,'glm']]], + ['mediump_5fuint8_5ft_4091',['mediump_uint8_t',['../a00922.html#gadfe65c78231039e90507770db50c98c7',1,'glm']]], + ['mediump_5fumat2_4092',['mediump_umat2',['../a00912.html#ga43041378b3410ea951b7de0dfd2bc7ee',1,'glm']]], + ['mediump_5fumat2x2_4093',['mediump_umat2x2',['../a00912.html#ga124680e6605446ee2c5003afe6a3c5ad',1,'glm']]], + ['mediump_5fumat2x3_4094',['mediump_umat2x3',['../a00912.html#ga7fcb637b3a741d958930091049e93dc3',1,'glm']]], + ['mediump_5fumat2x4_4095',['mediump_umat2x4',['../a00912.html#ga02cf42c69be99ffd657d9e6f63c17bb5',1,'glm']]], + ['mediump_5fumat3_4096',['mediump_umat3',['../a00912.html#ga1730dbe3c67801f53520b06d1aa0a34a',1,'glm']]], + ['mediump_5fumat3x2_4097',['mediump_umat3x2',['../a00912.html#gae83b65eb313187fe4bff3f1d20cf8443',1,'glm']]], + ['mediump_5fumat3x3_4098',['mediump_umat3x3',['../a00912.html#gac84034b2c48971dcf45194c87ef30da5',1,'glm']]], + ['mediump_5fumat3x4_4099',['mediump_umat3x4',['../a00912.html#gad7e5b8bb3bfe4d8db6980743e48a8281',1,'glm']]], + ['mediump_5fumat4_4100',['mediump_umat4',['../a00912.html#ga5087c2beb26a11d9af87432e554cf9d1',1,'glm']]], + ['mediump_5fumat4x2_4101',['mediump_umat4x2',['../a00912.html#gac47efafc2e8446b53245f1cf71ee302d',1,'glm']]], + ['mediump_5fumat4x3_4102',['mediump_umat4x3',['../a00912.html#gadb5f724533a1c3cd150b8d25860fe34a',1,'glm']]], + ['mediump_5fumat4x4_4103',['mediump_umat4x4',['../a00912.html#ga331d718d5b35ab5c3d6bdf923263b8aa',1,'glm']]], + ['mediump_5fuvec1_4104',['mediump_uvec1',['../a00922.html#ga63844d22efcd376cb66a8bab1aad9c40',1,'glm']]], + ['mediump_5fuvec2_4105',['mediump_uvec2',['../a00922.html#ga5b85f66da9cf7c90e595b94cc95d237a',1,'glm']]], + ['mediump_5fuvec3_4106',['mediump_uvec3',['../a00922.html#ga394fa81d7e8d12cd2aaeabb2c9d4b031',1,'glm']]], + ['mediump_5fuvec4_4107',['mediump_uvec4',['../a00922.html#gade9d6be4502877f7e6e7ffb54d46ac3f',1,'glm']]], + ['mediump_5fvec1_4108',['mediump_vec1',['../a00881.html#ga645f53e6b8056609023a894b4e2beef4',1,'glm']]], + ['mediump_5fvec2_4109',['mediump_vec2',['../a00900.html#gabc61976261c406520c7a8e4d946dc3f0',1,'glm']]], + ['mediump_5fvec3_4110',['mediump_vec3',['../a00900.html#ga2384e263df19f1404b733016eff78fca',1,'glm']]], + ['mediump_5fvec4_4111',['mediump_vec4',['../a00900.html#ga5c6978d3ffba06738416a33083853fc0',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_8.html b/include/glm/doc/api/search/typedefs_8.html new file mode 100644 index 0000000..66884e1 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_8.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_8.js b/include/glm/doc/api/search/typedefs_8.js new file mode 100644 index 0000000..b7c3374 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_8.js @@ -0,0 +1,187 @@ +var searchData= +[ + ['packed_5fbvec1_4112',['packed_bvec1',['../a00921.html#ga88632cea9008ac0ac1388e94e804a53c',1,'glm']]], + ['packed_5fbvec2_4113',['packed_bvec2',['../a00921.html#gab85245913eaa40ab82adabcae37086cb',1,'glm']]], + ['packed_5fbvec3_4114',['packed_bvec3',['../a00921.html#ga0c48f9417f649e27f3fb0c9f733a18bd',1,'glm']]], + ['packed_5fbvec4_4115',['packed_bvec4',['../a00921.html#ga3180d7db84a74c402157df3bbc0ae3ed',1,'glm']]], + ['packed_5fdmat2_4116',['packed_dmat2',['../a00921.html#gad87408a8350918711f845f071bbe43fb',1,'glm']]], + ['packed_5fdmat2x2_4117',['packed_dmat2x2',['../a00921.html#gaaa33d8e06657a777efb0c72c44ce87a9',1,'glm']]], + ['packed_5fdmat2x3_4118',['packed_dmat2x3',['../a00921.html#gac3a5315f588ba04ad255188071ec4e22',1,'glm']]], + ['packed_5fdmat2x4_4119',['packed_dmat2x4',['../a00921.html#gae398fc3156f51d3684b08f62c1a5a6d4',1,'glm']]], + ['packed_5fdmat3_4120',['packed_dmat3',['../a00921.html#ga03dfc90d539cc87ea3a15a9caa5d2245',1,'glm']]], + ['packed_5fdmat3x2_4121',['packed_dmat3x2',['../a00921.html#gae36de20a4c0e0b1444b7903ae811d94e',1,'glm']]], + ['packed_5fdmat3x3_4122',['packed_dmat3x3',['../a00921.html#gab9b909f1392d86854334350efcae85f5',1,'glm']]], + ['packed_5fdmat3x4_4123',['packed_dmat3x4',['../a00921.html#ga199131fd279c92c2ac12df6d978f1dd6',1,'glm']]], + ['packed_5fdmat4_4124',['packed_dmat4',['../a00921.html#gada980a3485640aa8151f368f17ad3086',1,'glm']]], + ['packed_5fdmat4x2_4125',['packed_dmat4x2',['../a00921.html#ga6dc65249730698d3cc9ac5d7e1bc4d72',1,'glm']]], + ['packed_5fdmat4x3_4126',['packed_dmat4x3',['../a00921.html#gadf202aaa9ed71c09f9bbe347e43f8764',1,'glm']]], + ['packed_5fdmat4x4_4127',['packed_dmat4x4',['../a00921.html#gae20617435a6d042d7c38da2badd64a09',1,'glm']]], + ['packed_5fdquat_4128',['packed_dquat',['../a00921.html#gab81f0e92623c05b97a66c5efd1e29475',1,'glm']]], + ['packed_5fdvec1_4129',['packed_dvec1',['../a00921.html#ga532f0c940649b1ee303acd572fc35531',1,'glm']]], + ['packed_5fdvec2_4130',['packed_dvec2',['../a00921.html#ga5c194b11fbda636f2ab20c3bd0079196',1,'glm']]], + ['packed_5fdvec3_4131',['packed_dvec3',['../a00921.html#ga0581ea552d86b2b5de7a2804bed80e72',1,'glm']]], + ['packed_5fdvec4_4132',['packed_dvec4',['../a00921.html#gae8a9b181f9dc813ad6e125a52b14b935',1,'glm']]], + ['packed_5fhighp_5fbvec1_4133',['packed_highp_bvec1',['../a00921.html#ga439e97795314b81cd15abd4e5c2e6e7a',1,'glm']]], + ['packed_5fhighp_5fbvec2_4134',['packed_highp_bvec2',['../a00921.html#gad791d671f4fcf1ed1ea41f752916b70a',1,'glm']]], + ['packed_5fhighp_5fbvec3_4135',['packed_highp_bvec3',['../a00921.html#ga6a5a3250b57dfadc66735bc72911437f',1,'glm']]], + ['packed_5fhighp_5fbvec4_4136',['packed_highp_bvec4',['../a00921.html#ga09f517d88b996ef1b2f42fd54222b82d',1,'glm']]], + ['packed_5fhighp_5fdmat2_4137',['packed_highp_dmat2',['../a00921.html#gae29686632fd05efac0675d9a6370d77b',1,'glm']]], + ['packed_5fhighp_5fdmat2x2_4138',['packed_highp_dmat2x2',['../a00921.html#ga22bd6382b16052e301edbfc031b9f37a',1,'glm']]], + ['packed_5fhighp_5fdmat2x3_4139',['packed_highp_dmat2x3',['../a00921.html#ga999d82719696d4c59f4d236dd08f273d',1,'glm']]], + ['packed_5fhighp_5fdmat2x4_4140',['packed_highp_dmat2x4',['../a00921.html#ga6998ac2a8d7fe456b651a6336ed26bb0',1,'glm']]], + ['packed_5fhighp_5fdmat3_4141',['packed_highp_dmat3',['../a00921.html#gadac7c040c4810dd52b36fcd09d097400',1,'glm']]], + ['packed_5fhighp_5fdmat3x2_4142',['packed_highp_dmat3x2',['../a00921.html#gab462744977beb85fb5c782bc2eea7b15',1,'glm']]], + ['packed_5fhighp_5fdmat3x3_4143',['packed_highp_dmat3x3',['../a00921.html#ga49e5a709d098523823b2f824e48672a6',1,'glm']]], + ['packed_5fhighp_5fdmat3x4_4144',['packed_highp_dmat3x4',['../a00921.html#ga2c67b3b0adab71c8680c3d819f1fa9b7',1,'glm']]], + ['packed_5fhighp_5fdmat4_4145',['packed_highp_dmat4',['../a00921.html#ga6718822cd7af005a9b5bd6ee282f6ba6',1,'glm']]], + ['packed_5fhighp_5fdmat4x2_4146',['packed_highp_dmat4x2',['../a00921.html#ga12e39e797fb724a5b51fcbea2513a7da',1,'glm']]], + ['packed_5fhighp_5fdmat4x3_4147',['packed_highp_dmat4x3',['../a00921.html#ga79c2e9f82e67963c1ecad0ad6d0ec72e',1,'glm']]], + ['packed_5fhighp_5fdmat4x4_4148',['packed_highp_dmat4x4',['../a00921.html#ga2df58e03e5afded28707b4f7d077afb4',1,'glm']]], + ['packed_5fhighp_5fdquat_4149',['packed_highp_dquat',['../a00921.html#ga2181ff3f0e91250807f0233b1493d8eb',1,'glm']]], + ['packed_5fhighp_5fdvec1_4150',['packed_highp_dvec1',['../a00921.html#gab472b2d917b5e6efd76e8c7dbfbbf9f1',1,'glm']]], + ['packed_5fhighp_5fdvec2_4151',['packed_highp_dvec2',['../a00921.html#ga5b2dc48fa19b684d207d69c6b145eb63',1,'glm']]], + ['packed_5fhighp_5fdvec3_4152',['packed_highp_dvec3',['../a00921.html#gaaac6b356ef00154da41aaae7d1549193',1,'glm']]], + ['packed_5fhighp_5fdvec4_4153',['packed_highp_dvec4',['../a00921.html#ga81b5368fe485e2630aa9b44832d592e7',1,'glm']]], + ['packed_5fhighp_5fivec1_4154',['packed_highp_ivec1',['../a00921.html#ga7245acc887a5438f46fd85fdf076bb3b',1,'glm']]], + ['packed_5fhighp_5fivec2_4155',['packed_highp_ivec2',['../a00921.html#ga54f368ec6b514a5aa4f28d40e6f93ef7',1,'glm']]], + ['packed_5fhighp_5fivec3_4156',['packed_highp_ivec3',['../a00921.html#ga865a9c7bb22434b1b8c5ac31e164b628',1,'glm']]], + ['packed_5fhighp_5fivec4_4157',['packed_highp_ivec4',['../a00921.html#gad6f1b4e3a51c2c051814b60d5d1b8895',1,'glm']]], + ['packed_5fhighp_5fmat2_4158',['packed_highp_mat2',['../a00921.html#ga2f2d913d8cca2f935b2522964408c0b2',1,'glm']]], + ['packed_5fhighp_5fmat2x2_4159',['packed_highp_mat2x2',['../a00921.html#ga245c12d2daf67feecaa2d3277c8f6661',1,'glm']]], + ['packed_5fhighp_5fmat2x3_4160',['packed_highp_mat2x3',['../a00921.html#ga069cc8892aadae144c00f35297617d44',1,'glm']]], + ['packed_5fhighp_5fmat2x4_4161',['packed_highp_mat2x4',['../a00921.html#ga6904d09b62141d09712b76983892f95b',1,'glm']]], + ['packed_5fhighp_5fmat3_4162',['packed_highp_mat3',['../a00921.html#gabdd5fbffe8b8b8a7b33523f25b120dbe',1,'glm']]], + ['packed_5fhighp_5fmat3x2_4163',['packed_highp_mat3x2',['../a00921.html#ga2624719cb251d8de8cad1beaefc3a3f9',1,'glm']]], + ['packed_5fhighp_5fmat3x3_4164',['packed_highp_mat3x3',['../a00921.html#gaf2e07527d678440bf0c20adbeb9177c5',1,'glm']]], + ['packed_5fhighp_5fmat3x4_4165',['packed_highp_mat3x4',['../a00921.html#ga72102fa6ac2445aa3bb203128ad52449',1,'glm']]], + ['packed_5fhighp_5fmat4_4166',['packed_highp_mat4',['../a00921.html#ga253e8379b08d2dc6fe2800b2fb913203',1,'glm']]], + ['packed_5fhighp_5fmat4x2_4167',['packed_highp_mat4x2',['../a00921.html#gae389c2071cf3cdb33e7812c6fd156710',1,'glm']]], + ['packed_5fhighp_5fmat4x3_4168',['packed_highp_mat4x3',['../a00921.html#ga4584f64394bd7123b7a8534741e4916c',1,'glm']]], + ['packed_5fhighp_5fmat4x4_4169',['packed_highp_mat4x4',['../a00921.html#ga0149fe15668925147e07c94fd2c2d6ae',1,'glm']]], + ['packed_5fhighp_5fquat_4170',['packed_highp_quat',['../a00921.html#ga473ba40eeb4448ccba73dfff3cc10fe8',1,'glm']]], + ['packed_5fhighp_5fuvec1_4171',['packed_highp_uvec1',['../a00921.html#ga8c32b53f628a3616aa5061e58d66fe74',1,'glm']]], + ['packed_5fhighp_5fuvec2_4172',['packed_highp_uvec2',['../a00921.html#gab704d4fb15f6f96d70e363d5db7060cd',1,'glm']]], + ['packed_5fhighp_5fuvec3_4173',['packed_highp_uvec3',['../a00921.html#ga0b570da473fec4619db5aa0dce5133b0',1,'glm']]], + ['packed_5fhighp_5fuvec4_4174',['packed_highp_uvec4',['../a00921.html#gaa582f38c82aef61dea7aaedf15bb06a6',1,'glm']]], + ['packed_5fhighp_5fvec1_4175',['packed_highp_vec1',['../a00921.html#ga56473759d2702ee19ab7f91d0017fa70',1,'glm']]], + ['packed_5fhighp_5fvec2_4176',['packed_highp_vec2',['../a00921.html#ga6b8b9475e7c3b16aed13edbc460bbc4d',1,'glm']]], + ['packed_5fhighp_5fvec3_4177',['packed_highp_vec3',['../a00921.html#ga3815661df0e2de79beff8168c09adf1e',1,'glm']]], + ['packed_5fhighp_5fvec4_4178',['packed_highp_vec4',['../a00921.html#ga4015f36bf5a5adb6ac5d45beed959867',1,'glm']]], + ['packed_5fivec1_4179',['packed_ivec1',['../a00921.html#ga11581a06fc7bf941fa4d4b6aca29812c',1,'glm']]], + ['packed_5fivec2_4180',['packed_ivec2',['../a00921.html#ga1fe4c5f56b8087d773aa90dc88a257a7',1,'glm']]], + ['packed_5fivec3_4181',['packed_ivec3',['../a00921.html#gae157682a7847161787951ba1db4cf325',1,'glm']]], + ['packed_5fivec4_4182',['packed_ivec4',['../a00921.html#gac228b70372abd561340d5f926a7c1778',1,'glm']]], + ['packed_5flowp_5fbvec1_4183',['packed_lowp_bvec1',['../a00921.html#gae3c8750f53259ece334d3aa3b3649a40',1,'glm']]], + ['packed_5flowp_5fbvec2_4184',['packed_lowp_bvec2',['../a00921.html#gac969befedbda69eb78d4e23f751fdbee',1,'glm']]], + ['packed_5flowp_5fbvec3_4185',['packed_lowp_bvec3',['../a00921.html#ga7c20adbe1409e3fe4544677a7f6fe954',1,'glm']]], + ['packed_5flowp_5fbvec4_4186',['packed_lowp_bvec4',['../a00921.html#gae473587cff3092edc0877fc691c26a0b',1,'glm']]], + ['packed_5flowp_5fdmat2_4187',['packed_lowp_dmat2',['../a00921.html#gac93f9b1a35b9de4f456b9f2dfeaf1097',1,'glm']]], + ['packed_5flowp_5fdmat2x2_4188',['packed_lowp_dmat2x2',['../a00921.html#gaeeaff6c132ec91ebd21da3a2399548ea',1,'glm']]], + ['packed_5flowp_5fdmat2x3_4189',['packed_lowp_dmat2x3',['../a00921.html#ga2ccdcd4846775cbe4f9d12e71d55b5d2',1,'glm']]], + ['packed_5flowp_5fdmat2x4_4190',['packed_lowp_dmat2x4',['../a00921.html#gac870c47d2d9d48503f6c9ee3baec8ce1',1,'glm']]], + ['packed_5flowp_5fdmat3_4191',['packed_lowp_dmat3',['../a00921.html#ga3894a059eeaacec8791c25de398d9955',1,'glm']]], + ['packed_5flowp_5fdmat3x2_4192',['packed_lowp_dmat3x2',['../a00921.html#ga23ec236950f5859f59197663266b535d',1,'glm']]], + ['packed_5flowp_5fdmat3x3_4193',['packed_lowp_dmat3x3',['../a00921.html#ga4a7c7d8c3a663d0ec2a858cbfa14e54c',1,'glm']]], + ['packed_5flowp_5fdmat3x4_4194',['packed_lowp_dmat3x4',['../a00921.html#ga8fc0e66da83599071b7ec17510686cd9',1,'glm']]], + ['packed_5flowp_5fdmat4_4195',['packed_lowp_dmat4',['../a00921.html#ga03e1edf5666c40affe39aee35c87956f',1,'glm']]], + ['packed_5flowp_5fdmat4x2_4196',['packed_lowp_dmat4x2',['../a00921.html#ga39658fb13369db869d363684bd8399c0',1,'glm']]], + ['packed_5flowp_5fdmat4x3_4197',['packed_lowp_dmat4x3',['../a00921.html#ga30b0351eebc18c6056101359bdd3a359',1,'glm']]], + ['packed_5flowp_5fdmat4x4_4198',['packed_lowp_dmat4x4',['../a00921.html#ga0294d4c45151425c86a11deee7693c0e',1,'glm']]], + ['packed_5flowp_5fdquat_4199',['packed_lowp_dquat',['../a00921.html#gaaeaa03a3ec94cfb48e1703d70bc8a105',1,'glm']]], + ['packed_5flowp_5fdvec1_4200',['packed_lowp_dvec1',['../a00921.html#ga054050e9d4e78d81db0e6d1573b1c624',1,'glm']]], + ['packed_5flowp_5fdvec2_4201',['packed_lowp_dvec2',['../a00921.html#gadc19938ddb204bfcb4d9ef35b1e2bf93',1,'glm']]], + ['packed_5flowp_5fdvec3_4202',['packed_lowp_dvec3',['../a00921.html#ga9189210cabd6651a5e14a4c46fb20598',1,'glm']]], + ['packed_5flowp_5fdvec4_4203',['packed_lowp_dvec4',['../a00921.html#ga262dafd0c001c3a38d1cc91d024ca738',1,'glm']]], + ['packed_5flowp_5fivec1_4204',['packed_lowp_ivec1',['../a00921.html#gaf22b77f1cf3e73b8b1dddfe7f959357c',1,'glm']]], + ['packed_5flowp_5fivec2_4205',['packed_lowp_ivec2',['../a00921.html#ga52635859f5ef660ab999d22c11b7867f',1,'glm']]], + ['packed_5flowp_5fivec3_4206',['packed_lowp_ivec3',['../a00921.html#ga98c9d122a959e9f3ce10a5623c310f5d',1,'glm']]], + ['packed_5flowp_5fivec4_4207',['packed_lowp_ivec4',['../a00921.html#ga931731b8ae3b54c7ecc221509dae96bc',1,'glm']]], + ['packed_5flowp_5fmat2_4208',['packed_lowp_mat2',['../a00921.html#ga70dcb9ef0b24e832772a7405efa9669a',1,'glm']]], + ['packed_5flowp_5fmat2x2_4209',['packed_lowp_mat2x2',['../a00921.html#gac70667c7642ec8d50245e6e6936a3927',1,'glm']]], + ['packed_5flowp_5fmat2x3_4210',['packed_lowp_mat2x3',['../a00921.html#ga3e7df5a11e1be27bc29a4c0d3956f234',1,'glm']]], + ['packed_5flowp_5fmat2x4_4211',['packed_lowp_mat2x4',['../a00921.html#gaea9c555e669dc56c45d95dcc75d59bf3',1,'glm']]], + ['packed_5flowp_5fmat3_4212',['packed_lowp_mat3',['../a00921.html#ga0d22400969dd223465b2900fecfb4f53',1,'glm']]], + ['packed_5flowp_5fmat3x2_4213',['packed_lowp_mat3x2',['../a00921.html#ga128cd52649621861635fab746df91735',1,'glm']]], + ['packed_5flowp_5fmat3x3_4214',['packed_lowp_mat3x3',['../a00921.html#ga5adf1802c5375a9dfb1729691bedd94e',1,'glm']]], + ['packed_5flowp_5fmat3x4_4215',['packed_lowp_mat3x4',['../a00921.html#ga92247ca09fa03c4013ba364f3a0fca7f',1,'glm']]], + ['packed_5flowp_5fmat4_4216',['packed_lowp_mat4',['../a00921.html#ga2a1dd2387725a335413d4c4fee8609c4',1,'glm']]], + ['packed_5flowp_5fmat4x2_4217',['packed_lowp_mat4x2',['../a00921.html#ga8f22607dcd090cd280071ccc689f4079',1,'glm']]], + ['packed_5flowp_5fmat4x3_4218',['packed_lowp_mat4x3',['../a00921.html#ga7661d759d6ad218e132e3d051e7b2c6c',1,'glm']]], + ['packed_5flowp_5fmat4x4_4219',['packed_lowp_mat4x4',['../a00921.html#ga776f18d1a6e7d399f05d386167dc60f5',1,'glm']]], + ['packed_5flowp_5fquat_4220',['packed_lowp_quat',['../a00921.html#ga7ca4acb5f69c7b4e7f834d2e8e012b7f',1,'glm']]], + ['packed_5flowp_5fuvec1_4221',['packed_lowp_uvec1',['../a00921.html#gaf111fed760ecce16cb1988807569bee5',1,'glm']]], + ['packed_5flowp_5fuvec2_4222',['packed_lowp_uvec2',['../a00921.html#ga958210fe245a75b058325d367c951132',1,'glm']]], + ['packed_5flowp_5fuvec3_4223',['packed_lowp_uvec3',['../a00921.html#ga576a3f8372197a56a79dee1c8280f485',1,'glm']]], + ['packed_5flowp_5fuvec4_4224',['packed_lowp_uvec4',['../a00921.html#gafdd97922b4a2a42cd0c99a13877ff4da',1,'glm']]], + ['packed_5flowp_5fvec1_4225',['packed_lowp_vec1',['../a00921.html#ga0a6198fe64166a6a61084d43c71518a9',1,'glm']]], + ['packed_5flowp_5fvec2_4226',['packed_lowp_vec2',['../a00921.html#gafbf1c2cce307c5594b165819ed83bf5d',1,'glm']]], + ['packed_5flowp_5fvec3_4227',['packed_lowp_vec3',['../a00921.html#ga3a30c137c1f8cce478c28eab0427a570',1,'glm']]], + ['packed_5flowp_5fvec4_4228',['packed_lowp_vec4',['../a00921.html#ga3cc94fb8de80bbd8a4aa7a5b206d304a',1,'glm']]], + ['packed_5fmat2_4229',['packed_mat2',['../a00921.html#gadd019b43fcf42e1590d45dddaa504a1a',1,'glm']]], + ['packed_5fmat2x2_4230',['packed_mat2x2',['../a00921.html#ga51eaadcdc292c8750f746a5dc3e6c517',1,'glm']]], + ['packed_5fmat2x3_4231',['packed_mat2x3',['../a00921.html#ga301b76a89b8a9625501ca58815017f20',1,'glm']]], + ['packed_5fmat2x4_4232',['packed_mat2x4',['../a00921.html#gac401da1dd9177ad81d7618a2a5541e23',1,'glm']]], + ['packed_5fmat3_4233',['packed_mat3',['../a00921.html#ga9bc12b0ab7be8448836711b77cc7b83a',1,'glm']]], + ['packed_5fmat3x2_4234',['packed_mat3x2',['../a00921.html#ga134f0d99fbd2459c13cd9ebd056509fa',1,'glm']]], + ['packed_5fmat3x3_4235',['packed_mat3x3',['../a00921.html#ga6c1dbe8cde9fbb231284b01f8aeaaa99',1,'glm']]], + ['packed_5fmat3x4_4236',['packed_mat3x4',['../a00921.html#gad63515526cccfe88ffa8fe5ed64f95f8',1,'glm']]], + ['packed_5fmat4_4237',['packed_mat4',['../a00921.html#ga2c139854e5b04cf08a957dee3b510441',1,'glm']]], + ['packed_5fmat4x2_4238',['packed_mat4x2',['../a00921.html#ga379c1153f1339bdeaefd592bebf538e8',1,'glm']]], + ['packed_5fmat4x3_4239',['packed_mat4x3',['../a00921.html#gab286466e19f7399c8d25089da9400d43',1,'glm']]], + ['packed_5fmat4x4_4240',['packed_mat4x4',['../a00921.html#ga67e7102557d6067bb6ac00d4ad0e1374',1,'glm']]], + ['packed_5fmediump_5fbvec1_4241',['packed_mediump_bvec1',['../a00921.html#ga5546d828d63010a8f9cf81161ad0275a',1,'glm']]], + ['packed_5fmediump_5fbvec2_4242',['packed_mediump_bvec2',['../a00921.html#gab4c6414a59539e66a242ad4cf4b476b4',1,'glm']]], + ['packed_5fmediump_5fbvec3_4243',['packed_mediump_bvec3',['../a00921.html#ga70147763edff3fe96b03a0b98d6339a2',1,'glm']]], + ['packed_5fmediump_5fbvec4_4244',['packed_mediump_bvec4',['../a00921.html#ga7b1620f259595b9da47a6374fc44588a',1,'glm']]], + ['packed_5fmediump_5fdmat2_4245',['packed_mediump_dmat2',['../a00921.html#ga9d60e32d3fcb51f817046cd881fdbf57',1,'glm']]], + ['packed_5fmediump_5fdmat2x2_4246',['packed_mediump_dmat2x2',['../a00921.html#ga39e8bb9b70e5694964e8266a21ba534e',1,'glm']]], + ['packed_5fmediump_5fdmat2x3_4247',['packed_mediump_dmat2x3',['../a00921.html#ga8897c6d9adb4140b1c3b0a07b8f0a430',1,'glm']]], + ['packed_5fmediump_5fdmat2x4_4248',['packed_mediump_dmat2x4',['../a00921.html#gaaa4126969c765e7faa2ebf6951c22ffb',1,'glm']]], + ['packed_5fmediump_5fdmat3_4249',['packed_mediump_dmat3',['../a00921.html#gaf969eb879c76a5f4576e4a1e10095cf6',1,'glm']]], + ['packed_5fmediump_5fdmat3x2_4250',['packed_mediump_dmat3x2',['../a00921.html#ga86efe91cdaa2864c828a5d6d46356c6a',1,'glm']]], + ['packed_5fmediump_5fdmat3x3_4251',['packed_mediump_dmat3x3',['../a00921.html#gaf85877d38d8cfbc21d59d939afd72375',1,'glm']]], + ['packed_5fmediump_5fdmat3x4_4252',['packed_mediump_dmat3x4',['../a00921.html#gad5dcaf93df267bc3029174e430e0907f',1,'glm']]], + ['packed_5fmediump_5fdmat4_4253',['packed_mediump_dmat4',['../a00921.html#ga4b0ee7996651ddd04eaa0c4cdbb66332',1,'glm']]], + ['packed_5fmediump_5fdmat4x2_4254',['packed_mediump_dmat4x2',['../a00921.html#ga9a15514a0631f700de6312b9d5db3a73',1,'glm']]], + ['packed_5fmediump_5fdmat4x3_4255',['packed_mediump_dmat4x3',['../a00921.html#gab5b36cc9caee1bb1c5178fe191bf5713',1,'glm']]], + ['packed_5fmediump_5fdmat4x4_4256',['packed_mediump_dmat4x4',['../a00921.html#ga21e86cf2f6c126bacf31b8985db06bd4',1,'glm']]], + ['packed_5fmediump_5fdquat_4257',['packed_mediump_dquat',['../a00921.html#ga1dabb421595c34a9dbec085a4d0e6685',1,'glm']]], + ['packed_5fmediump_5fdvec1_4258',['packed_mediump_dvec1',['../a00921.html#ga8920e90ea9c01d9c97e604a938ce2cbd',1,'glm']]], + ['packed_5fmediump_5fdvec2_4259',['packed_mediump_dvec2',['../a00921.html#ga0c754a783b6fcf80374c013371c4dae9',1,'glm']]], + ['packed_5fmediump_5fdvec3_4260',['packed_mediump_dvec3',['../a00921.html#ga1f18ada6f7cdd8c46db33ba987280fc4',1,'glm']]], + ['packed_5fmediump_5fdvec4_4261',['packed_mediump_dvec4',['../a00921.html#ga568b850f1116b667043533cf77826968',1,'glm']]], + ['packed_5fmediump_5fivec1_4262',['packed_mediump_ivec1',['../a00921.html#ga09507ef020a49517a7bcd50438f05056',1,'glm']]], + ['packed_5fmediump_5fivec2_4263',['packed_mediump_ivec2',['../a00921.html#gaaa891048dddef4627df33809ec726219',1,'glm']]], + ['packed_5fmediump_5fivec3_4264',['packed_mediump_ivec3',['../a00921.html#ga06f26d54dca30994eb1fdadb8e69f4a2',1,'glm']]], + ['packed_5fmediump_5fivec4_4265',['packed_mediump_ivec4',['../a00921.html#ga70130dc8ed9c966ec2a221ce586d45d8',1,'glm']]], + ['packed_5fmediump_5fmat2_4266',['packed_mediump_mat2',['../a00921.html#ga43cd36d430c5187bfdca34a23cb41581',1,'glm']]], + ['packed_5fmediump_5fmat2x2_4267',['packed_mediump_mat2x2',['../a00921.html#ga2d2a73e662759e301c22b8931ff6a526',1,'glm']]], + ['packed_5fmediump_5fmat2x3_4268',['packed_mediump_mat2x3',['../a00921.html#ga99049db01faf1e95ed9fb875a47dffe2',1,'glm']]], + ['packed_5fmediump_5fmat2x4_4269',['packed_mediump_mat2x4',['../a00921.html#gad43a240533f388ce0504b495d9df3d52',1,'glm']]], + ['packed_5fmediump_5fmat3_4270',['packed_mediump_mat3',['../a00921.html#ga13a75c6cbd0a411f694bc82486cd1e55',1,'glm']]], + ['packed_5fmediump_5fmat3x2_4271',['packed_mediump_mat3x2',['../a00921.html#ga04cfaf1421284df3c24ea0985dab24e7',1,'glm']]], + ['packed_5fmediump_5fmat3x3_4272',['packed_mediump_mat3x3',['../a00921.html#gaaa9cea174d342dd9650e3436823cab23',1,'glm']]], + ['packed_5fmediump_5fmat3x4_4273',['packed_mediump_mat3x4',['../a00921.html#gabc93a9560593bd32e099c908531305f5',1,'glm']]], + ['packed_5fmediump_5fmat4_4274',['packed_mediump_mat4',['../a00921.html#gae89d72ffc149147f61df701bbc8755bf',1,'glm']]], + ['packed_5fmediump_5fmat4x2_4275',['packed_mediump_mat4x2',['../a00921.html#gaa458f9d9e0934bae3097e2a373b24707',1,'glm']]], + ['packed_5fmediump_5fmat4x3_4276',['packed_mediump_mat4x3',['../a00921.html#ga02ca6255394aa778abaeb0f733c4d2b6',1,'glm']]], + ['packed_5fmediump_5fmat4x4_4277',['packed_mediump_mat4x4',['../a00921.html#gaf304f64c06743c1571401504d3f50259',1,'glm']]], + ['packed_5fmediump_5fquat_4278',['packed_mediump_quat',['../a00921.html#ga2e5c51d9c29323b8b1d26fbf8697cfae',1,'glm']]], + ['packed_5fmediump_5fuvec1_4279',['packed_mediump_uvec1',['../a00921.html#ga2c29fb42bab9a4f9b66bc60b2e514a34',1,'glm']]], + ['packed_5fmediump_5fuvec2_4280',['packed_mediump_uvec2',['../a00921.html#gaa1f95690a78dc12e39da32943243aeef',1,'glm']]], + ['packed_5fmediump_5fuvec3_4281',['packed_mediump_uvec3',['../a00921.html#ga1ea2bbdbcb0a69242f6d884663c1b0ab',1,'glm']]], + ['packed_5fmediump_5fuvec4_4282',['packed_mediump_uvec4',['../a00921.html#ga63a73be86a4f07ea7a7499ab0bfebe45',1,'glm']]], + ['packed_5fmediump_5fvec1_4283',['packed_mediump_vec1',['../a00921.html#ga71d63cead1e113fca0bcdaaa33aad050',1,'glm']]], + ['packed_5fmediump_5fvec2_4284',['packed_mediump_vec2',['../a00921.html#ga6844c6f4691d1bf67673240850430948',1,'glm']]], + ['packed_5fmediump_5fvec3_4285',['packed_mediump_vec3',['../a00921.html#gab0eb771b708c5b2205d9b14dd1434fd8',1,'glm']]], + ['packed_5fmediump_5fvec4_4286',['packed_mediump_vec4',['../a00921.html#ga68c9bb24f387b312bae6a0a68e74d95e',1,'glm']]], + ['packed_5fquat_4287',['packed_quat',['../a00921.html#gae71d7549208159faa0f6957f9418a828',1,'glm']]], + ['packed_5fuvec1_4288',['packed_uvec1',['../a00921.html#ga5621493caac01bdd22ab6be4416b0314',1,'glm']]], + ['packed_5fuvec2_4289',['packed_uvec2',['../a00921.html#gabcc33efb4d5e83b8fe4706360e75b932',1,'glm']]], + ['packed_5fuvec3_4290',['packed_uvec3',['../a00921.html#gab96804e99e3a72a35740fec690c79617',1,'glm']]], + ['packed_5fuvec4_4291',['packed_uvec4',['../a00921.html#ga8e5d92e84ebdbe2480cf96bc17d6e2f2',1,'glm']]], + ['packed_5fvec1_4292',['packed_vec1',['../a00921.html#ga14741e3d9da9ae83765389927f837331',1,'glm']]], + ['packed_5fvec2_4293',['packed_vec2',['../a00921.html#ga3254defa5a8f0ae4b02b45fedba84a66',1,'glm']]], + ['packed_5fvec3_4294',['packed_vec3',['../a00921.html#gaccccd090e185450caa28b5b63ad4e8f0',1,'glm']]], + ['packed_5fvec4_4295',['packed_vec4',['../a00921.html#ga37a0e0bf653169b581c5eea3d547fa5d',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_9.html b/include/glm/doc/api/search/typedefs_9.html new file mode 100644 index 0000000..88fe092 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_9.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_9.js b/include/glm/doc/api/search/typedefs_9.js new file mode 100644 index 0000000..265f387 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quat_4296',['quat',['../a00860.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], + ['qword_4297',['qword',['../a00974.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_a.html b/include/glm/doc/api/search/typedefs_a.html new file mode 100644 index 0000000..eb315ca --- /dev/null +++ b/include/glm/doc/api/search/typedefs_a.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_a.js b/include/glm/doc/api/search/typedefs_a.js new file mode 100644 index 0000000..f7e95cc --- /dev/null +++ b/include/glm/doc/api/search/typedefs_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['sint_4298',['sint',['../a00948.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], + ['size1_4299',['size1',['../a00980.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], + ['size1_5ft_4300',['size1_t',['../a00980.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], + ['size2_4301',['size2',['../a00980.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], + ['size2_5ft_4302',['size2_t',['../a00980.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], + ['size3_4303',['size3',['../a00980.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], + ['size3_5ft_4304',['size3_t',['../a00980.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], + ['size4_4305',['size4',['../a00980.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], + ['size4_5ft_4306',['size4_t',['../a00980.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_b.html b/include/glm/doc/api/search/typedefs_b.html new file mode 100644 index 0000000..06a7a03 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_b.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_b.js b/include/glm/doc/api/search/typedefs_b.js new file mode 100644 index 0000000..a221534 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_b.js @@ -0,0 +1,95 @@ +var searchData= +[ + ['u16_4307',['u16',['../a00922.html#gaa2d7acc0adb536fab71fe261232a40ff',1,'glm']]], + ['u16mat2_4308',['u16mat2',['../a00839.html#gab5b9f6f94a5b7190466cbce9a96f2151',1,'glm']]], + ['u16mat2x2_4309',['u16mat2x2',['../a00839.html#ga820fe7dddf5e891cf4345a23ce2ea813',1,'glm']]], + ['u16mat2x3_4310',['u16mat2x3',['../a00841.html#ga19d5860baba684549bd0774c36e48af2',1,'glm']]], + ['u16mat2x4_4311',['u16mat2x4',['../a00843.html#ga055726c5e617b57196bb8f4c695f5728',1,'glm']]], + ['u16mat3_4312',['u16mat3',['../a00847.html#ga8c37f20870755f50b73a689e08af8f88',1,'glm']]], + ['u16mat3x2_4313',['u16mat3x2',['../a00845.html#ga3311ce83a726e0153773bc42683434ed',1,'glm']]], + ['u16mat3x3_4314',['u16mat3x3',['../a00847.html#ga36803d6b625e15cda1579525b47eb859',1,'glm']]], + ['u16mat3x4_4315',['u16mat3x4',['../a00849.html#ga80afc1a131374aea2e16719c89cc9632',1,'glm']]], + ['u16mat4_4316',['u16mat4',['../a00855.html#gaabfaeee7099a24ea040a21c315564faf',1,'glm']]], + ['u16mat4x2_4317',['u16mat4x2',['../a00851.html#gad8c9aaf9191198e686af800ce8217449',1,'glm']]], + ['u16mat4x3_4318',['u16mat4x3',['../a00853.html#ga76c2c7a20b1012b4cc3374c47e2fe79c',1,'glm']]], + ['u16mat4x4_4319',['u16mat4x4',['../a00855.html#gadcf5da976c2ee709de8dd6dd65bca436',1,'glm']]], + ['u16vec1_4320',['u16vec1',['../a00892.html#ga08c05ba8ffb19f5d14ab584e1e9e9ee5',1,'glm']]], + ['u16vec2_4321',['u16vec2',['../a00893.html#ga2a78447eb9d66a114b193f4a25899c16',1,'glm']]], + ['u16vec3_4322',['u16vec3',['../a00894.html#ga1c522ca821c27b862fe51cf4024b064b',1,'glm']]], + ['u16vec4_4323',['u16vec4',['../a00895.html#ga529496d75775fb656a07993ea9af2450',1,'glm']]], + ['u32_4324',['u32',['../a00922.html#ga8165913e068444f7842302d40ba897b9',1,'glm']]], + ['u32mat2_4325',['u32mat2',['../a00839.html#ga811a43d955ef7caa919787e38abb1bab',1,'glm']]], + ['u32mat2x2_4326',['u32mat2x2',['../a00839.html#ga8426c09e876dc3837c2107b78a6a59b6',1,'glm']]], + ['u32mat2x3_4327',['u32mat2x3',['../a00841.html#ga0fd0b888a5973cfa8fcdab0dff8b6993',1,'glm']]], + ['u32mat2x4_4328',['u32mat2x4',['../a00843.html#ga544507f62e26969e98ce9a6afb5d2cad',1,'glm']]], + ['u32mat3_4329',['u32mat3',['../a00847.html#gac5c09be9a4646331e6e5d595316a3c29',1,'glm']]], + ['u32mat3x2_4330',['u32mat3x2',['../a00845.html#ga3ef030ce44dbd2e68bd12f1f7d47d242',1,'glm']]], + ['u32mat3x3_4331',['u32mat3x3',['../a00847.html#ga820b13b067c3bd0da9384d93b70ce9a6',1,'glm']]], + ['u32mat3x4_4332',['u32mat3x4',['../a00849.html#ga3fe03e2f7c65ded47c83f0efc3c584a1',1,'glm']]], + ['u32mat4_4333',['u32mat4',['../a00855.html#ga92fa0dd48e3a180a548e36ecd594224b',1,'glm']]], + ['u32mat4x2_4334',['u32mat4x2',['../a00851.html#gae4c874b9c833bedd7e67afaf159c350e',1,'glm']]], + ['u32mat4x3_4335',['u32mat4x3',['../a00853.html#ga03a1e404b5cd44e15f78cec8c9be1f58',1,'glm']]], + ['u32mat4x4_4336',['u32mat4x4',['../a00855.html#ga16e259d66272b5af0bb327896f461db6',1,'glm']]], + ['u32vec1_4337',['u32vec1',['../a00892.html#gae627372cfd5f20dd87db490387b71195',1,'glm']]], + ['u32vec2_4338',['u32vec2',['../a00893.html#ga2a266e46ee218d0c680f12b35c500cc0',1,'glm']]], + ['u32vec3_4339',['u32vec3',['../a00894.html#gae267358ff2a41d156d97f5762630235a',1,'glm']]], + ['u32vec4_4340',['u32vec4',['../a00895.html#ga31cef34e4cd04840c54741ff2f7005f0',1,'glm']]], + ['u64_4341',['u64',['../a00922.html#gaf3f312156984c365e9f65620354da70b',1,'glm']]], + ['u64mat2_4342',['u64mat2',['../a00839.html#ga19bf0cb18a85b0e0879f0f8f7fce6f43',1,'glm']]], + ['u64mat2x2_4343',['u64mat2x2',['../a00839.html#ga9e462f9cfd9026089ed140aadc91975b',1,'glm']]], + ['u64mat2x3_4344',['u64mat2x3',['../a00841.html#ga301b8f80a3a17c5bfa49f5225dec6888',1,'glm']]], + ['u64mat2x4_4345',['u64mat2x4',['../a00843.html#gaade09898ba32793e1a252330e881ebf4',1,'glm']]], + ['u64mat3_4346',['u64mat3',['../a00847.html#gafaaf26f1562308e1dc0889311e6e7a20',1,'glm']]], + ['u64mat3x2_4347',['u64mat3x2',['../a00845.html#ga4dc2fdfe9a3d2461101e017e1a24fef6',1,'glm']]], + ['u64mat3x3_4348',['u64mat3x3',['../a00847.html#ga5a750d248e0d1e2436b5b2c81b3b5896',1,'glm']]], + ['u64mat3x4_4349',['u64mat3x4',['../a00849.html#gaf7143266570d2647825063a9ede9f088',1,'glm']]], + ['u64mat4_4350',['u64mat4',['../a00855.html#ga878c0ff8a8ed0a7381216311bf0b9235',1,'glm']]], + ['u64mat4x2_4351',['u64mat4x2',['../a00851.html#ga4ca9245422ee360303ec8daab16e8572',1,'glm']]], + ['u64mat4x3_4352',['u64mat4x3',['../a00853.html#ga91a05c8024b2e745460a6606f17fc602',1,'glm']]], + ['u64mat4x4_4353',['u64mat4x4',['../a00855.html#gac1abc008e8233c926c8ee188c3958142',1,'glm']]], + ['u64vec1_4354',['u64vec1',['../a00892.html#gaf09f3ca4b671a4a4f84505eb4cc865fd',1,'glm']]], + ['u64vec2_4355',['u64vec2',['../a00893.html#gaef3824ed4fe435a019c5b9dddf53fec5',1,'glm']]], + ['u64vec3_4356',['u64vec3',['../a00894.html#ga489b89ba93d4f7b3934df78debc52276',1,'glm']]], + ['u64vec4_4357',['u64vec4',['../a00895.html#ga3945dd6515d4498cb603e65ff867ab03',1,'glm']]], + ['u8_4358',['u8',['../a00922.html#gaecc7082561fc9028b844b6cf3d305d36',1,'glm']]], + ['u8mat2_4359',['u8mat2',['../a00839.html#ga222219d3aab9c3b2d835b55d7a961b4e',1,'glm']]], + ['u8mat2x2_4360',['u8mat2x2',['../a00839.html#gadc76d570d23f338a90e9d41d3279199e',1,'glm']]], + ['u8mat2x3_4361',['u8mat2x3',['../a00841.html#ga69282ea3f7a720c1b17c15d9add5444d',1,'glm']]], + ['u8mat2x4_4362',['u8mat2x4',['../a00843.html#gaf23eaa003d78c2eff52e35af503b4774',1,'glm']]], + ['u8mat3_4363',['u8mat3',['../a00847.html#ga765e47b3da32d6f8d7eafc246628a9a6',1,'glm']]], + ['u8mat3x2_4364',['u8mat3x2',['../a00845.html#ga61551e90468eb24390b045e6733fa9b4',1,'glm']]], + ['u8mat3x3_4365',['u8mat3x3',['../a00847.html#ga8bf749cc271c29f7042f9ea6c6907c82',1,'glm']]], + ['u8mat3x4_4366',['u8mat3x4',['../a00849.html#gaf76f5f883e1d87d56d6d3e53ec3c89b3',1,'glm']]], + ['u8mat4_4367',['u8mat4',['../a00855.html#ga5adf8e1402abec3ea43c1788832065ed',1,'glm']]], + ['u8mat4x2_4368',['u8mat4x2',['../a00851.html#gabf8d4cbe77031670484fd35eac3168b0',1,'glm']]], + ['u8mat4x3_4369',['u8mat4x3',['../a00853.html#ga43c213a100d91f4606b8008284aa4967',1,'glm']]], + ['u8mat4x4_4370',['u8mat4x4',['../a00855.html#gaa54ad379d3d259c67aa2f75f64670408',1,'glm']]], + ['u8vec1_4371',['u8vec1',['../a00892.html#ga29b349e037f0b24320b4548a143daee2',1,'glm']]], + ['u8vec2_4372',['u8vec2',['../a00893.html#ga518b8d948a6b4ddb72f84d5c3b7b6611',1,'glm']]], + ['u8vec3_4373',['u8vec3',['../a00894.html#ga7c5706f6bbe5282e5598acf7e7b377e2',1,'glm']]], + ['u8vec4_4374',['u8vec4',['../a00895.html#ga20779a61de2fd526a17f12fe53ec46b1',1,'glm']]], + ['uint16_4375',['uint16',['../a00873.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e',1,'glm']]], + ['uint16_5ft_4376',['uint16_t',['../a00922.html#ga91f91f411080c37730856ff5887f5bcf',1,'glm']]], + ['uint32_4377',['uint32',['../a00873.html#ga1134b580f8da4de94ca6b1de4d37975e',1,'glm']]], + ['uint32_5ft_4378',['uint32_t',['../a00922.html#ga2171d9dc1fefb1c82e2817f45b622eac',1,'glm']]], + ['uint64_4379',['uint64',['../a00873.html#gab630f76c26b50298187f7889104d4b9c',1,'glm']]], + ['uint64_5ft_4380',['uint64_t',['../a00922.html#ga3999d3e7ff22025c16ddb601e14dfdee',1,'glm']]], + ['uint8_4381',['uint8',['../a00873.html#gadde6aaee8457bee49c2a92621fe22b79',1,'glm']]], + ['uint8_5ft_4382',['uint8_t',['../a00922.html#ga28d97808322d3c92186e4a0c067d7e8e',1,'glm']]], + ['umat2_4383',['umat2',['../a00838.html#gac41defbdac8ca0edf9b21f4d4d16a508',1,'glm']]], + ['umat2x2_4384',['umat2x2',['../a00838.html#ga02daa4c5f3b185e8f99cd8a2f8bc7554',1,'glm']]], + ['umat2x3_4385',['umat2x3',['../a00840.html#ga89375c2308a3fa15f878394c7b38b224',1,'glm']]], + ['umat2x4_4386',['umat2x4',['../a00842.html#ga396cc751951467cc6ed570e158900813',1,'glm']]], + ['umat3_4387',['umat3',['../a00846.html#gaffdc395cb4be217d92a17235e8e0fc99',1,'glm']]], + ['umat3x2_4388',['umat3x2',['../a00844.html#ga9ca0dd40c861ee6307a97a242a91f119',1,'glm']]], + ['umat3x3_4389',['umat3x3',['../a00846.html#gaebb9027bcbaeb05e0678a00f03d2c312',1,'glm']]], + ['umat3x4_4390',['umat3x4',['../a00848.html#gafd52ce3ed03df04b38208e7ef7a6db28',1,'glm']]], + ['umat4_4391',['umat4',['../a00854.html#ga428a8d4d3e62d81b91c0fd4c3d5a905f',1,'glm']]], + ['umat4x2_4392',['umat4x2',['../a00850.html#ga03f2451aa64f11c36398dbc4db4b4ca5',1,'glm']]], + ['umat4x3_4393',['umat4x3',['../a00852.html#ga0aec0e4ce9f3197ec65d2d34c8fb69d2',1,'glm']]], + ['umat4x4_4394',['umat4x4',['../a00854.html#ga623eaba1dfb104d0ce01b3bb6852540a',1,'glm']]], + ['uvec1_4395',['uvec1',['../a00891.html#ga94fab575ce384c7ed3720debde574030',1,'glm']]], + ['uvec2_4396',['uvec2',['../a00899.html#gab173892ee0fd88db1e13a17b1d861326',1,'glm']]], + ['uvec3_4397',['uvec3',['../a00899.html#ga126b028d481b6dba20c90b1f87f09dbd',1,'glm']]], + ['uvec4_4398',['uvec4',['../a00899.html#ga4bb78ab04327c88f8e0eb8af30734851',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_c.html b/include/glm/doc/api/search/typedefs_c.html new file mode 100644 index 0000000..97fc29d --- /dev/null +++ b/include/glm/doc/api/search/typedefs_c.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_c.js b/include/glm/doc/api/search/typedefs_c.js new file mode 100644 index 0000000..f376f54 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['vec1_4399',['vec1',['../a00880.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], + ['vec2_4400',['vec2',['../a00899.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], + ['vec3_4401',['vec3',['../a00899.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], + ['vec4_4402',['vec4',['../a00899.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]] +]; diff --git a/include/glm/doc/api/search/typedefs_d.html b/include/glm/doc/api/search/typedefs_d.html new file mode 100644 index 0000000..b5e9e44 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_d.html @@ -0,0 +1,36 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/include/glm/doc/api/search/typedefs_d.js b/include/glm/doc/api/search/typedefs_d.js new file mode 100644 index 0000000..c587c27 --- /dev/null +++ b/include/glm/doc/api/search/typedefs_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['word_4403',['word',['../a00974.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]] +]; diff --git a/include/glm/doc/api/splitbar.png b/include/glm/doc/api/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bc78b2826eb4e32c5c7b00247aee6141b2a004 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=JfEakt5%>1oLf!@k0Tzd@zj_(1T>F?!+T=VO9&KmhYdpNbpg3vr z+%-EC_ddO|SvPX|ndHzG0VfVc4C2>Rt!^!Ot9PNXYbX5=(_gQIp#q{ye&u%Vi9ZDQ UeGhkH2Rebl)78&qol`;+0Eb>qmjD0& literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/sync_off.png b/include/glm/doc/api/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..9402c109d97fc70608ecf1b419628f8f64ee954c GIT binary patch literal 717 zcmV;;0y6!HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0zOGZK~zXfrPa+#RACebaK(Qi7dJ|CqxJe>kua3jNK)!d919Ya zx97~Ad++<+dm43I{9xw1&pBtl?wt~{twN5&9e4#FU=@DCJoLd`s0OJwM=U})bOH}k zd-x4KPz9k`p#ofk&maveWDRbDG0%7cEwByJfc<&^-b{V?RXFT$*DWv>9D%POg^RHX zC&635U#JvR)OlL2vq+U(cML%(4?hN(d{J{$Q6j!eV~+!MO}qh_0lbK6`P{Zn@q*Ss z5e;V)EsQE6QZ)L|Jk#}DaWbhHMb9runGRmiYZPPkiqapQ#{Di}t4oUdn}V4HFIeyj z!}k?se)vsnaYE7LGw61>*~zG)w%LUFHSO)jIRi3`42hj!IOntbE|Kxvx)Lh74@Lsvgc%nHAe0}VIG%V;X zT!hf9P$7U9J%L&H0({?Ehh<2>Q^ literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/sync_on.png b/include/glm/doc/api/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..85d975472a1815401af24942378f2f4942971804 GIT binary patch literal 712 zcmV;(0yq7MP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0y#-UK~zXfrPa?%R8bTMaHW4C7cVSxqiF>a zI8&I6-AATD4I=tW#SONRt3%C}S z;~O+UF@O)$wNQ&3m9=oKtl37Pl80AACSMFVutUj&qKR9wm*`ZKe2nlq*)tkB;A)_# zMUE+&9alu8X#A$^$4=?q{IsIMR@vA3Ip9H{s3_i{DE&bX*e!sqEGT+(UakpwNe-B` zieuLmWme5*HaDf{#a+0U7gdxRwbx{`uCH>D1N76%hc-QIZz@OXDP}cn<^wi3fS*7V z>&`fNO!G7Hd*u-) zT#L)m1G%~W0LFh7t_}ZV0E#pH!wdLNehXZiOZf@KcV1v!_#6j*K7NC1SkQB50WnJy u0ywA--oR(z->nT;ge2U7++n(T6@LJKeZ8?m#aR#l0000VM%xNb!1@J z*w6hZkrl}2EbxddW?->OfygXeTLnOj;kDcXpaA074czwCumW0lN58E9lSY&%MY8lMl)7*S`x@4=* zuA-NAOP;&D>f?QVyy>Qro6ie_1>d({i}-a*OIxr`q>53-&2+KIj3XgHQyDy6{an^L HB{Ts5+#p5X literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/tab_b.png b/include/glm/doc/api/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e14114dc75fef8984382122e778c4a0948dfcd6d GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?->Of@;qG}LnOjg&sg&{1&FjfjI^Lb%~~M)X&Qgy136-oP4kRDkVa3`h3=FH%?p@ sv!0Uj&0VM%xNb!1@J z*w6hZkrl}2EbxddW?->Of3OrpLLnOkJe{9)0>EY#jWo`cK%NahZD7<6+bh}|k>%+_E*c8?^uDBV+ zc;u)<%#jb7!HkEOms&c^;XM-RFo*NtXWPab+#P!xZ?r$WyvRX;kLgi@0w3d}fHwcr viyAE29$sFhqTts!gV88IQswaSlVS{BcAggT5kfscyBR!P{an^LB{Ts5E4^4Y literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/tab_s.png b/include/glm/doc/api/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..8d36eef701f28f3037288ac442aa5c51ea79ed0d GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!2^0spJ29*~C-V}>VM%xNb!1@J z*w6hZkrl}2EbxddW?->OfNbP0l+XkKBJ5O) literal 0 HcmV?d00001 diff --git a/include/glm/doc/api/tabs.css b/include/glm/doc/api/tabs.css new file mode 100644 index 0000000..85a0cd5 --- /dev/null +++ b/include/glm/doc/api/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/include/glm/doc/man.doxy b/include/glm/doc/man.doxy new file mode 100644 index 0000000..98284fe --- /dev/null +++ b/include/glm/doc/man.doxy @@ -0,0 +1,2538 @@ +# Doxyfile 1.8.18 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the configuration +# file that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "1.0.0 API documentation" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = theme/logo-mini.png + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all generated output in the proper direction. +# Possible values are: None, LTR, RTL and Context. +# The default value is: None. + +OUTPUT_TEXT_DIRECTION = None + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class " \ + "The $name widget " \ + "The $name file " \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = "C:/Documents and Settings/Groove/ " + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = YES + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = YES + +# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# such as +# /*************** +# as being the beginning of a Javadoc-style comment "banner". If set to NO, the +# Javadoc-style will behave just like regular comments and it will not be +# interpreted by doxygen. +# The default value is: NO. + +JAVADOC_BANNER = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. +# When you need a literal { or } or , in the value part of an alias you have to +# escape them by means of a backslash (\), this can lead to conflicts with the +# commands \{ and \} for these it is advised to use the version @{ and @} or use +# a double escape (\\{ and \\}) + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice +# sources only. Doxygen will then generate output that is more tailored for that +# language. For instance, namespaces will be presented as modules, types will be +# separated into more groups, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_SLICE = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, +# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser +# tries to guess whether the code is fixed or free formatted code, this is the +# default for Fortran type files). For instance to make doxygen treat .inc files +# as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See https://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 5. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 5 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = NO + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual +# methods of a class will be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIV_VIRTUAL = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# declarations. If set to NO, these declarations will be included in the +# documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = YES + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# (including Cygwin) ands Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = YES + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = NO + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = NO + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = YES + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. If +# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = ../glm \ + . + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), +# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen +# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, +# *.vhdl, *.ucf, *.qsf and *.ice. + +FILE_PATTERNS = *.hpp \ + *.doxy + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# entity all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +# If clang assisted parsing is enabled you can provide the clang parser with the +# path to the compilation database (see: +# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files +# were built. This is equivalent to specifying the "-p" option to a clang tool, +# such as clang-check. These options will then be passed to the parser. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse_libclang=ON option for CMake. + +CLANG_DATABASE_PATH = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = NO + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via JavaScript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have JavaScript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/xcode/), introduced with OSX +# 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy +# genXcode/_index.html for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see +# https://inkscape.org) to generate formulas as SVG images instead of PNGs for +# the HTML output. These images will generally look nicer at scaled resolutions. +# Possible values are: png The default and svg Looks nicer but requires the +# pdf2svg tool. +# The default value is: png. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FORMULA_FORMAT = png + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands +# to create new LaTeX commands to be used in formulas as building blocks. See +# the section "Including formulas" for details. + +FORMULA_MACROFILE = + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side JavaScript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /