├── .appveyor.yml ├── .github └── workflows │ ├── ci.yml │ └── make_light_release.yml ├── .gitignore ├── .travis.yml ├── CMakeLists.txt ├── cmake └── cmake_uninstall.cmake.in ├── copying.txt ├── doc ├── api │ ├── a00001_source.html │ ├── a00002.html │ ├── a00002_source.html │ ├── a00003_source.html │ ├── a00004_source.html │ ├── a00005_source.html │ ├── a00006_source.html │ ├── a00007.html │ ├── a00007_source.html │ ├── a00008.html │ ├── a00008_source.html │ ├── a00009.html │ ├── a00009_source.html │ ├── a00010.html │ ├── a00010_source.html │ ├── a00011.html │ ├── a00011_source.html │ ├── a00012.html │ ├── a00012_source.html │ ├── a00013.html │ ├── a00013_source.html │ ├── a00014.html │ ├── a00014_source.html │ ├── a00015.html │ ├── a00015_source.html │ ├── a00016.html │ ├── a00016_source.html │ ├── a00017.html │ ├── a00017_source.html │ ├── a00018.html │ ├── a00018_source.html │ ├── a00019_source.html │ ├── a00020_source.html │ ├── a00021.html │ ├── a00021_source.html │ ├── a00022.html │ ├── a00022_source.html │ ├── a00023.html │ ├── a00023_source.html │ ├── a00024.html │ ├── a00024_source.html │ ├── a00025.html │ ├── a00025_source.html │ ├── a00026.html │ ├── a00026_source.html │ ├── a00027.html │ ├── a00027_source.html │ ├── a00028.html │ ├── a00028_source.html │ ├── a00029.html │ ├── a00029_source.html │ ├── a00030.html │ ├── a00030_source.html │ ├── a00031.html │ ├── a00031_source.html │ ├── a00032.html │ ├── a00032_source.html │ ├── a00033.html │ ├── a00033_source.html │ ├── a00034.html │ ├── a00034_source.html │ ├── a00035_source.html │ ├── a00036.html │ ├── a00036_source.html │ ├── a00037.html │ ├── a00037_source.html │ ├── a00038.html │ ├── a00038_source.html │ ├── a00039.html │ ├── a00039_source.html │ ├── a00040.html │ ├── a00040_source.html │ ├── a00041.html │ ├── a00041_source.html │ ├── a00042.html │ ├── a00042_source.html │ ├── a00043.html │ ├── a00043_source.html │ ├── a00044.html │ ├── a00044_source.html │ ├── a00045.html │ ├── a00045_source.html │ ├── a00046.html │ ├── a00046_source.html │ ├── a00047.html │ ├── a00047_source.html │ ├── a00048.html │ ├── a00048_source.html │ ├── a00049.html │ ├── a00049_source.html │ ├── a00050.html │ ├── a00050_source.html │ ├── a00051.html │ ├── a00051_source.html │ ├── a00052.html │ ├── a00052_source.html │ ├── a00053.html │ ├── a00053_source.html │ ├── a00054.html │ ├── a00054_source.html │ ├── a00055.html │ ├── a00055_source.html │ ├── a00056.html │ ├── a00056_source.html │ ├── a00057.html │ ├── a00057_source.html │ ├── a00058.html │ ├── a00058_source.html │ ├── a00059.html │ ├── a00059_source.html │ ├── a00060.html │ ├── a00060_source.html │ ├── a00061.html │ ├── a00061_source.html │ ├── a00062.html │ ├── a00062_source.html │ ├── a00063.html │ ├── a00063_source.html │ ├── a00064.html │ ├── a00064_source.html │ ├── a00065.html │ ├── a00065_source.html │ ├── a00066.html │ ├── a00066_source.html │ ├── a00067.html │ ├── a00067_source.html │ ├── a00068.html │ ├── a00068_source.html │ ├── a00069.html │ ├── a00069_source.html │ ├── a00070.html │ ├── a00070_source.html │ ├── a00071.html │ ├── a00071_source.html │ ├── a00072.html │ ├── a00072_source.html │ ├── a00073.html │ ├── a00073_source.html │ ├── a00074.html │ ├── a00074_source.html │ ├── a00075.html │ ├── a00075_source.html │ ├── a00076.html │ ├── a00076_source.html │ ├── a00077.html │ ├── a00077_source.html │ ├── a00078.html │ ├── a00078_source.html │ ├── a00079.html │ ├── a00079_source.html │ ├── a00080.html │ ├── a00080_source.html │ ├── a00081.html │ ├── a00081_source.html │ ├── a00082.html │ ├── a00082_source.html │ ├── a00083.html │ ├── a00083_source.html │ ├── a00084.html │ ├── a00084_source.html │ ├── a00085.html │ ├── a00085_source.html │ ├── a00086.html │ ├── a00086_source.html │ ├── a00087.html │ ├── a00087_source.html │ ├── a00088.html │ ├── a00088_source.html │ ├── a00089.html │ ├── a00089_source.html │ ├── a00090.html │ ├── a00090_source.html │ ├── a00091.html │ ├── a00091_source.html │ ├── a00092.html │ ├── a00092_source.html │ ├── a00093.html │ ├── a00093_source.html │ ├── a00094.html │ ├── a00094_source.html │ ├── a00095.html │ ├── a00095_source.html │ ├── a00096.html │ ├── a00096_source.html │ ├── a00097.html │ ├── a00097_source.html │ ├── a00098.html │ ├── a00098_source.html │ ├── a00099.html │ ├── a00099_source.html │ ├── a00100.html │ ├── a00100_source.html │ ├── a00101.html │ ├── a00101_source.html │ ├── a00102.html │ ├── a00102_source.html │ ├── a00103.html │ ├── a00103_source.html │ ├── a00104.html │ ├── a00104_source.html │ ├── a00105.html │ ├── a00105_source.html │ ├── a00106.html │ ├── a00106_source.html │ ├── a00107.html │ ├── a00107_source.html │ ├── a00108.html │ ├── a00108_source.html │ ├── a00109.html │ ├── a00109_source.html │ ├── a00110.html │ ├── a00110_source.html │ ├── a00111.html │ ├── a00111_source.html │ ├── a00112.html │ ├── a00112_source.html │ ├── a00113.html │ ├── a00113_source.html │ ├── a00114.html │ ├── a00114_source.html │ ├── a00115.html │ ├── a00115_source.html │ ├── a00116.html │ ├── a00116_source.html │ ├── a00117.html │ ├── a00117_source.html │ ├── a00118.html │ ├── a00118_source.html │ ├── a00119.html │ ├── a00119_source.html │ ├── a00120.html │ ├── a00120_source.html │ ├── a00121.html │ ├── a00121_source.html │ ├── a00122.html │ ├── a00122_source.html │ ├── a00123.html │ ├── a00123_source.html │ ├── a00124_source.html │ ├── a00125.html │ ├── a00125_source.html │ ├── a00126.html │ ├── a00126_source.html │ ├── a00127.html │ ├── a00127_source.html │ ├── a00128.html │ ├── a00128_source.html │ ├── a00129.html │ ├── a00129_source.html │ ├── a00130.html │ ├── a00130_source.html │ ├── a00131.html │ ├── a00131_source.html │ ├── a00132.html │ ├── a00132_source.html │ ├── a00133.html │ ├── a00133_source.html │ ├── a00134.html │ ├── a00134_source.html │ ├── a00135.html │ ├── a00135_source.html │ ├── a00136.html │ ├── a00136_source.html │ ├── a00137.html │ ├── a00137_source.html │ ├── a00138.html │ ├── a00138_source.html │ ├── a00139.html │ ├── a00139_source.html │ ├── a00140.html │ ├── a00140_source.html │ ├── a00141.html │ ├── a00141_source.html │ ├── a00142.html │ ├── a00142_source.html │ ├── a00143.html │ ├── a00143_source.html │ ├── a00144.html │ ├── a00144_source.html │ ├── a00145.html │ ├── a00145_source.html │ ├── a00146.html │ ├── a00146_source.html │ ├── a00147.html │ ├── a00147_source.html │ ├── a00148.html │ ├── a00148_source.html │ ├── a00149.html │ ├── a00149_source.html │ ├── a00150.html │ ├── a00150_source.html │ ├── a00151.html │ ├── a00151_source.html │ ├── a00152.html │ ├── a00152_source.html │ ├── a00153_source.html │ ├── a00154.html │ ├── a00154_source.html │ ├── a00155.html │ ├── a00155_source.html │ ├── a00156.html │ ├── a00156_source.html │ ├── a00157.html │ ├── a00157_source.html │ ├── a00158.html │ ├── a00158_source.html │ ├── a00159.html │ ├── a00159_source.html │ ├── a00160.html │ ├── a00160_source.html │ ├── a00161.html │ ├── a00161_source.html │ ├── a00162.html │ ├── a00162_source.html │ ├── a00163_source.html │ ├── a00164.html │ ├── a00164_source.html │ ├── a00165.html │ ├── a00165_source.html │ ├── a00166.html │ ├── a00166_source.html │ ├── a00167.html │ ├── a00167_source.html │ ├── a00168.html │ ├── a00168_source.html │ ├── a00169.html │ ├── a00169_source.html │ ├── a00170.html │ ├── a00170_source.html │ ├── a00171.html │ ├── a00171_source.html │ ├── a00172.html │ ├── a00172_source.html │ ├── a00173.html │ ├── a00173_source.html │ ├── a00174.html │ ├── a00174_source.html │ ├── a00175.html │ ├── a00175_source.html │ ├── a00176.html │ ├── a00176_source.html │ ├── a00177.html │ ├── a00177_source.html │ ├── a00178.html │ ├── a00178_source.html │ ├── a00179.html │ ├── a00179_source.html │ ├── a00180.html │ ├── a00180_source.html │ ├── a00181.html │ ├── a00181_source.html │ ├── a00182.html │ ├── a00182_source.html │ ├── a00183.html │ ├── a00183_source.html │ ├── a00184.html │ ├── a00184_source.html │ ├── a00185.html │ ├── a00185_source.html │ ├── a00186.html │ ├── a00186_source.html │ ├── a00187.html │ ├── a00187_source.html │ ├── a00188.html │ ├── a00188_source.html │ ├── a00189.html │ ├── a00189_source.html │ ├── a00190.html │ ├── a00190_source.html │ ├── a00191.html │ ├── a00191_source.html │ ├── a00192.html │ ├── a00192_source.html │ ├── a00193.html │ ├── a00193_source.html │ ├── a00194.html │ ├── a00194_source.html │ ├── a00195.html │ ├── a00195_source.html │ ├── a00196.html │ ├── a00196_source.html │ ├── a00197.html │ ├── a00197_source.html │ ├── a00198.html │ ├── a00198_source.html │ ├── a00199.html │ ├── a00199_source.html │ ├── a00200.html │ ├── a00200_source.html │ ├── a00201.html │ ├── a00201_source.html │ ├── a00202.html │ ├── a00202_source.html │ ├── a00203.html │ ├── a00203_source.html │ ├── a00204.html │ ├── a00204_source.html │ ├── a00205.html │ ├── a00205_source.html │ ├── a00206.html │ ├── a00206_source.html │ ├── a00207.html │ ├── a00207_source.html │ ├── a00208.html │ ├── a00208_source.html │ ├── a00209.html │ ├── a00209_source.html │ ├── a00210.html │ ├── a00210_source.html │ ├── a00211.html │ ├── a00211_source.html │ ├── a00212.html │ ├── a00212_source.html │ ├── a00213.html │ ├── a00213_source.html │ ├── a00214.html │ ├── a00214_source.html │ ├── a00215.html │ ├── a00215_source.html │ ├── a00216.html │ ├── a00216_source.html │ ├── a00217.html │ ├── a00217_source.html │ ├── a00218.html │ ├── a00218_source.html │ ├── a00219.html │ ├── a00219_source.html │ ├── a00220.html │ ├── a00220_source.html │ ├── a00221.html │ ├── a00221_source.html │ ├── a00222.html │ ├── a00222_source.html │ ├── a00223.html │ ├── a00223_source.html │ ├── a00224.html │ ├── a00224_source.html │ ├── a00225.html │ ├── a00225_source.html │ ├── a00226.html │ ├── a00226_source.html │ ├── a00227.html │ ├── a00227_source.html │ ├── a00228.html │ ├── a00228_source.html │ ├── a00229.html │ ├── a00229_source.html │ ├── a00230.html │ ├── a00230_source.html │ ├── a00231.html │ ├── a00231_source.html │ ├── a00232.html │ ├── a00232_source.html │ ├── a00233.html │ ├── a00233_source.html │ ├── a00234.html │ ├── a00234_source.html │ ├── a00235.html │ ├── a00235_source.html │ ├── a00236_source.html │ ├── a00239.html │ ├── a00239_source.html │ ├── a00241.html │ ├── a00242.html │ ├── a00242_source.html │ ├── a00243.html │ ├── a00244.html │ ├── a00245.html │ ├── a00245_source.html │ ├── a00246.html │ ├── a00247.html │ ├── a00248.html │ ├── a00248_source.html │ ├── a00249.html │ ├── a00250.html │ ├── a00251.html │ ├── a00251_source.html │ ├── a00252.html │ ├── a00253.html │ ├── a00254.html │ ├── a00254_source.html │ ├── a00255.html │ ├── a00256.html │ ├── a00257.html │ ├── a00258.html │ ├── a00259.html │ ├── a00260.html │ ├── a00260_source.html │ ├── a00261.html │ ├── a00262.html │ ├── a00263.html │ ├── a00263_source.html │ ├── a00264.html │ ├── a00265.html │ ├── a00266.html │ ├── a00267.html │ ├── a00268.html │ ├── a00269.html │ ├── a00269_source.html │ ├── a00270.html │ ├── a00271.html │ ├── a00272.html │ ├── a00272_source.html │ ├── a00273.html │ ├── a00274.html │ ├── a00275.html │ ├── a00275_source.html │ ├── a00276.html │ ├── a00277.html │ ├── a00278.html │ ├── a00278_source.html │ ├── a00279.html │ ├── a00280.html │ ├── a00281.html │ ├── a00281_source.html │ ├── a00282.html │ ├── a00283.html │ ├── a00284.html │ ├── a00284_source.html │ ├── a00285.html │ ├── a00286.html │ ├── a00287.html │ ├── a00287_source.html │ ├── a00288.html │ ├── a00289.html │ ├── a00290.html │ ├── a00290_source.html │ ├── a00291.html │ ├── a00292.html │ ├── a00293.html │ ├── a00293_source.html │ ├── a00294.html │ ├── a00295.html │ ├── a00296.html │ ├── a00296_source.html │ ├── a00297.html │ ├── a00298.html │ ├── a00299.html │ ├── a00299_source.html │ ├── a00300.html │ ├── a00301.html │ ├── a00302.html │ ├── a00302_source.html │ ├── a00303.html │ ├── a00304.html │ ├── a00305.html │ ├── a00305_source.html │ ├── a00306.html │ ├── a00307.html │ ├── a00308.html │ ├── a00308_source.html │ ├── a00309.html │ ├── a00310.html │ ├── a00311.html │ ├── a00311_source.html │ ├── a00312.html │ ├── a00313.html │ ├── a00314.html │ ├── a00314_source.html │ ├── a00315.html │ ├── a00316.html │ ├── a00317.html │ ├── a00317_source.html │ ├── a00318.html │ ├── a00319.html │ ├── a00320.html │ ├── a00320_source.html │ ├── a00321.html │ ├── a00322.html │ ├── a00323.html │ ├── a00323_source.html │ ├── a00324.html │ ├── a00325.html │ ├── a00326.html │ ├── a00326_source.html │ ├── a00327.html │ ├── a00328.html │ ├── a00329.html │ ├── a00329_source.html │ ├── a00330.html │ ├── a00331.html │ ├── a00332.html │ ├── a00332_source.html │ ├── a00333.html │ ├── a00334.html │ ├── a00335.html │ ├── a00335_source.html │ ├── a00336.html │ ├── a00337.html │ ├── a00338.html │ ├── a00338_source.html │ ├── a00339.html │ ├── a00340.html │ ├── a00341.html │ ├── a00341_source.html │ ├── a00342.html │ ├── a00343.html │ ├── a00344.html │ ├── a00344_source.html │ ├── a00345.html │ ├── a00346.html │ ├── a00347.html │ ├── a00347_source.html │ ├── a00348.html │ ├── a00349.html │ ├── a00350.html │ ├── a00350_source.html │ ├── a00351.html │ ├── a00352.html │ ├── a00353.html │ ├── a00353_source.html │ ├── a00354.html │ ├── a00355.html │ ├── a00356.html │ ├── a00356_source.html │ ├── a00357.html │ ├── a00358.html │ ├── a00359.html │ ├── a00359_source.html │ ├── a00360.html │ ├── a00361.html │ ├── a00362.html │ ├── a00362_source.html │ ├── a00363.html │ ├── a00364.html │ ├── a00365.html │ ├── a00365_source.html │ ├── a00366.html │ ├── a00367.html │ ├── a00368.html │ ├── a00368_source.html │ ├── a00369.html │ ├── a00370.html │ ├── a00371.html │ ├── a00372.html │ ├── a00373.html │ ├── a00374.html │ ├── a00374_source.html │ ├── a00377.html │ ├── a00377_source.html │ ├── a00380.html │ ├── a00380_source.html │ ├── a00383.html │ ├── a00383_source.html │ ├── a00386.html │ ├── a00386_source.html │ ├── a00389.html │ ├── a00389_source.html │ ├── a00392.html │ ├── a00392_source.html │ ├── a00395.html │ ├── a00395_source.html │ ├── a00398.html │ ├── a00398_source.html │ ├── a00401.html │ ├── a00401_source.html │ ├── a00404.html │ ├── a00404_source.html │ ├── a00407.html │ ├── a00407_source.html │ ├── a00410.html │ ├── a00410_source.html │ ├── a00413.html │ ├── a00413_source.html │ ├── a00416.html │ ├── a00416_source.html │ ├── a00419.html │ ├── a00419_source.html │ ├── a00422.html │ ├── a00422_source.html │ ├── a00425.html │ ├── a00425_source.html │ ├── a00428.html │ ├── a00428_source.html │ ├── a00431.html │ ├── a00431_source.html │ ├── a00434.html │ ├── a00434_source.html │ ├── a00437.html │ ├── a00437_source.html │ ├── a00440.html │ ├── a00440_source.html │ ├── a00443.html │ ├── a00443_source.html │ ├── a00446.html │ ├── a00446_source.html │ ├── a00449.html │ ├── a00449_source.html │ ├── a00452.html │ ├── a00452_source.html │ ├── a00455.html │ ├── a00455_source.html │ ├── a00458.html │ ├── a00458_source.html │ ├── a00461.html │ ├── a00461_source.html │ ├── a00464.html │ ├── a00464_source.html │ ├── a00467.html │ ├── a00467_source.html │ ├── a00470.html │ ├── a00470_source.html │ ├── a00473.html │ ├── a00473_source.html │ ├── a00476.html │ ├── a00476_source.html │ ├── a00479.html │ ├── a00479_source.html │ ├── a00482.html │ ├── a00482_source.html │ ├── a00485.html │ ├── a00485_source.html │ ├── a00488.html │ ├── a00488_source.html │ ├── a00491.html │ ├── a00491_source.html │ ├── a00494.html │ ├── a00494_source.html │ ├── a00497.html │ ├── a00497_source.html │ ├── a00500.html │ ├── a00500_source.html │ ├── a00503.html │ ├── a00503_source.html │ ├── a00506.html │ ├── a00506_source.html │ ├── a00509.html │ ├── a00509_source.html │ ├── a00512.html │ ├── a00512_source.html │ ├── a00515.html │ ├── a00515_source.html │ ├── a00518.html │ ├── a00518_source.html │ ├── a00521_source.html │ ├── a00524.html │ ├── a00524_source.html │ ├── a00527_source.html │ ├── a00530.html │ ├── a00530_source.html │ ├── a00536.html │ ├── a00536_source.html │ ├── a00539.html │ ├── a00539_source.html │ ├── a00542.html │ ├── a00542_source.html │ ├── a00545.html │ ├── a00545_source.html │ ├── a00548.html │ ├── a00548_source.html │ ├── a00551.html │ ├── a00551_source.html │ ├── a00554.html │ ├── a00554_source.html │ ├── a00560.html │ ├── a00560_source.html │ ├── a00563.html │ ├── a00563_source.html │ ├── a00566.html │ ├── a00566_source.html │ ├── a00572.html │ ├── a00572_source.html │ ├── a00575.html │ ├── a00575_source.html │ ├── a00578.html │ ├── a00578_source.html │ ├── a00581.html │ ├── a00581_source.html │ ├── a00584.html │ ├── a00584_source.html │ ├── a00587.html │ ├── a00587_source.html │ ├── a00590.html │ ├── a00590_source.html │ ├── a00593.html │ ├── a00593_source.html │ ├── a00596.html │ ├── a00596_source.html │ ├── a00599.html │ ├── a00599_source.html │ ├── a00602.html │ ├── a00602_source.html │ ├── a00605.html │ ├── a00605_source.html │ ├── a00608.html │ ├── a00608_source.html │ ├── a00611.html │ ├── a00611_source.html │ ├── a00614.html │ ├── a00614_source.html │ ├── a00617.html │ ├── a00617_source.html │ ├── a00620.html │ ├── a00620_source.html │ ├── a00623.html │ ├── a00623_source.html │ ├── a00626.html │ ├── a00626_source.html │ ├── a00629.html │ ├── a00629_source.html │ ├── a00632.html │ ├── a00632_source.html │ ├── a00635.html │ ├── a00635_source.html │ ├── a00638.html │ ├── a00638_source.html │ ├── a00641.html │ ├── a00641_source.html │ ├── a00644.html │ ├── a00644_source.html │ ├── a00647.html │ ├── a00647_source.html │ ├── a00650.html │ ├── a00650_source.html │ ├── a00653.html │ ├── a00653_source.html │ ├── a00656.html │ ├── a00656_source.html │ ├── a00659.html │ ├── a00659_source.html │ ├── a00662.html │ ├── a00662_source.html │ ├── a00665.html │ ├── a00665_source.html │ ├── a00668.html │ ├── a00668_source.html │ ├── a00671.html │ ├── a00671_source.html │ ├── a00674.html │ ├── a00674_source.html │ ├── a00677.html │ ├── a00677_source.html │ ├── a00680.html │ ├── a00680_source.html │ ├── a00683.html │ ├── a00683_source.html │ ├── a00686.html │ ├── a00686_source.html │ ├── a00689.html │ ├── a00689_source.html │ ├── a00692.html │ ├── a00692_source.html │ ├── a00695.html │ ├── a00695_source.html │ ├── a00698.html │ ├── a00698_source.html │ ├── a00701.html │ ├── a00701_source.html │ ├── a00704.html │ ├── a00704_source.html │ ├── a00707.html │ ├── a00707_source.html │ ├── a00710.html │ ├── a00710_source.html │ ├── a00713.html │ ├── a00713_source.html │ ├── a00716.html │ ├── a00716_source.html │ ├── a00719.html │ ├── a00719_source.html │ ├── a00722.html │ ├── a00722_source.html │ ├── a00725.html │ ├── a00725_source.html │ ├── a00728.html │ ├── a00728_source.html │ ├── a00731.html │ ├── a00731_source.html │ ├── a00734.html │ ├── a00734_source.html │ ├── a00737.html │ ├── a00737_source.html │ ├── a00740.html │ ├── a00740_source.html │ ├── a00743.html │ ├── a00743_source.html │ ├── a00746.html │ ├── a00746_source.html │ ├── a00749.html │ ├── a00749_source.html │ ├── a00752.html │ ├── a00752_source.html │ ├── a00755.html │ ├── a00755_source.html │ ├── a00758.html │ ├── a00758_source.html │ ├── a00761.html │ ├── a00761_source.html │ ├── a00764.html │ ├── a00764_source.html │ ├── a00767.html │ ├── a00767_source.html │ ├── a00770.html │ ├── a00770_source.html │ ├── a00773.html │ ├── a00773_source.html │ ├── a00776.html │ ├── a00776_source.html │ ├── a00779.html │ ├── a00779_source.html │ ├── a00782.html │ ├── a00782_source.html │ ├── a00785.html │ ├── a00785_source.html │ ├── a00788.html │ ├── a00788_source.html │ ├── a00791.html │ ├── a00791_source.html │ ├── a00794.html │ ├── a00794_source.html │ ├── a00797.html │ ├── a00797_source.html │ ├── a00800_source.html │ ├── a00803.html │ ├── a00804.html │ ├── a00805.html │ ├── a00806.html │ ├── a00807.html │ ├── a00808.html │ ├── a00809.html │ ├── a00810.html │ ├── a00811.html │ ├── a00812.html │ ├── a00813.html │ ├── a00814.html │ ├── a00815.html │ ├── a00816.html │ ├── a00817.html │ ├── a00818.html │ ├── a00819.html │ ├── a00820.html │ ├── a00821.html │ ├── a00822.html │ ├── a00823.html │ ├── a00824.html │ ├── a00825.html │ ├── a00826.html │ ├── a00827.html │ ├── a00828.html │ ├── a00829.html │ ├── a00830.html │ ├── a00831.html │ ├── a00832.html │ ├── a00833.html │ ├── a00834.html │ ├── a00835.html │ ├── a00836.html │ ├── a00837.html │ ├── a00838.html │ ├── a00839.html │ ├── a00840.html │ ├── a00841.html │ ├── a00842.html │ ├── a00843.html │ ├── a00844.html │ ├── a00845.html │ ├── a00846.html │ ├── a00847.html │ ├── a00848.html │ ├── a00849.html │ ├── a00850.html │ ├── a00851.html │ ├── a00852.html │ ├── a00853.html │ ├── a00854.html │ ├── a00855.html │ ├── a00856.html │ ├── a00857.html │ ├── a00858.html │ ├── a00859.html │ ├── a00860.html │ ├── a00861.html │ ├── a00862.html │ ├── a00863.html │ ├── a00864.html │ ├── a00865.html │ ├── a00866.html │ ├── a00867.html │ ├── a00868.html │ ├── a00869.html │ ├── a00870.html │ ├── a00871.html │ ├── a00872.html │ ├── a00873.html │ ├── a00874.html │ ├── a00875.html │ ├── a00876.html │ ├── a00877.html │ ├── a00878.html │ ├── a00879.html │ ├── a00880.html │ ├── a00881.html │ ├── a00882.html │ ├── a00883.html │ ├── a00884.html │ ├── a00885.html │ ├── a00886.html │ ├── a00887.html │ ├── a00888.html │ ├── a00889.html │ ├── a00890.html │ ├── a00891.html │ ├── a00892.html │ ├── a00893.html │ ├── a00894.html │ ├── a00895.html │ ├── a00896.html │ ├── a00897.html │ ├── a00898.html │ ├── a00899.html │ ├── a00900.html │ ├── a00901.html │ ├── a00902.html │ ├── a00903.html │ ├── a00904.html │ ├── a00905.html │ ├── a00906.html │ ├── a00907.html │ ├── a00908.html │ ├── a00909.html │ ├── a00910.html │ ├── a00911.html │ ├── a00912.html │ ├── a00913.html │ ├── a00914.html │ ├── a00915.html │ ├── a00916.html │ ├── a00917.html │ ├── a00918.html │ ├── a00919.html │ ├── a00920.html │ ├── a00921.html │ ├── a00922.html │ ├── a00923.html │ ├── a00924.html │ ├── a00925.html │ ├── a00926.html │ ├── a00927.html │ ├── a00928.html │ ├── a00929.html │ ├── a00930.html │ ├── a00931.html │ ├── a00932.html │ ├── a00933.html │ ├── a00934.html │ ├── a00935.html │ ├── a00936.html │ ├── a00937.html │ ├── a00938.html │ ├── a00939.html │ ├── a00940.html │ ├── a00941.html │ ├── a00942.html │ ├── a00943.html │ ├── a00944.html │ ├── a00945.html │ ├── a00946.html │ ├── a00947.html │ ├── a00948.html │ ├── a00949.html │ ├── a00950.html │ ├── a00951.html │ ├── a00952.html │ ├── a00953.html │ ├── a00954.html │ ├── a00955.html │ ├── a00956.html │ ├── a00957.html │ ├── a00958.html │ ├── a00959.html │ ├── a00960.html │ ├── a00961.html │ ├── a00962.html │ ├── a00963.html │ ├── a00964.html │ ├── a00965.html │ ├── a00966.html │ ├── a00967.html │ ├── a00968.html │ ├── a00969.html │ ├── a00970.html │ ├── a00971.html │ ├── a00972.html │ ├── a00973.html │ ├── a00974.html │ ├── a00975.html │ ├── a00976.html │ ├── a00977.html │ ├── a00978.html │ ├── a00979.html │ ├── a00980.html │ ├── a00981.html │ ├── a00982.html │ ├── a00983.html │ ├── a00984.html │ ├── a00985.html │ ├── a01558.html │ ├── a01558_source.html │ ├── a01561.html │ ├── a01561_source.html │ ├── a01564.html │ ├── a01564_source.html │ ├── a01567.html │ ├── a01567_source.html │ ├── a01570.html │ ├── a01570_source.html │ ├── a01573.html │ ├── a01573_source.html │ ├── a01576.html │ ├── a01576_source.html │ ├── a01579.html │ ├── a01579_source.html │ ├── a01582.html │ ├── a01582_source.html │ ├── a01585.html │ ├── a01585_source.html │ ├── a01588.html │ ├── a01588_source.html │ ├── a01591.html │ ├── a01591_source.html │ ├── a01594.html │ ├── a01594_source.html │ ├── a01597.html │ ├── a01597_source.html │ ├── a01600.html │ ├── a01600_source.html │ ├── a01603.html │ ├── a01603_source.html │ ├── a01606.html │ ├── a01606_source.html │ ├── arrowdown.png │ ├── arrowright.png │ ├── bc_s.png │ ├── bdwn.png │ ├── closed.png │ ├── dir_033f5edb0915b828d2c46ed4804e5503.html │ ├── dir_382f4fd018b81be8753cb53c0a41a09a.html │ ├── dir_3a581ba30d25676e4b797b1f96d53b45.html │ ├── dir_44e5e654415abd9ca6fdeaddaff8565e.html │ ├── dir_4c6bd29c73fa4e5a2509e1c15f846751.html │ ├── dir_50f12b6ceb23d7f6adfb377a1ae8b006.html │ ├── dir_5189610d3ba09ec39b766fb99b34cd93.html │ ├── dir_628fd60eb37daf5aa9a81e3983c640b7.html │ ├── dir_63ed049134a778d525e06b63afc2c979.html │ ├── dir_6b66465792d005310484819a0eb0b0d3.html │ ├── dir_885cc87fac2d91e269af0a5a959fa5f6.html │ ├── dir_9e5fe034a00e89334fd5186c3e7db156.html │ ├── dir_a8bee7be44182a33f3820393ae0b105d.html │ ├── dir_b11711034def6a4ce452fe9c451dd3d0.html │ ├── dir_b171cecbb853a9ee4caace490047c53f.html │ ├── dir_c98a9ac98258ab9f831b188d66361a70.html │ ├── dir_cef2d71d502cb69a9252bca2297d9549.html │ ├── dir_d9496f0844b48bc7e53b5af8c99b9ab2.html │ ├── dir_d9678a6a9012da969e0b059b39347945.html │ ├── dir_f35778ec600a1b9bbc4524e62e226aa2.html │ ├── dir_fca33f1b5115d46f42c670590789c0d2.html │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── dynsections.js │ ├── files.html │ ├── folderclosed.png │ ├── folderopen.png │ ├── index.html │ ├── jquery.js │ ├── logo-mini.png │ ├── menu.js │ ├── menudata.js │ ├── modules.html │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── open.png │ ├── search │ │ ├── all_0.html │ │ ├── all_0.js │ │ ├── all_1.html │ │ ├── all_1.js │ │ ├── all_10.html │ │ ├── all_10.js │ │ ├── all_11.html │ │ ├── all_11.js │ │ ├── all_12.html │ │ ├── all_12.js │ │ ├── all_13.html │ │ ├── all_13.js │ │ ├── all_14.html │ │ ├── all_14.js │ │ ├── all_15.html │ │ ├── all_15.js │ │ ├── all_16.html │ │ ├── all_16.js │ │ ├── all_2.html │ │ ├── all_2.js │ │ ├── all_3.html │ │ ├── all_3.js │ │ ├── all_4.html │ │ ├── all_4.js │ │ ├── all_5.html │ │ ├── all_5.js │ │ ├── all_6.html │ │ ├── all_6.js │ │ ├── all_7.html │ │ ├── all_7.js │ │ ├── all_8.html │ │ ├── all_8.js │ │ ├── all_9.html │ │ ├── all_9.js │ │ ├── all_a.html │ │ ├── all_a.js │ │ ├── all_b.html │ │ ├── all_b.js │ │ ├── all_c.html │ │ ├── all_c.js │ │ ├── all_d.html │ │ ├── all_d.js │ │ ├── all_e.html │ │ ├── all_e.js │ │ ├── all_f.html │ │ ├── all_f.js │ │ ├── close.png │ │ ├── files_0.html │ │ ├── files_0.js │ │ ├── files_1.html │ │ ├── files_1.js │ │ ├── files_10.html │ │ ├── files_10.js │ │ ├── files_11.html │ │ ├── files_11.js │ │ ├── files_12.html │ │ ├── files_12.js │ │ ├── files_13.html │ │ ├── files_13.js │ │ ├── files_14.html │ │ ├── files_14.js │ │ ├── files_2.html │ │ ├── files_2.js │ │ ├── files_3.html │ │ ├── files_3.js │ │ ├── files_4.html │ │ ├── files_4.js │ │ ├── files_5.html │ │ ├── files_5.js │ │ ├── files_6.html │ │ ├── files_6.js │ │ ├── files_7.html │ │ ├── files_7.js │ │ ├── files_8.html │ │ ├── files_8.js │ │ ├── files_9.html │ │ ├── files_9.js │ │ ├── files_a.html │ │ ├── files_a.js │ │ ├── files_b.html │ │ ├── files_b.js │ │ ├── files_c.html │ │ ├── files_c.js │ │ ├── files_d.html │ │ ├── files_d.js │ │ ├── files_e.html │ │ ├── files_e.js │ │ ├── files_f.html │ │ ├── files_f.js │ │ ├── functions_0.html │ │ ├── functions_0.js │ │ ├── functions_1.html │ │ ├── functions_1.js │ │ ├── functions_10.html │ │ ├── functions_10.js │ │ ├── functions_11.html │ │ ├── functions_11.js │ │ ├── functions_12.html │ │ ├── functions_12.js │ │ ├── functions_13.html │ │ ├── functions_13.js │ │ ├── functions_14.html │ │ ├── functions_14.js │ │ ├── functions_15.html │ │ ├── functions_15.js │ │ ├── functions_16.html │ │ ├── functions_16.js │ │ ├── functions_2.html │ │ ├── functions_2.js │ │ ├── functions_3.html │ │ ├── functions_3.js │ │ ├── functions_4.html │ │ ├── functions_4.js │ │ ├── functions_5.html │ │ ├── functions_5.js │ │ ├── functions_6.html │ │ ├── functions_6.js │ │ ├── functions_7.html │ │ ├── functions_7.js │ │ ├── functions_8.html │ │ ├── functions_8.js │ │ ├── functions_9.html │ │ ├── functions_9.js │ │ ├── functions_a.html │ │ ├── functions_a.js │ │ ├── functions_b.html │ │ ├── functions_b.js │ │ ├── functions_c.html │ │ ├── functions_c.js │ │ ├── functions_d.html │ │ ├── functions_d.js │ │ ├── functions_e.html │ │ ├── functions_e.js │ │ ├── functions_f.html │ │ ├── functions_f.js │ │ ├── groups_0.html │ │ ├── groups_0.js │ │ ├── groups_1.html │ │ ├── groups_1.js │ │ ├── groups_2.html │ │ ├── groups_2.js │ │ ├── groups_3.html │ │ ├── groups_3.js │ │ ├── groups_4.html │ │ ├── groups_4.js │ │ ├── groups_5.html │ │ ├── groups_5.js │ │ ├── groups_6.html │ │ ├── groups_6.js │ │ ├── groups_7.html │ │ ├── groups_7.js │ │ ├── groups_8.html │ │ ├── groups_8.js │ │ ├── groups_9.html │ │ ├── groups_9.js │ │ ├── mag_sel.png │ │ ├── nomatches.html │ │ ├── pages_0.html │ │ ├── pages_0.js │ │ ├── search.css │ │ ├── search.js │ │ ├── search_l.png │ │ ├── search_m.png │ │ ├── search_r.png │ │ ├── searchdata.js │ │ ├── typedefs_0.html │ │ ├── typedefs_0.js │ │ ├── typedefs_1.html │ │ ├── typedefs_1.js │ │ ├── typedefs_2.html │ │ ├── typedefs_2.js │ │ ├── typedefs_3.html │ │ ├── typedefs_3.js │ │ ├── typedefs_4.html │ │ ├── typedefs_4.js │ │ ├── typedefs_5.html │ │ ├── typedefs_5.js │ │ ├── typedefs_6.html │ │ ├── typedefs_6.js │ │ ├── typedefs_7.html │ │ ├── typedefs_7.js │ │ ├── typedefs_8.html │ │ ├── typedefs_8.js │ │ ├── typedefs_9.html │ │ ├── typedefs_9.js │ │ ├── typedefs_a.html │ │ ├── typedefs_a.js │ │ ├── typedefs_b.html │ │ ├── typedefs_b.js │ │ ├── typedefs_c.html │ │ ├── typedefs_c.js │ │ ├── typedefs_d.html │ │ └── typedefs_d.js │ ├── splitbar.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ ├── tab_s.png │ └── tabs.css ├── man.doxy ├── manual.pdf ├── manual │ ├── frontpage1.png │ ├── frontpage2.png │ ├── g-truc.png │ ├── logo-mini.png │ ├── logo.png │ ├── noise-perlin1.jpg │ ├── noise-perlin2.jpg │ ├── noise-perlin3.jpg │ ├── noise-perlin4.png │ ├── noise-perlin5.png │ ├── noise-perlin6.png │ ├── noise-simplex1.jpg │ ├── noise-simplex2.jpg │ ├── noise-simplex3.jpg │ ├── random-ballrand.png │ ├── random-circularrand.png │ ├── random-diskrand.png │ ├── random-gaussrand.png │ ├── random-linearrand.png │ ├── random-sphericalrand.png │ ├── references-cinder.png │ ├── references-glsl4book.jpg │ ├── references-leosfortune.jpeg │ ├── references-leosfortune2.jpg │ ├── references-opencloth1.png │ ├── references-opencloth3.png │ ├── references-outerra1.jpg │ ├── references-outerra2.jpg │ ├── references-outerra3.jpg │ └── references-outerra4.jpg └── theme │ ├── bc_s.png │ ├── bdwn.png │ ├── closed.png │ ├── doc.png │ ├── doxygen.css │ ├── doxygen.png │ ├── folderclosed.png │ ├── folderopen.png │ ├── logo-mini.png │ ├── nav_f.png │ ├── nav_g.png │ ├── nav_h.png │ ├── open.png │ ├── splitbar.png │ ├── sync_off.png │ ├── sync_on.png │ ├── tab_a.png │ ├── tab_b.png │ ├── tab_h.png │ └── tab_s.png ├── glm ├── CMakeLists.txt ├── common.hpp ├── detail │ ├── _features.hpp │ ├── _fixes.hpp │ ├── _noise.hpp │ ├── _swizzle.hpp │ ├── _swizzle_func.hpp │ ├── _vectorize.hpp │ ├── compute_common.hpp │ ├── compute_vector_decl.hpp │ ├── compute_vector_relational.hpp │ ├── func_common.inl │ ├── func_common_simd.inl │ ├── func_exponential.inl │ ├── func_exponential_simd.inl │ ├── func_geometric.inl │ ├── func_geometric_simd.inl │ ├── func_integer.inl │ ├── func_integer_simd.inl │ ├── func_matrix.inl │ ├── func_matrix_simd.inl │ ├── func_packing.inl │ ├── func_packing_simd.inl │ ├── func_trigonometric.inl │ ├── func_trigonometric_simd.inl │ ├── func_vector_relational.inl │ ├── func_vector_relational_simd.inl │ ├── glm.cpp │ ├── qualifier.hpp │ ├── setup.hpp │ ├── type_float.hpp │ ├── type_half.hpp │ ├── type_half.inl │ ├── type_mat2x2.hpp │ ├── type_mat2x2.inl │ ├── type_mat2x3.hpp │ ├── type_mat2x3.inl │ ├── type_mat2x4.hpp │ ├── type_mat2x4.inl │ ├── type_mat3x2.hpp │ ├── type_mat3x2.inl │ ├── type_mat3x3.hpp │ ├── type_mat3x3.inl │ ├── type_mat3x4.hpp │ ├── type_mat3x4.inl │ ├── type_mat4x2.hpp │ ├── type_mat4x2.inl │ ├── type_mat4x3.hpp │ ├── type_mat4x3.inl │ ├── type_mat4x4.hpp │ ├── type_mat4x4.inl │ ├── type_mat4x4_simd.inl │ ├── type_quat.hpp │ ├── type_quat.inl │ ├── type_quat_simd.inl │ ├── type_vec1.hpp │ ├── type_vec1.inl │ ├── type_vec2.hpp │ ├── type_vec2.inl │ ├── type_vec3.hpp │ ├── type_vec3.inl │ ├── type_vec4.hpp │ ├── type_vec4.inl │ ├── type_vec4_simd.inl │ └── type_vec_simd.inl ├── exponential.hpp ├── ext.hpp ├── ext │ ├── _matrix_vectorize.hpp │ ├── matrix_clip_space.hpp │ ├── matrix_clip_space.inl │ ├── matrix_common.hpp │ ├── matrix_common.inl │ ├── matrix_double2x2.hpp │ ├── matrix_double2x2_precision.hpp │ ├── matrix_double2x3.hpp │ ├── matrix_double2x3_precision.hpp │ ├── matrix_double2x4.hpp │ ├── matrix_double2x4_precision.hpp │ ├── matrix_double3x2.hpp │ ├── matrix_double3x2_precision.hpp │ ├── matrix_double3x3.hpp │ ├── matrix_double3x3_precision.hpp │ ├── matrix_double3x4.hpp │ ├── matrix_double3x4_precision.hpp │ ├── matrix_double4x2.hpp │ ├── matrix_double4x2_precision.hpp │ ├── matrix_double4x3.hpp │ ├── matrix_double4x3_precision.hpp │ ├── matrix_double4x4.hpp │ ├── matrix_double4x4_precision.hpp │ ├── matrix_float2x2.hpp │ ├── matrix_float2x2_precision.hpp │ ├── matrix_float2x3.hpp │ ├── matrix_float2x3_precision.hpp │ ├── matrix_float2x4.hpp │ ├── matrix_float2x4_precision.hpp │ ├── matrix_float3x2.hpp │ ├── matrix_float3x2_precision.hpp │ ├── matrix_float3x3.hpp │ ├── matrix_float3x3_precision.hpp │ ├── matrix_float3x4.hpp │ ├── matrix_float3x4_precision.hpp │ ├── matrix_float4x2.hpp │ ├── matrix_float4x2_precision.hpp │ ├── matrix_float4x3.hpp │ ├── matrix_float4x3_precision.hpp │ ├── matrix_float4x4.hpp │ ├── matrix_float4x4_precision.hpp │ ├── matrix_int2x2.hpp │ ├── matrix_int2x2_sized.hpp │ ├── matrix_int2x3.hpp │ ├── matrix_int2x3_sized.hpp │ ├── matrix_int2x4.hpp │ ├── matrix_int2x4_sized.hpp │ ├── matrix_int3x2.hpp │ ├── matrix_int3x2_sized.hpp │ ├── matrix_int3x3.hpp │ ├── matrix_int3x3_sized.hpp │ ├── matrix_int3x4.hpp │ ├── matrix_int3x4_sized.hpp │ ├── matrix_int4x2.hpp │ ├── matrix_int4x2_sized.hpp │ ├── matrix_int4x3.hpp │ ├── matrix_int4x3_sized.hpp │ ├── matrix_int4x4.hpp │ ├── matrix_int4x4_sized.hpp │ ├── matrix_integer.hpp │ ├── matrix_integer.inl │ ├── matrix_projection.hpp │ ├── matrix_projection.inl │ ├── matrix_relational.hpp │ ├── matrix_relational.inl │ ├── matrix_transform.hpp │ ├── matrix_transform.inl │ ├── matrix_uint2x2.hpp │ ├── matrix_uint2x2_sized.hpp │ ├── matrix_uint2x3.hpp │ ├── matrix_uint2x3_sized.hpp │ ├── matrix_uint2x4.hpp │ ├── matrix_uint2x4_sized.hpp │ ├── matrix_uint3x2.hpp │ ├── matrix_uint3x2_sized.hpp │ ├── matrix_uint3x3.hpp │ ├── matrix_uint3x3_sized.hpp │ ├── matrix_uint3x4.hpp │ ├── matrix_uint3x4_sized.hpp │ ├── matrix_uint4x2.hpp │ ├── matrix_uint4x2_sized.hpp │ ├── matrix_uint4x3.hpp │ ├── matrix_uint4x3_sized.hpp │ ├── matrix_uint4x4.hpp │ ├── matrix_uint4x4_sized.hpp │ ├── quaternion_common.hpp │ ├── quaternion_common.inl │ ├── quaternion_common_simd.inl │ ├── quaternion_double.hpp │ ├── quaternion_double_precision.hpp │ ├── quaternion_exponential.hpp │ ├── quaternion_exponential.inl │ ├── quaternion_float.hpp │ ├── quaternion_float_precision.hpp │ ├── quaternion_geometric.hpp │ ├── quaternion_geometric.inl │ ├── quaternion_relational.hpp │ ├── quaternion_relational.inl │ ├── quaternion_transform.hpp │ ├── quaternion_transform.inl │ ├── quaternion_trigonometric.hpp │ ├── quaternion_trigonometric.inl │ ├── scalar_common.hpp │ ├── scalar_common.inl │ ├── scalar_constants.hpp │ ├── scalar_constants.inl │ ├── scalar_int_sized.hpp │ ├── scalar_integer.hpp │ ├── scalar_integer.inl │ ├── scalar_packing.hpp │ ├── scalar_packing.inl │ ├── scalar_reciprocal.hpp │ ├── scalar_reciprocal.inl │ ├── scalar_relational.hpp │ ├── scalar_relational.inl │ ├── scalar_uint_sized.hpp │ ├── scalar_ulp.hpp │ ├── scalar_ulp.inl │ ├── vector_bool1.hpp │ ├── vector_bool1_precision.hpp │ ├── vector_bool2.hpp │ ├── vector_bool2_precision.hpp │ ├── vector_bool3.hpp │ ├── vector_bool3_precision.hpp │ ├── vector_bool4.hpp │ ├── vector_bool4_precision.hpp │ ├── vector_common.hpp │ ├── vector_common.inl │ ├── vector_double1.hpp │ ├── vector_double1_precision.hpp │ ├── vector_double2.hpp │ ├── vector_double2_precision.hpp │ ├── vector_double3.hpp │ ├── vector_double3_precision.hpp │ ├── vector_double4.hpp │ ├── vector_double4_precision.hpp │ ├── vector_float1.hpp │ ├── vector_float1_precision.hpp │ ├── vector_float2.hpp │ ├── vector_float2_precision.hpp │ ├── vector_float3.hpp │ ├── vector_float3_precision.hpp │ ├── vector_float4.hpp │ ├── vector_float4_precision.hpp │ ├── vector_int1.hpp │ ├── vector_int1_sized.hpp │ ├── vector_int2.hpp │ ├── vector_int2_sized.hpp │ ├── vector_int3.hpp │ ├── vector_int3_sized.hpp │ ├── vector_int4.hpp │ ├── vector_int4_sized.hpp │ ├── vector_integer.hpp │ ├── vector_integer.inl │ ├── vector_packing.hpp │ ├── vector_packing.inl │ ├── vector_reciprocal.hpp │ ├── vector_reciprocal.inl │ ├── vector_relational.hpp │ ├── vector_relational.inl │ ├── vector_uint1.hpp │ ├── vector_uint1_sized.hpp │ ├── vector_uint2.hpp │ ├── vector_uint2_sized.hpp │ ├── vector_uint3.hpp │ ├── vector_uint3_sized.hpp │ ├── vector_uint4.hpp │ ├── vector_uint4_sized.hpp │ ├── vector_ulp.hpp │ └── vector_ulp.inl ├── fwd.hpp ├── geometric.hpp ├── glm.cppm ├── glm.hpp ├── gtc │ ├── bitfield.hpp │ ├── bitfield.inl │ ├── color_space.hpp │ ├── color_space.inl │ ├── constants.hpp │ ├── constants.inl │ ├── epsilon.hpp │ ├── epsilon.inl │ ├── integer.hpp │ ├── integer.inl │ ├── matrix_access.hpp │ ├── matrix_access.inl │ ├── matrix_integer.hpp │ ├── matrix_inverse.hpp │ ├── matrix_inverse.inl │ ├── matrix_transform.hpp │ ├── matrix_transform.inl │ ├── noise.hpp │ ├── noise.inl │ ├── packing.hpp │ ├── packing.inl │ ├── quaternion.hpp │ ├── quaternion.inl │ ├── quaternion_simd.inl │ ├── random.hpp │ ├── random.inl │ ├── reciprocal.hpp │ ├── round.hpp │ ├── round.inl │ ├── type_aligned.hpp │ ├── type_precision.hpp │ ├── type_precision.inl │ ├── type_ptr.hpp │ ├── type_ptr.inl │ ├── ulp.hpp │ ├── ulp.inl │ └── vec1.hpp ├── gtx │ ├── associated_min_max.hpp │ ├── associated_min_max.inl │ ├── bit.hpp │ ├── bit.inl │ ├── closest_point.hpp │ ├── closest_point.inl │ ├── color_encoding.hpp │ ├── color_encoding.inl │ ├── color_space.hpp │ ├── color_space.inl │ ├── color_space_YCoCg.hpp │ ├── color_space_YCoCg.inl │ ├── common.hpp │ ├── common.inl │ ├── compatibility.hpp │ ├── compatibility.inl │ ├── component_wise.hpp │ ├── component_wise.inl │ ├── dual_quaternion.hpp │ ├── dual_quaternion.inl │ ├── easing.hpp │ ├── easing.inl │ ├── euler_angles.hpp │ ├── euler_angles.inl │ ├── extend.hpp │ ├── extend.inl │ ├── extended_min_max.hpp │ ├── extended_min_max.inl │ ├── exterior_product.hpp │ ├── exterior_product.inl │ ├── fast_exponential.hpp │ ├── fast_exponential.inl │ ├── fast_square_root.hpp │ ├── fast_square_root.inl │ ├── fast_trigonometry.hpp │ ├── fast_trigonometry.inl │ ├── float_notmalize.inl │ ├── functions.hpp │ ├── functions.inl │ ├── gradient_paint.hpp │ ├── gradient_paint.inl │ ├── handed_coordinate_space.hpp │ ├── handed_coordinate_space.inl │ ├── hash.hpp │ ├── hash.inl │ ├── integer.hpp │ ├── integer.inl │ ├── intersect.hpp │ ├── intersect.inl │ ├── io.hpp │ ├── io.inl │ ├── log_base.hpp │ ├── log_base.inl │ ├── matrix_cross_product.hpp │ ├── matrix_cross_product.inl │ ├── matrix_decompose.hpp │ ├── matrix_decompose.inl │ ├── matrix_factorisation.hpp │ ├── matrix_factorisation.inl │ ├── matrix_interpolation.hpp │ ├── matrix_interpolation.inl │ ├── matrix_major_storage.hpp │ ├── matrix_major_storage.inl │ ├── matrix_operation.hpp │ ├── matrix_operation.inl │ ├── matrix_query.hpp │ ├── matrix_query.inl │ ├── matrix_transform_2d.hpp │ ├── matrix_transform_2d.inl │ ├── mixed_product.hpp │ ├── mixed_product.inl │ ├── norm.hpp │ ├── norm.inl │ ├── normal.hpp │ ├── normal.inl │ ├── normalize_dot.hpp │ ├── normalize_dot.inl │ ├── number_precision.hpp │ ├── optimum_pow.hpp │ ├── optimum_pow.inl │ ├── orthonormalize.hpp │ ├── orthonormalize.inl │ ├── pca.hpp │ ├── pca.inl │ ├── perpendicular.hpp │ ├── perpendicular.inl │ ├── polar_coordinates.hpp │ ├── polar_coordinates.inl │ ├── projection.hpp │ ├── projection.inl │ ├── quaternion.hpp │ ├── quaternion.inl │ ├── range.hpp │ ├── raw_data.hpp │ ├── raw_data.inl │ ├── rotate_normalized_axis.hpp │ ├── rotate_normalized_axis.inl │ ├── rotate_vector.hpp │ ├── rotate_vector.inl │ ├── scalar_multiplication.hpp │ ├── scalar_relational.hpp │ ├── scalar_relational.inl │ ├── spline.hpp │ ├── spline.inl │ ├── std_based_type.hpp │ ├── std_based_type.inl │ ├── string_cast.hpp │ ├── string_cast.inl │ ├── texture.hpp │ ├── texture.inl │ ├── transform.hpp │ ├── transform.inl │ ├── transform2.hpp │ ├── transform2.inl │ ├── type_aligned.hpp │ ├── type_aligned.inl │ ├── type_trait.hpp │ ├── type_trait.inl │ ├── vec_swizzle.hpp │ ├── vector_angle.hpp │ ├── vector_angle.inl │ ├── vector_query.hpp │ ├── vector_query.inl │ ├── wrap.hpp │ └── wrap.inl ├── integer.hpp ├── mat2x2.hpp ├── mat2x3.hpp ├── mat2x4.hpp ├── mat3x2.hpp ├── mat3x3.hpp ├── mat3x4.hpp ├── mat4x2.hpp ├── mat4x3.hpp ├── mat4x4.hpp ├── matrix.hpp ├── packing.hpp ├── simd │ ├── common.h │ ├── exponential.h │ ├── geometric.h │ ├── integer.h │ ├── matrix.h │ ├── neon.h │ ├── packing.h │ ├── platform.h │ ├── trigonometric.h │ └── vector_relational.h ├── trigonometric.hpp ├── vec2.hpp ├── vec3.hpp ├── vec4.hpp └── vector_relational.hpp ├── manual.md ├── readme.md ├── test ├── CMakeLists.txt ├── bug │ ├── CMakeLists.txt │ └── bug_ms_vec_static.cpp ├── cmake │ ├── CMakeLists.txt │ └── test_find_glm.cpp ├── core │ ├── CMakeLists.txt │ ├── core_cpp_constexpr.cpp │ ├── core_cpp_defaulted_ctor.cpp │ ├── core_force_aligned_gentypes.cpp │ ├── core_force_arch_unknown.cpp │ ├── core_force_compiler_unknown.cpp │ ├── core_force_ctor_init.cpp │ ├── core_force_cxx03.cpp │ ├── core_force_cxx98.cpp │ ├── core_force_cxx_unknown.cpp │ ├── core_force_depth_zero_to_one.cpp │ ├── core_force_explicit_ctor.cpp │ ├── core_force_inline.cpp │ ├── core_force_left_handed.cpp │ ├── core_force_platform_unknown.cpp │ ├── core_force_pure.cpp │ ├── core_force_quat_wxyz.cpp │ ├── core_force_quat_xyzw.cpp │ ├── core_force_size_t_length.cpp │ ├── core_force_unrestricted_gentype.cpp │ ├── core_force_xyzw_only.cpp │ ├── core_func_common.cpp │ ├── core_func_exponential.cpp │ ├── core_func_geometric.cpp │ ├── core_func_integer.cpp │ ├── core_func_integer_bit_count.cpp │ ├── core_func_integer_find_lsb.cpp │ ├── core_func_integer_find_msb.cpp │ ├── core_func_matrix.cpp │ ├── core_func_noise.cpp │ ├── core_func_packing.cpp │ ├── core_func_swizzle.cpp │ ├── core_func_trigonometric.cpp │ ├── core_func_vector_relational.cpp │ ├── core_setup_force_cxx03.cpp │ ├── core_setup_force_cxx98.cpp │ ├── core_setup_force_cxx_unknown.cpp │ ├── core_setup_force_size_t_length.cpp │ ├── core_setup_message.cpp │ ├── core_setup_platform_unknown.cpp │ ├── core_setup_precision.cpp │ ├── core_type_aligned.cpp │ ├── core_type_cast.cpp │ ├── core_type_ctor.cpp │ ├── core_type_int.cpp │ ├── core_type_length.cpp │ ├── core_type_mat2x2.cpp │ ├── core_type_mat2x3.cpp │ ├── core_type_mat2x4.cpp │ ├── core_type_mat3x2.cpp │ ├── core_type_mat3x3.cpp │ ├── core_type_mat3x4.cpp │ ├── core_type_mat4x2.cpp │ ├── core_type_mat4x3.cpp │ ├── core_type_mat4x4.cpp │ ├── core_type_vec1.cpp │ ├── core_type_vec2.cpp │ ├── core_type_vec3.cpp │ └── core_type_vec4.cpp ├── ext │ ├── CMakeLists.txt │ ├── ext_matrix_clip_space.cpp │ ├── ext_matrix_common.cpp │ ├── ext_matrix_int2x2_sized.cpp │ ├── ext_matrix_int2x3_sized.cpp │ ├── ext_matrix_int2x4_sized.cpp │ ├── ext_matrix_int3x2_sized.cpp │ ├── ext_matrix_int3x3_sized.cpp │ ├── ext_matrix_int3x4_sized.cpp │ ├── ext_matrix_int4x2_sized.cpp │ ├── ext_matrix_int4x3_sized.cpp │ ├── ext_matrix_int4x4_sized.cpp │ ├── ext_matrix_integer.cpp │ ├── ext_matrix_projection.cpp │ ├── ext_matrix_relational.cpp │ ├── ext_matrix_transform.cpp │ ├── ext_matrix_uint2x2_sized.cpp │ ├── ext_matrix_uint2x3_sized.cpp │ ├── ext_matrix_uint2x4_sized.cpp │ ├── ext_matrix_uint3x2_sized.cpp │ ├── ext_matrix_uint3x3_sized.cpp │ ├── ext_matrix_uint3x4_sized.cpp │ ├── ext_matrix_uint4x2_sized.cpp │ ├── ext_matrix_uint4x3_sized.cpp │ ├── ext_matrix_uint4x4_sized.cpp │ ├── ext_quaternion_common.cpp │ ├── ext_quaternion_exponential.cpp │ ├── ext_quaternion_geometric.cpp │ ├── ext_quaternion_relational.cpp │ ├── ext_quaternion_transform.cpp │ ├── ext_quaternion_trigonometric.cpp │ ├── ext_quaternion_type.cpp │ ├── ext_scalar_common.cpp │ ├── ext_scalar_constants.cpp │ ├── ext_scalar_int_sized.cpp │ ├── ext_scalar_integer.cpp │ ├── ext_scalar_packing.cpp │ ├── ext_scalar_reciprocal.cpp │ ├── ext_scalar_relational.cpp │ ├── ext_scalar_uint_sized.cpp │ ├── ext_scalar_ulp.cpp │ ├── ext_vec1.cpp │ ├── ext_vector_bool1.cpp │ ├── ext_vector_common.cpp │ ├── ext_vector_iec559.cpp │ ├── ext_vector_int1_sized.cpp │ ├── ext_vector_int2_sized.cpp │ ├── ext_vector_int3_sized.cpp │ ├── ext_vector_int4_sized.cpp │ ├── ext_vector_integer.cpp │ ├── ext_vector_integer_sized.cpp │ ├── ext_vector_packing.cpp │ ├── ext_vector_reciprocal.cpp │ ├── ext_vector_relational.cpp │ ├── ext_vector_uint1_sized.cpp │ ├── ext_vector_uint2_sized.cpp │ ├── ext_vector_uint3_sized.cpp │ ├── ext_vector_uint4_sized.cpp │ └── ext_vector_ulp.cpp ├── glm.cppcheck ├── gtc │ ├── CMakeLists.txt │ ├── gtc_bitfield.cpp │ ├── gtc_color_space.cpp │ ├── gtc_constants.cpp │ ├── gtc_epsilon.cpp │ ├── gtc_integer.cpp │ ├── gtc_matrix_access.cpp │ ├── gtc_matrix_integer.cpp │ ├── gtc_matrix_inverse.cpp │ ├── gtc_matrix_transform.cpp │ ├── gtc_noise.cpp │ ├── gtc_packing.cpp │ ├── gtc_quaternion.cpp │ ├── gtc_random.cpp │ ├── gtc_reciprocal.cpp │ ├── gtc_round.cpp │ ├── gtc_type_aligned.cpp │ ├── gtc_type_precision.cpp │ ├── gtc_type_ptr.cpp │ ├── gtc_ulp.cpp │ ├── gtc_user_defined_types.cpp │ └── gtc_vec1.cpp ├── gtx │ ├── CMakeLists.txt │ ├── gtx.cpp │ ├── gtx_associated_min_max.cpp │ ├── gtx_closest_point.cpp │ ├── gtx_color_encoding.cpp │ ├── gtx_color_space.cpp │ ├── gtx_color_space_YCoCg.cpp │ ├── gtx_common.cpp │ ├── gtx_compatibility.cpp │ ├── gtx_component_wise.cpp │ ├── gtx_dual_quaternion.cpp │ ├── gtx_easing.cpp │ ├── gtx_euler_angle.cpp │ ├── gtx_extend.cpp │ ├── gtx_extended_min_max.cpp │ ├── gtx_extented_min_max.cpp │ ├── gtx_exterior_product.cpp │ ├── gtx_fast_exponential.cpp │ ├── gtx_fast_square_root.cpp │ ├── gtx_fast_trigonometry.cpp │ ├── gtx_functions.cpp │ ├── gtx_gradient_paint.cpp │ ├── gtx_handed_coordinate_space.cpp │ ├── gtx_hash.cpp │ ├── gtx_int_10_10_10_2.cpp │ ├── gtx_integer.cpp │ ├── gtx_intersect.cpp │ ├── gtx_io.cpp │ ├── gtx_load.cpp │ ├── gtx_log_base.cpp │ ├── gtx_matrix_cross_product.cpp │ ├── gtx_matrix_decompose.cpp │ ├── gtx_matrix_factorisation.cpp │ ├── gtx_matrix_interpolation.cpp │ ├── gtx_matrix_major_storage.cpp │ ├── gtx_matrix_operation.cpp │ ├── gtx_matrix_query.cpp │ ├── gtx_matrix_transform_2d.cpp │ ├── gtx_mixed_product.cpp │ ├── gtx_norm.cpp │ ├── gtx_normal.cpp │ ├── gtx_normalize_dot.cpp │ ├── gtx_number_precision.cpp │ ├── gtx_optimum_pow.cpp │ ├── gtx_orthonormalize.cpp │ ├── gtx_pca.cpp │ ├── gtx_perpendicular.cpp │ ├── gtx_polar_coordinates.cpp │ ├── gtx_projection.cpp │ ├── gtx_quaternion.cpp │ ├── gtx_random.cpp │ ├── gtx_range.cpp │ ├── gtx_rotate_normalized_axis.cpp │ ├── gtx_rotate_vector.cpp │ ├── gtx_scalar_multiplication.cpp │ ├── gtx_scalar_relational.cpp │ ├── gtx_simd_mat4.cpp │ ├── gtx_simd_vec4.cpp │ ├── gtx_spline.cpp │ ├── gtx_string_cast.cpp │ ├── gtx_texture.cpp │ ├── gtx_type_aligned.cpp │ ├── gtx_type_trait.cpp │ ├── gtx_vec_swizzle.cpp │ ├── gtx_vector_angle.cpp │ ├── gtx_vector_query.cpp │ └── gtx_wrap.cpp └── perf │ ├── CMakeLists.txt │ ├── perf_matrix_div.cpp │ ├── perf_matrix_inverse.cpp │ ├── perf_matrix_mul.cpp │ ├── perf_matrix_mul_vector.cpp │ ├── perf_matrix_transpose.cpp │ └── perf_vector_mul_matrix.cpp └── util ├── autoexp.txt ├── autoexp.vc2010.dat ├── glm.natvis └── usertype.dat /.github/workflows/make_light_release.yml: -------------------------------------------------------------------------------- 1 | # A workflow that creates a minimal archive with only the glm/ headers and copying.txt. 2 | 3 | name: Make light release 4 | 5 | on: 6 | release: 7 | types: [published] 8 | 9 | jobs: 10 | make_zip: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Install dependencies 15 | run: sudo apt-get update -y && sudo apt-get install -y zip p7zip 16 | 17 | - name: Check out repository code 18 | uses: actions/checkout@v3 19 | 20 | - name: Set env 21 | run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV 22 | 23 | - name: Prepare layout 24 | run: mv copying.txt glm 25 | 26 | - name: Create zip archive 27 | run: zip -r glm-${{ env.RELEASE_VERSION }}-light.zip glm 28 | 29 | - name: Create 7z archive 30 | run: 7z a glm-${{ env.RELEASE_VERSION }}-light.7z glm 31 | 32 | - uses: actions/upload-artifact@v3 33 | with: 34 | name: glm-${{ env.RELEASE_VERSION }}-light 35 | path: glm-${{ env.RELEASE_VERSION }}-light.* 36 | 37 | - name: Add to Release 38 | uses: softprops/action-gh-release@v1 39 | with: 40 | files: | 41 | glm-${{ env.RELEASE_VERSION }}-light.zip 42 | glm-${{ env.RELEASE_VERSION }}-light.7z 43 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | 19 | # Compiled Static libraries 20 | *.lai 21 | *.la 22 | *.a 23 | *.lib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | 30 | # CMake 31 | CMakeCache.txt 32 | CMakeFiles 33 | cmake_install.cmake 34 | install_manifest.txt 35 | *.cmake 36 | !glmConfig.cmake 37 | !glmConfig-version.cmake 38 | # ^ May need to add future .cmake files as exceptions 39 | 40 | # Test logs 41 | Testing/* 42 | 43 | # Test input 44 | test/gtc/*.dds 45 | 46 | # Project Files 47 | Makefile 48 | *.cbp 49 | *.user 50 | 51 | # Misc. 52 | *.log 53 | 54 | # local build(s) 55 | build* 56 | 57 | /.vs 58 | /.vscode 59 | /CMakeSettings.json 60 | .DS_Store 61 | *.swp 62 | -------------------------------------------------------------------------------- /cmake/cmake_uninstall.cmake.in: -------------------------------------------------------------------------------- 1 | if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") 2 | message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") 3 | endif() 4 | 5 | file(READ "@CMAKE_BINARY_DIR@/install_manifest.txt" files) 6 | string(REGEX REPLACE "\n" ";" files "${files}") 7 | foreach(file ${files}) 8 | message(STATUS "Uninstalling $ENV{DESTDIR}${file}") 9 | if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 10 | exec_program( 11 | "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" 12 | OUTPUT_VARIABLE rm_out 13 | RETURN_VALUE rm_retval 14 | ) 15 | if(NOT "${rm_retval}" STREQUAL 0) 16 | message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") 17 | endif() 18 | else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") 19 | message(STATUS "File $ENV{DESTDIR}${file} does not exist.") 20 | endif() 21 | endforeach() 22 | -------------------------------------------------------------------------------- /doc/api/arrowdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/arrowdown.png -------------------------------------------------------------------------------- /doc/api/arrowright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/arrowright.png -------------------------------------------------------------------------------- /doc/api/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/bc_s.png -------------------------------------------------------------------------------- /doc/api/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/bdwn.png -------------------------------------------------------------------------------- /doc/api/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/closed.png -------------------------------------------------------------------------------- /doc/api/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/doc.png -------------------------------------------------------------------------------- /doc/api/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/doxygen.png -------------------------------------------------------------------------------- /doc/api/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/folderclosed.png -------------------------------------------------------------------------------- /doc/api/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/folderopen.png -------------------------------------------------------------------------------- /doc/api/logo-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/logo-mini.png -------------------------------------------------------------------------------- /doc/api/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/nav_f.png -------------------------------------------------------------------------------- /doc/api/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/nav_g.png -------------------------------------------------------------------------------- /doc/api/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/nav_h.png -------------------------------------------------------------------------------- /doc/api/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/open.png -------------------------------------------------------------------------------- /doc/api/search/all_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['word_2261',['word',['../a00964.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]], 4 | ['wrap_2ehpp_2262',['wrap.hpp',['../a00755.html',1,'']]], 5 | ['wrapangle_2263',['wrapAngle',['../a00934.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/api/search/all_15.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yaw_2264',['yaw',['../a00908.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], 4 | ['yawpitchroll_2265',['yawPitchRoll',['../a00928.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], 5 | ['ycocg2rgb_2266',['YCoCg2rgb',['../a00922.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], 6 | ['ycocgr2rgb_2267',['YCoCgR2rgb',['../a00922.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/api/search/all_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero_2268',['zero',['../a00899.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/search/close.png -------------------------------------------------------------------------------- /doc/api/search/files_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['associated_5fmin_5fmax_2ehpp_2269',['associated_min_max.hpp',['../a00584.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/files_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['bit_2ehpp_2270',['bit.hpp',['../a00587.html',1,'']]], 4 | ['bitfield_2ehpp_2271',['bitfield.hpp',['../a00530.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/files_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['scalar_5fcommon_2ehpp_2436',['scalar_common.hpp',['../a00353.html',1,'']]], 4 | ['scalar_5fconstants_2ehpp_2437',['scalar_constants.hpp',['../a00356.html',1,'']]], 5 | ['scalar_5fint_5fsized_2ehpp_2438',['scalar_int_sized.hpp',['../a00359.html',1,'']]], 6 | ['scalar_5finteger_2ehpp_2439',['scalar_integer.hpp',['../a00362.html',1,'']]], 7 | ['scalar_5fmultiplication_2ehpp_2440',['scalar_multiplication.hpp',['../a00722.html',1,'']]], 8 | ['scalar_5fpacking_2ehpp_2441',['scalar_packing.hpp',['../a00365.html',1,'']]], 9 | ['scalar_5freciprocal_2ehpp_2442',['scalar_reciprocal.hpp',['../a00368.html',1,'']]], 10 | ['scalar_5fuint_5fsized_2ehpp_2443',['scalar_uint_sized.hpp',['../a00374.html',1,'']]], 11 | ['scalar_5fulp_2ehpp_2444',['scalar_ulp.hpp',['../a00377.html',1,'']]], 12 | ['spline_2ehpp_2445',['spline.hpp',['../a00725.html',1,'']]], 13 | ['std_5fbased_5ftype_2ehpp_2446',['std_based_type.hpp',['../a00728.html',1,'']]], 14 | ['string_5fcast_2ehpp_2447',['string_cast.hpp',['../a00731.html',1,'']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /doc/api/search/files_12.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['ulp_2ehpp_2469',['ulp.hpp',['../a00578.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/files_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrap_2ehpp_2523',['wrap.hpp',['../a00755.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/files_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['closest_5fpoint_2ehpp_2272',['closest_point.hpp',['../a00590.html',1,'']]], 4 | ['color_5fencoding_2ehpp_2273',['color_encoding.hpp',['../a00593.html',1,'']]], 5 | ['color_5fspace_5fycocg_2ehpp_2274',['color_space_YCoCg.hpp',['../a00596.html',1,'']]], 6 | ['common_2ehpp_2275',['common.hpp',['../a00002.html',1,'']]], 7 | ['compatibility_2ehpp_2276',['compatibility.hpp',['../a00599.html',1,'']]], 8 | ['component_5fwise_2ehpp_2277',['component_wise.hpp',['../a00602.html',1,'']]], 9 | ['constants_2ehpp_2278',['constants.hpp',['../a00536.html',1,'']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /doc/api/search/files_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['dual_5fquaternion_2ehpp_2279',['dual_quaternion.hpp',['../a00605.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/files_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['easing_2ehpp_2280',['easing.hpp',['../a00608.html',1,'']]], 4 | ['epsilon_2ehpp_2281',['epsilon.hpp',['../a00539.html',1,'']]], 5 | ['euler_5fangles_2ehpp_2282',['euler_angles.hpp',['../a00611.html',1,'']]], 6 | ['exponential_2ehpp_2283',['exponential.hpp',['../a00083.html',1,'']]], 7 | ['ext_2ehpp_2284',['ext.hpp',['../a00518.html',1,'']]], 8 | ['extend_2ehpp_2285',['extend.hpp',['../a00614.html',1,'']]], 9 | ['extended_5fmin_5fmax_2ehpp_2286',['extended_min_max.hpp',['../a00617.html',1,'']]], 10 | ['exterior_5fproduct_2ehpp_2287',['exterior_product.hpp',['../a00620.html',1,'']]], 11 | ['matrix_5finteger_2ehpp_2288',['matrix_integer.hpp',['../a01573.html',1,'']]], 12 | ['matrix_5ftransform_2ehpp_2289',['matrix_transform.hpp',['../a01579.html',1,'']]], 13 | ['scalar_5frelational_2ehpp_2290',['scalar_relational.hpp',['../a01594.html',1,'']]], 14 | ['vector_5frelational_2ehpp_2291',['vector_relational.hpp',['../a01606.html',1,'']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /doc/api/search/files_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['fast_5fexponential_2ehpp_2292',['fast_exponential.hpp',['../a00623.html',1,'']]], 4 | ['fast_5fsquare_5froot_2ehpp_2293',['fast_square_root.hpp',['../a00626.html',1,'']]], 5 | ['fast_5ftrigonometry_2ehpp_2294',['fast_trigonometry.hpp',['../a00629.html',1,'']]], 6 | ['functions_2ehpp_2295',['functions.hpp',['../a00632.html',1,'']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/api/search/files_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['color_5fspace_2ehpp_2296',['color_space.hpp',['../a01558.html',1,'(Global Namespace)'],['../a01561.html',1,'(Global Namespace)']]], 4 | ['common_2ehpp_2297',['common.hpp',['../a01564.html',1,'']]], 5 | ['geometric_2ehpp_2298',['geometric.hpp',['../a00524.html',1,'']]], 6 | ['gradient_5fpaint_2ehpp_2299',['gradient_paint.hpp',['../a00635.html',1,'']]], 7 | ['integer_2ehpp_2300',['integer.hpp',['../a01567.html',1,'(Global Namespace)'],['../a01570.html',1,'(Global Namespace)']]], 8 | ['matrix_5finteger_2ehpp_2301',['matrix_integer.hpp',['../a01576.html',1,'']]], 9 | ['matrix_5ftransform_2ehpp_2302',['matrix_transform.hpp',['../a01582.html',1,'']]], 10 | ['packing_2ehpp_2303',['packing.hpp',['../a01585.html',1,'']]], 11 | ['quaternion_2ehpp_2304',['quaternion.hpp',['../a01588.html',1,'(Global Namespace)'],['../a01591.html',1,'(Global Namespace)']]], 12 | ['scalar_5frelational_2ehpp_2305',['scalar_relational.hpp',['../a01597.html',1,'']]], 13 | ['type_5faligned_2ehpp_2306',['type_aligned.hpp',['../a01600.html',1,'(Global Namespace)'],['../a01603.html',1,'(Global Namespace)']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /doc/api/search/files_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['handed_5fcoordinate_5fspace_2ehpp_2307',['handed_coordinate_space.hpp',['../a00638.html',1,'']]], 4 | ['hash_2ehpp_2308',['hash.hpp',['../a00641.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/files_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['integer_2ehpp_2309',['integer.hpp',['../a00542.html',1,'']]], 4 | ['intersect_2ehpp_2310',['intersect.hpp',['../a00644.html',1,'']]], 5 | ['io_2ehpp_2311',['io.hpp',['../a00647.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/api/search/files_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['log_5fbase_2ehpp_2312',['log_base.hpp',['../a00650.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/files_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['noise_2ehpp_2407',['noise.hpp',['../a00551.html',1,'']]], 4 | ['norm_2ehpp_2408',['norm.hpp',['../a00680.html',1,'']]], 5 | ['normal_2ehpp_2409',['normal.hpp',['../a00683.html',1,'']]], 6 | ['normalize_5fdot_2ehpp_2410',['normalize_dot.hpp',['../a00686.html',1,'']]], 7 | ['number_5fprecision_2ehpp_2411',['number_precision.hpp',['../a00689.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /doc/api/search/files_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['optimum_5fpow_2ehpp_2412',['optimum_pow.hpp',['../a00692.html',1,'']]], 4 | ['orthonormalize_2ehpp_2413',['orthonormalize.hpp',['../a00695.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/files_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['packing_2ehpp_2414',['packing.hpp',['../a00554.html',1,'']]], 4 | ['pca_2ehpp_2415',['pca.hpp',['../a00698.html',1,'']]], 5 | ['perpendicular_2ehpp_2416',['perpendicular.hpp',['../a00701.html',1,'']]], 6 | ['polar_5fcoordinates_2ehpp_2417',['polar_coordinates.hpp',['../a00704.html',1,'']]], 7 | ['projection_2ehpp_2418',['projection.hpp',['../a00707.html',1,'']]] 8 | ]; 9 | -------------------------------------------------------------------------------- /doc/api/search/files_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quaternion_5fcommon_2ehpp_2419',['quaternion_common.hpp',['../a00323.html',1,'']]], 4 | ['quaternion_5fdouble_2ehpp_2420',['quaternion_double.hpp',['../a00326.html',1,'']]], 5 | ['quaternion_5fdouble_5fprecision_2ehpp_2421',['quaternion_double_precision.hpp',['../a00329.html',1,'']]], 6 | ['quaternion_5fexponential_2ehpp_2422',['quaternion_exponential.hpp',['../a00332.html',1,'']]], 7 | ['quaternion_5ffloat_2ehpp_2423',['quaternion_float.hpp',['../a00335.html',1,'']]], 8 | ['quaternion_5ffloat_5fprecision_2ehpp_2424',['quaternion_float_precision.hpp',['../a00338.html',1,'']]], 9 | ['quaternion_5fgeometric_2ehpp_2425',['quaternion_geometric.hpp',['../a00341.html',1,'']]], 10 | ['quaternion_5frelational_2ehpp_2426',['quaternion_relational.hpp',['../a00344.html',1,'']]], 11 | ['quaternion_5ftransform_2ehpp_2427',['quaternion_transform.hpp',['../a00347.html',1,'']]], 12 | ['quaternion_5ftrigonometric_2ehpp_2428',['quaternion_trigonometric.hpp',['../a00350.html',1,'']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /doc/api/search/files_f.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['random_2ehpp_2429',['random.hpp',['../a00560.html',1,'']]], 4 | ['range_2ehpp_2430',['range.hpp',['../a00710.html',1,'']]], 5 | ['raw_5fdata_2ehpp_2431',['raw_data.hpp',['../a00713.html',1,'']]], 6 | ['reciprocal_2ehpp_2432',['reciprocal.hpp',['../a00563.html',1,'']]], 7 | ['rotate_5fnormalized_5faxis_2ehpp_2433',['rotate_normalized_axis.hpp',['../a00716.html',1,'']]], 8 | ['rotate_5fvector_2ehpp_2434',['rotate_vector.hpp',['../a00719.html',1,'']]], 9 | ['round_2ehpp_2435',['round.hpp',['../a00566.html',1,'']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /doc/api/search/functions_13.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['value_5fptr_3086',['value_ptr',['../a00914.html#ga1c64669e1ba1160ad9386e43dc57569a',1,'glm']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/functions_14.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['wrapangle_3087',['wrapAngle',['../a00934.html#ga069527c6dbd64f53435b8ebc4878b473',1,'glm']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/functions_15.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['yaw_3088',['yaw',['../a00908.html#ga8da38cdfdc452dafa660c2f46506bad5',1,'glm']]], 4 | ['yawpitchroll_3089',['yawPitchRoll',['../a00928.html#gae6aa26ccb020d281b449619e419a609e',1,'glm']]], 5 | ['ycocg2rgb_3090',['YCoCg2rgb',['../a00922.html#ga163596b804c7241810b2534a99eb1343',1,'glm']]], 6 | ['ycocgr2rgb_3091',['YCoCgR2rgb',['../a00922.html#gaf8d30574c8576838097d8e20c295384a',1,'glm']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/api/search/functions_16.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['zero_3092',['zero',['../a00899.html#ga788f5a421fc0f40a1296ebc094cbaa8a',1,'glm']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['half_5fpi_2740',['half_pi',['../a00899.html#ga0c36b41d462e45641faf7d7938948bac',1,'glm']]], 4 | ['hermite_2741',['hermite',['../a00969.html#gaa69e143f6374d32f934a8edeaa50bac9',1,'glm']]], 5 | ['highestbitvalue_2742',['highestBitValue',['../a00918.html#ga0dcc8fe7c3d3ad60dea409281efa3d05',1,'glm::highestBitValue(genIUType Value)'],['../a00918.html#ga898ef075ccf809a1e480faab48fe96bf',1,'glm::highestBitValue(vec< L, T, Q > const &value)']]], 6 | ['hsvcolor_2743',['hsvColor',['../a00921.html#ga789802bec2d4fe0f9741c731b4a8a7d8',1,'glm']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/api/search/groups_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['angle_20and_20trigonometry_20functions_4354',['Angle and Trigonometry Functions',['../a00984.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/groups_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['core_20features_4355',['Core features',['../a00889.html',1,'']]], 4 | ['common_20functions_4356',['Common functions',['../a00803.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/groups_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['exponential_20functions_4357',['Exponential functions',['../a00804.html',1,'']]], 4 | ['experimental_20extensions_4358',['Experimental extensions',['../a00896.html',1,'']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/groups_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['floating_2dpoint_20pack_20and_20unpack_20functions_4359',['Floating-Point Pack and Unpack Functions',['../a00983.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/groups_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['integer_20functions_4528',['Integer functions',['../a00981.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/groups_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['matrix_20functions_4529',['Matrix functions',['../a00982.html',1,'']]], 4 | ['matrix_20types_4530',['Matrix types',['../a00892.html',1,'']]], 5 | ['matrix_20types_20with_20precision_20qualifiers_4531',['Matrix types with precision qualifiers',['../a00893.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/api/search/groups_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['recommended_20extensions_4532',['Recommended extensions',['../a00895.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/groups_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['stable_20extensions_4533',['Stable extensions',['../a00894.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/groups_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vector_20relational_20functions_4534',['Vector Relational Functions',['../a00985.html',1,'']]], 4 | ['vector_20types_4535',['Vector types',['../a00890.html',1,'']]], 5 | ['vector_20types_20with_20precision_20qualifiers_4536',['Vector types with precision qualifiers',['../a00891.html',1,'']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /doc/api/search/mag_sel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/search/mag_sel.png -------------------------------------------------------------------------------- /doc/api/search/nomatches.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
No Matches
10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /doc/api/search/pages_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['opengl_20mathematics_20_28glm_29_4537',['OpenGL Mathematics (GLM)',['../index.html',1,'']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/search/search_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/search/search_l.png -------------------------------------------------------------------------------- /doc/api/search/search_m.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/search/search_m.png -------------------------------------------------------------------------------- /doc/api/search/search_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/search/search_r.png -------------------------------------------------------------------------------- /doc/api/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "abcdefghilmnopqrstuvwyz", 4 | 1: "abcdefghilmnopqrstuvw", 5 | 2: "abcdefghilmnopqrstuvwyz", 6 | 3: "abdfhilmpqsuvw", 7 | 4: "acefgimrsv", 8 | 5: "o" 9 | }; 10 | 11 | var indexSectionNames = 12 | { 13 | 0: "all", 14 | 1: "files", 15 | 2: "functions", 16 | 3: "typedefs", 17 | 4: "groups", 18 | 5: "pages" 19 | }; 20 | 21 | var indexSectionLabels = 22 | { 23 | 0: "All", 24 | 1: "Files", 25 | 2: "Functions", 26 | 3: "Typedefs", 27 | 4: "Modules", 28 | 5: "Pages" 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /doc/api/search/typedefs_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['quat_4246',['quat',['../a00851.html#gab0b441adb4509bc58d2946c2239a8942',1,'glm']]], 4 | ['qword_4247',['qword',['../a00964.html#ga4021754ffb8e5ef14c75802b15657714',1,'glm']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /doc/api/search/typedefs_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['sint_4248',['sint',['../a00939.html#gada7e83fdfe943aba4f1d5bf80cb66f40',1,'glm']]], 4 | ['size1_4249',['size1',['../a00970.html#gaeb877ac8f9a3703961736c1c5072cf68',1,'glm']]], 5 | ['size1_5ft_4250',['size1_t',['../a00970.html#gaaf6accc57f5aa50447ba7310ce3f0d6f',1,'glm']]], 6 | ['size2_4251',['size2',['../a00970.html#ga1bfe8c4975ff282bce41be2bacd524fe',1,'glm']]], 7 | ['size2_5ft_4252',['size2_t',['../a00970.html#ga5976c25657d4e2b5f73f39364c3845d6',1,'glm']]], 8 | ['size3_4253',['size3',['../a00970.html#gae1c72956d0359b0db332c6c8774d3b04',1,'glm']]], 9 | ['size3_5ft_4254',['size3_t',['../a00970.html#gaf2654983c60d641fd3808e65a8dfad8d',1,'glm']]], 10 | ['size4_4255',['size4',['../a00970.html#ga3a19dde617beaf8ce3cfc2ac5064e9aa',1,'glm']]], 11 | ['size4_5ft_4256',['size4_t',['../a00970.html#gaa423efcea63675a2df26990dbcb58656',1,'glm']]] 12 | ]; 13 | -------------------------------------------------------------------------------- /doc/api/search/typedefs_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['vec1_4349',['vec1',['../a00871.html#gadfc071d934d8dae7955a1d530a3cf656',1,'glm']]], 4 | ['vec2_4350',['vec2',['../a00890.html#gabe65c061834f61b4f7cb6037b19006a4',1,'glm']]], 5 | ['vec3_4351',['vec3',['../a00890.html#ga9c3019b13faf179e4ad3626ea66df334',1,'glm']]], 6 | ['vec4_4352',['vec4',['../a00890.html#gac215a35481a6597d1bf622a382e9d6e2',1,'glm']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /doc/api/search/typedefs_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['word_4353',['word',['../a00964.html#ga16e9fea0ef1e6c4ef472d3d1731c49a5',1,'glm']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /doc/api/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/splitbar.png -------------------------------------------------------------------------------- /doc/api/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/sync_off.png -------------------------------------------------------------------------------- /doc/api/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/sync_on.png -------------------------------------------------------------------------------- /doc/api/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/tab_a.png -------------------------------------------------------------------------------- /doc/api/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/tab_b.png -------------------------------------------------------------------------------- /doc/api/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/tab_h.png -------------------------------------------------------------------------------- /doc/api/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/api/tab_s.png -------------------------------------------------------------------------------- /doc/manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual.pdf -------------------------------------------------------------------------------- /doc/manual/frontpage1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/frontpage1.png -------------------------------------------------------------------------------- /doc/manual/frontpage2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/frontpage2.png -------------------------------------------------------------------------------- /doc/manual/g-truc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/g-truc.png -------------------------------------------------------------------------------- /doc/manual/logo-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/logo-mini.png -------------------------------------------------------------------------------- /doc/manual/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/logo.png -------------------------------------------------------------------------------- /doc/manual/noise-perlin1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin1.jpg -------------------------------------------------------------------------------- /doc/manual/noise-perlin2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin2.jpg -------------------------------------------------------------------------------- /doc/manual/noise-perlin3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin3.jpg -------------------------------------------------------------------------------- /doc/manual/noise-perlin4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin4.png -------------------------------------------------------------------------------- /doc/manual/noise-perlin5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin5.png -------------------------------------------------------------------------------- /doc/manual/noise-perlin6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-perlin6.png -------------------------------------------------------------------------------- /doc/manual/noise-simplex1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-simplex1.jpg -------------------------------------------------------------------------------- /doc/manual/noise-simplex2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-simplex2.jpg -------------------------------------------------------------------------------- /doc/manual/noise-simplex3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/noise-simplex3.jpg -------------------------------------------------------------------------------- /doc/manual/random-ballrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-ballrand.png -------------------------------------------------------------------------------- /doc/manual/random-circularrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-circularrand.png -------------------------------------------------------------------------------- /doc/manual/random-diskrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-diskrand.png -------------------------------------------------------------------------------- /doc/manual/random-gaussrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-gaussrand.png -------------------------------------------------------------------------------- /doc/manual/random-linearrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-linearrand.png -------------------------------------------------------------------------------- /doc/manual/random-sphericalrand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/random-sphericalrand.png -------------------------------------------------------------------------------- /doc/manual/references-cinder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-cinder.png -------------------------------------------------------------------------------- /doc/manual/references-glsl4book.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-glsl4book.jpg -------------------------------------------------------------------------------- /doc/manual/references-leosfortune.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-leosfortune.jpeg -------------------------------------------------------------------------------- /doc/manual/references-leosfortune2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-leosfortune2.jpg -------------------------------------------------------------------------------- /doc/manual/references-opencloth1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-opencloth1.png -------------------------------------------------------------------------------- /doc/manual/references-opencloth3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-opencloth3.png -------------------------------------------------------------------------------- /doc/manual/references-outerra1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-outerra1.jpg -------------------------------------------------------------------------------- /doc/manual/references-outerra2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-outerra2.jpg -------------------------------------------------------------------------------- /doc/manual/references-outerra3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-outerra3.jpg -------------------------------------------------------------------------------- /doc/manual/references-outerra4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/manual/references-outerra4.jpg -------------------------------------------------------------------------------- /doc/theme/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/bc_s.png -------------------------------------------------------------------------------- /doc/theme/bdwn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/bdwn.png -------------------------------------------------------------------------------- /doc/theme/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/closed.png -------------------------------------------------------------------------------- /doc/theme/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/doc.png -------------------------------------------------------------------------------- /doc/theme/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/doxygen.png -------------------------------------------------------------------------------- /doc/theme/folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/folderclosed.png -------------------------------------------------------------------------------- /doc/theme/folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/folderopen.png -------------------------------------------------------------------------------- /doc/theme/logo-mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/logo-mini.png -------------------------------------------------------------------------------- /doc/theme/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/nav_f.png -------------------------------------------------------------------------------- /doc/theme/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/nav_g.png -------------------------------------------------------------------------------- /doc/theme/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/nav_h.png -------------------------------------------------------------------------------- /doc/theme/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/open.png -------------------------------------------------------------------------------- /doc/theme/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/splitbar.png -------------------------------------------------------------------------------- /doc/theme/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/sync_off.png -------------------------------------------------------------------------------- /doc/theme/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/sync_on.png -------------------------------------------------------------------------------- /doc/theme/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/tab_a.png -------------------------------------------------------------------------------- /doc/theme/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/tab_b.png -------------------------------------------------------------------------------- /doc/theme/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/tab_h.png -------------------------------------------------------------------------------- /doc/theme/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/doc/theme/tab_s.png -------------------------------------------------------------------------------- /glm/detail/_fixes.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | //! Workaround for compatibility with other libraries 4 | #ifdef max 5 | #undef max 6 | #endif 7 | 8 | //! Workaround for compatibility with other libraries 9 | #ifdef min 10 | #undef min 11 | #endif 12 | 13 | //! Workaround for Android 14 | #ifdef isnan 15 | #undef isnan 16 | #endif 17 | 18 | //! Workaround for Android 19 | #ifdef isinf 20 | #undef isinf 21 | #endif 22 | 23 | //! Workaround for Chrone Native Client 24 | #ifdef log2 25 | #undef log2 26 | #endif 27 | 28 | -------------------------------------------------------------------------------- /glm/detail/compute_vector_relational.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //#include "compute_common.hpp" 4 | #include "setup.hpp" 5 | #include 6 | 7 | namespace glm{ 8 | namespace detail 9 | { 10 | template 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 20 | struct compute_equal 21 | { 22 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR static bool call(T a, T b) 23 | { 24 | return detail::compute_abs::is_signed>::call(b - a) <= static_cast(0); 25 | //return std::memcmp(&a, &b, sizeof(T)) == 0; 26 | } 27 | }; 28 | */ 29 | }//namespace detail 30 | }//namespace glm 31 | -------------------------------------------------------------------------------- /glm/detail/func_exponential_simd.inl: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/detail/func_exponential_simd.inl 3 | 4 | #include "../simd/exponential.h" 5 | 6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 7 | 8 | namespace glm{ 9 | namespace detail 10 | { 11 | template 12 | struct compute_sqrt<4, float, Q, true> 13 | { 14 | GLM_FUNC_QUALIFIER static vec<4, float, Q> call(vec<4, float, Q> const& v) 15 | { 16 | vec<4, float, Q> Result; 17 | Result.data = _mm_sqrt_ps(v.data); 18 | return Result; 19 | } 20 | }; 21 | 22 | # if GLM_CONFIG_ALIGNED_GENTYPES == GLM_ENABLE 23 | template<> 24 | struct compute_sqrt<4, float, aligned_lowp, true> 25 | { 26 | GLM_FUNC_QUALIFIER static vec<4, float, aligned_lowp> call(vec<4, float, aligned_lowp> const& v) 27 | { 28 | vec<4, float, aligned_lowp> Result; 29 | Result.data = glm_vec4_sqrt_lowp(v.data); 30 | return Result; 31 | } 32 | }; 33 | # endif 34 | }//namespace detail 35 | }//namespace glm 36 | 37 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 38 | -------------------------------------------------------------------------------- /glm/detail/func_packing_simd.inl: -------------------------------------------------------------------------------- 1 | namespace glm{ 2 | namespace detail 3 | { 4 | 5 | }//namespace detail 6 | }//namespace glm 7 | -------------------------------------------------------------------------------- /glm/detail/func_trigonometric_simd.inl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/glm/detail/func_trigonometric_simd.inl -------------------------------------------------------------------------------- /glm/detail/func_vector_relational_simd.inl: -------------------------------------------------------------------------------- 1 | namespace glm{ 2 | namespace detail 3 | { 4 | 5 | }//namespace detail 6 | }//namespace glm 7 | -------------------------------------------------------------------------------- /glm/detail/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" 17 | -------------------------------------------------------------------------------- /glm/detail/type_mat4x4_simd.inl: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | 3 | namespace glm 4 | { 5 | 6 | }//namespace glm 7 | -------------------------------------------------------------------------------- /glm/ext/matrix_common.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_common 2 | /// @file glm/ext/matrix_common.hpp 3 | /// 4 | /// @defgroup ext_matrix_common GLM_EXT_matrix_common 5 | /// @ingroup ext 6 | /// 7 | /// Defines functions for common matrix operations. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_matrix_common 12 | 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 | { 24 | /// @addtogroup ext_matrix_common 25 | /// @{ 26 | 27 | template 28 | GLM_FUNC_DECL mat mix(mat const& x, mat const& y, mat const& a); 29 | 30 | template 31 | GLM_FUNC_DECL mat mix(mat const& x, mat const& y, U a); 32 | 33 | template 34 | GLM_FUNC_DECL GLM_CONSTEXPR mat abs(mat const& x); 35 | 36 | /// @} 37 | }//namespace glm 38 | 39 | #include "matrix_common.inl" 40 | -------------------------------------------------------------------------------- /glm/ext/matrix_common.inl: -------------------------------------------------------------------------------- 1 | #include "../matrix.hpp" 2 | 3 | #include "_matrix_vectorize.hpp" 4 | 5 | namespace glm 6 | { 7 | template 8 | GLM_FUNC_QUALIFIER mat mix(mat const& x, mat const& y, U a) 9 | { 10 | return mat(x) * (static_cast(1) - a) + mat(y) * a; 11 | } 12 | 13 | template 14 | GLM_FUNC_QUALIFIER mat mix(mat const& x, mat const& y, mat const& a) 15 | { 16 | return matrixCompMult(mat(x), static_cast(1) - a) + matrixCompMult(mat(y), a); 17 | } 18 | 19 | template 20 | struct compute_abs_matrix 21 | { 22 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR static mat call(mat const& x) 23 | { 24 | return detail::matrix_functor_1::call(abs, x); 25 | } 26 | }; 27 | 28 | template 29 | GLM_FUNC_DECL GLM_CONSTEXPR mat abs(mat const& x) 30 | { 31 | return compute_abs_matrix::value>::call(x); 32 | } 33 | 34 | }//namespace glm 35 | -------------------------------------------------------------------------------- /glm/ext/matrix_double2x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double2x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 2 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 2, double, defaultp> dmat2x2; 16 | 17 | /// 2 columns of 2 components matrix of double-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<2, 2, double, defaultp> dmat2; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_double2x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double2x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 3 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 3, double, defaultp> dmat2x3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double2x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double2x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 4 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 4, double, defaultp> dmat2x4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double3x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double3x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 2 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 2, double, defaultp> dmat3x2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double3x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double3x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 3 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 3, double, defaultp> dmat3x3; 16 | 17 | /// 3 columns of 3 components matrix of double-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<3, 3, double, defaultp> dmat3; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_double3x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double3x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 4 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 4, double, defaultp> dmat3x4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double4x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double4x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 2 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 2, double, defaultp> dmat4x2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double4x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double4x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 3 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 3, double, defaultp> dmat4x3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_double4x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_double4x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 4 components matrix of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 4, double, defaultp> dmat4x4; 16 | 17 | /// 4 columns of 4 components matrix of double-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<4, 4, double, defaultp> dmat4; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_float2x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float2x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 2 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 2, float, defaultp> mat2x2; 16 | 17 | /// 2 columns of 2 components matrix of single-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<2, 2, float, defaultp> mat2; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_float2x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float2x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 3 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 3, float, defaultp> mat2x3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float2x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float2x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat2x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 2 columns of 4 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<2, 4, float, defaultp> mat2x4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float3x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float3x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 2 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 2, float, defaultp> mat3x2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float3x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float3x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 3 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 3, float, defaultp> mat3x3; 16 | 17 | /// 3 columns of 3 components matrix of single-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<3, 3, float, defaultp> mat3; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_float3x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float3x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat3x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 3 columns of 4 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<3, 4, float, defaultp> mat3x4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float4x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float4x2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 2 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 2, float, defaultp> mat4x2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float4x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float4x3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 3 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 3, float, defaultp> mat4x3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/matrix_float4x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/matrix_float4x4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_mat4x4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @ingroup core_matrix 10 | /// @{ 11 | 12 | /// 4 columns of 4 components matrix of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 15 | typedef mat<4, 4, float, defaultp> mat4x4; 16 | 17 | /// 4 columns of 4 components matrix of single-precision floating-point numbers. 18 | /// 19 | /// @see GLSL 4.20.8 specification, section 4.1.6 Matrices 20 | typedef mat<4, 4, float, defaultp> mat4; 21 | 22 | /// @} 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/ext/matrix_int2x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int2x2 2 | /// @file glm/ext/matrix_int2x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int2x2 GLM_EXT_matrix_int2x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int2x2 25 | /// @{ 26 | 27 | /// Signed integer 2x2 matrix. 28 | /// 29 | /// @see ext_matrix_int2x2 30 | typedef mat<2, 2, int, defaultp> imat2x2; 31 | 32 | /// Signed integer 2x2 matrix. 33 | /// 34 | /// @see ext_matrix_int2x2 35 | typedef mat<2, 2, int, defaultp> imat2; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/matrix_int2x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int2x3 2 | /// @file glm/ext/matrix_int2x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int2x3 GLM_EXT_matrix_int2x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int2x3 25 | /// @{ 26 | 27 | /// Signed integer 2x3 matrix. 28 | /// 29 | /// @see ext_matrix_int2x3 30 | typedef mat<2, 3, int, defaultp> imat2x3; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int2x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int2x4 2 | /// @file glm/ext/matrix_int2x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int2x4 GLM_EXT_matrix_int2x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int2x4 25 | /// @{ 26 | 27 | /// Signed integer 2x4 matrix. 28 | /// 29 | /// @see ext_matrix_int2x4 30 | typedef mat<2, 4, int, defaultp> imat2x4; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int3x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int3x2 2 | /// @file glm/ext/matrix_int3x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int3x2 GLM_EXT_matrix_int3x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int3x2 25 | /// @{ 26 | 27 | /// Signed integer 3x2 matrix. 28 | /// 29 | /// @see ext_matrix_int3x2 30 | typedef mat<3, 2, int, defaultp> imat3x2; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int3x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int3x3 2 | /// @file glm/ext/matrix_int3x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int3x3 GLM_EXT_matrix_int3x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int3x3 25 | /// @{ 26 | 27 | /// Signed integer 3x3 matrix. 28 | /// 29 | /// @see ext_matrix_int3x3 30 | typedef mat<3, 3, int, defaultp> imat3x3; 31 | 32 | /// Signed integer 3x3 matrix. 33 | /// 34 | /// @see ext_matrix_int3x3 35 | typedef mat<3, 3, int, defaultp> imat3; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/matrix_int3x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int3x4 2 | /// @file glm/ext/matrix_int3x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int3x4 GLM_EXT_matrix_int3x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int3x4 25 | /// @{ 26 | 27 | /// Signed integer 3x4 matrix. 28 | /// 29 | /// @see ext_matrix_int3x4 30 | typedef mat<3, 4, int, defaultp> imat3x4; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int4x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int4x2 2 | /// @file glm/ext/matrix_int4x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int4x2 GLM_EXT_matrix_int4x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int4x2 25 | /// @{ 26 | 27 | /// Signed integer 4x2 matrix. 28 | /// 29 | /// @see ext_matrix_int4x2 30 | typedef mat<4, 2, int, defaultp> imat4x2; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int4x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int4x3 2 | /// @file glm/ext/matrix_int4x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int4x3 GLM_EXT_matrix_int4x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int4x3 25 | /// @{ 26 | 27 | /// Signed integer 4x3 matrix. 28 | /// 29 | /// @see ext_matrix_int4x3 30 | typedef mat<4, 3, int, defaultp> imat4x3; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_int4x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_int4x4 2 | /// @file glm/ext/matrix_int4x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_int4x4 GLM_EXT_matrix_int4x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_int4x4 25 | /// @{ 26 | 27 | /// Signed integer 4x4 matrix. 28 | /// 29 | /// @see ext_matrix_int4x4 30 | typedef mat<4, 4, int, defaultp> imat4x4; 31 | 32 | /// Signed integer 4x4 matrix. 33 | /// 34 | /// @see ext_matrix_int4x4 35 | typedef mat<4, 4, int, defaultp> imat4; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint2x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint2x2 2 | /// @file glm/ext/matrix_uint2x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint2x2 GLM_EXT_matrix_uint2x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint2x2 25 | /// @{ 26 | 27 | /// Unsigned integer 2x2 matrix. 28 | /// 29 | /// @see ext_matrix_uint2x2 30 | typedef mat<2, 2, uint, defaultp> umat2x2; 31 | 32 | /// Unsigned integer 2x2 matrix. 33 | /// 34 | /// @see ext_matrix_uint2x2 35 | typedef mat<2, 2, uint, defaultp> umat2; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint2x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint2x3 2 | /// @file glm/ext/matrix_uint2x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint2x3 GLM_EXT_matrix_uint2x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint2x3 25 | /// @{ 26 | 27 | /// Unsigned integer 2x3 matrix. 28 | /// 29 | /// @see ext_matrix_uint2x3 30 | typedef mat<2, 3, uint, defaultp> umat2x3; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint2x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint2x4 2 | /// @file glm/ext/matrix_uint2x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint2x4 GLM_EXT_matrix_int2x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint2x4 25 | /// @{ 26 | 27 | /// Unsigned integer 2x4 matrix. 28 | /// 29 | /// @see ext_matrix_uint2x4 30 | typedef mat<2, 4, uint, defaultp> umat2x4; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint3x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint3x2 2 | /// @file glm/ext/matrix_uint3x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint3x2 GLM_EXT_matrix_uint3x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint3x2 25 | /// @{ 26 | 27 | /// Unsigned integer 3x2 matrix. 28 | /// 29 | /// @see ext_matrix_uint3x2 30 | typedef mat<3, 2, uint, defaultp> umat3x2; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint3x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint3x3 2 | /// @file glm/ext/matrix_uint3x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint3x3 GLM_EXT_matrix_uint3x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint3x3 25 | /// @{ 26 | 27 | /// Unsigned integer 3x3 matrix. 28 | /// 29 | /// @see ext_matrix_uint3x3 30 | typedef mat<3, 3, uint, defaultp> umat3x3; 31 | 32 | /// Unsigned integer 3x3 matrix. 33 | /// 34 | /// @see ext_matrix_uint3x3 35 | typedef mat<3, 3, uint, defaultp> umat3; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint3x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint3x4 2 | /// @file glm/ext/matrix_uint3x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint3x4 GLM_EXT_matrix_uint3x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint3x4 25 | /// @{ 26 | 27 | /// Signed integer 3x4 matrix. 28 | /// 29 | /// @see ext_matrix_uint3x4 30 | typedef mat<3, 4, uint, defaultp> umat3x4; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint4x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint4x2 2 | /// @file glm/ext/matrix_uint4x2.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint4x2 GLM_EXT_matrix_uint4x2 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint4x2 25 | /// @{ 26 | 27 | /// Unsigned integer 4x2 matrix. 28 | /// 29 | /// @see ext_matrix_uint4x2 30 | typedef mat<4, 2, uint, defaultp> umat4x2; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint4x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint4x3 2 | /// @file glm/ext/matrix_uint4x3.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint4x3 GLM_EXT_matrix_uint4x3 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint4x3 25 | /// @{ 26 | 27 | /// Unsigned integer 4x3 matrix. 28 | /// 29 | /// @see ext_matrix_uint4x3 30 | typedef mat<4, 3, uint, defaultp> umat4x3; 31 | 32 | /// @} 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/ext/matrix_uint4x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_matrix_uint4x4 2 | /// @file glm/ext/matrix_uint4x4.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_matrix_uint4x4 GLM_EXT_matrix_uint4x4 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Defines a number of matrices with integer types. 12 | 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 | { 24 | /// @addtogroup ext_matrix_uint4x4 25 | /// @{ 26 | 27 | /// Unsigned integer 4x4 matrix. 28 | /// 29 | /// @see ext_matrix_uint4x4 30 | typedef mat<4, 4, uint, defaultp> umat4x4; 31 | 32 | /// Unsigned integer 4x4 matrix. 33 | /// 34 | /// @see ext_matrix_uint4x4 35 | typedef mat<4, 4, uint, defaultp> umat4; 36 | 37 | /// @} 38 | }//namespace glm 39 | -------------------------------------------------------------------------------- /glm/ext/quaternion_common_simd.inl: -------------------------------------------------------------------------------- 1 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 2 | 3 | namespace glm{ 4 | namespace detail 5 | { 6 | template 7 | struct compute_dot, float, true> 8 | { 9 | static GLM_FUNC_QUALIFIER float call(qua const& x, qua const& y) 10 | { 11 | return _mm_cvtss_f32(glm_vec1_dot(x.data, y.data)); 12 | } 13 | }; 14 | }//namespace detail 15 | }//namespace glm 16 | 17 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 18 | 19 | -------------------------------------------------------------------------------- /glm/ext/quaternion_double.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_quaternion_double 2 | /// @file glm/ext/quaternion_double.hpp 3 | /// 4 | /// @defgroup ext_quaternion_double GLM_EXT_quaternion_double 5 | /// @ingroup ext 6 | /// 7 | /// Exposes double-precision floating point quaternion type. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_quaternion_float 12 | /// @see ext_quaternion_double_precision 13 | /// @see ext_quaternion_common 14 | /// @see ext_quaternion_exponential 15 | /// @see ext_quaternion_geometric 16 | /// @see ext_quaternion_relational 17 | /// @see ext_quaternion_transform 18 | /// @see ext_quaternion_trigonometric 19 | 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 | { 31 | /// @addtogroup ext_quaternion_double 32 | /// @{ 33 | 34 | /// Quaternion of double-precision floating-point numbers. 35 | typedef qua dquat; 36 | 37 | /// @} 38 | } //namespace glm 39 | 40 | -------------------------------------------------------------------------------- /glm/ext/quaternion_float.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_quaternion_float 2 | /// @file glm/ext/quaternion_float.hpp 3 | /// 4 | /// @defgroup ext_quaternion_float GLM_EXT_quaternion_float 5 | /// @ingroup ext 6 | /// 7 | /// Exposes single-precision floating point quaternion type. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_quaternion_double 12 | /// @see ext_quaternion_float_precision 13 | /// @see ext_quaternion_common 14 | /// @see ext_quaternion_exponential 15 | /// @see ext_quaternion_geometric 16 | /// @see ext_quaternion_relational 17 | /// @see ext_quaternion_transform 18 | /// @see ext_quaternion_trigonometric 19 | 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 | { 31 | /// @addtogroup ext_quaternion_float 32 | /// @{ 33 | 34 | /// Quaternion of single-precision floating-point numbers. 35 | typedef qua quat; 36 | 37 | /// @} 38 | } //namespace glm 39 | 40 | -------------------------------------------------------------------------------- /glm/ext/quaternion_float_precision.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_quaternion_float_precision 2 | /// @file glm/ext/quaternion_float_precision.hpp 3 | /// 4 | /// @defgroup ext_quaternion_float_precision GLM_EXT_quaternion_float_precision 5 | /// @ingroup ext 6 | /// 7 | /// Exposes single-precision floating point quaternion type with various precision in term of ULPs. 8 | /// 9 | /// Include to use the features of this extension. 10 | 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 | { 22 | /// @addtogroup ext_quaternion_float_precision 23 | /// @{ 24 | 25 | /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs. 26 | typedef qua lowp_quat; 27 | 28 | /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs. 29 | typedef qua mediump_quat; 30 | 31 | /// Quaternion of single-precision floating-point numbers using high precision arithmetic in term of ULPs. 32 | typedef qua highp_quat; 33 | 34 | /// @} 35 | } //namespace glm 36 | 37 | -------------------------------------------------------------------------------- /glm/ext/quaternion_relational.inl: -------------------------------------------------------------------------------- 1 | namespace glm 2 | { 3 | template 4 | GLM_FUNC_QUALIFIER vec<4, bool, Q> equal(qua const& x, qua const& y) 5 | { 6 | vec<4, bool, Q> Result; 7 | for(length_t i = 0; i < x.length(); ++i) 8 | Result[i] = x[i] == y[i]; 9 | return Result; 10 | } 11 | 12 | template 13 | GLM_FUNC_QUALIFIER vec<4, bool, Q> equal(qua const& x, qua const& y, T epsilon) 14 | { 15 | vec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w); 16 | return lessThan(abs(v), vec<4, T, Q>(epsilon)); 17 | } 18 | 19 | template 20 | GLM_FUNC_QUALIFIER vec<4, bool, Q> notEqual(qua const& x, qua const& y) 21 | { 22 | vec<4, bool, Q> Result; 23 | for(length_t i = 0; i < x.length(); ++i) 24 | Result[i] = x[i] != y[i]; 25 | return Result; 26 | } 27 | 28 | template 29 | GLM_FUNC_QUALIFIER vec<4, bool, Q> notEqual(qua const& x, qua const& y, T epsilon) 30 | { 31 | vec<4, T, Q> v(x.x - y.x, x.y - y.y, x.z - y.z, x.w - y.w); 32 | return greaterThanEqual(abs(v), vec<4, T, Q>(epsilon)); 33 | } 34 | }//namespace glm 35 | 36 | -------------------------------------------------------------------------------- /glm/ext/quaternion_transform.inl: -------------------------------------------------------------------------------- 1 | namespace glm 2 | { 3 | template 4 | GLM_FUNC_QUALIFIER qua rotate(qua const& q, T const& angle, vec<3, T, Q> const& v) 5 | { 6 | vec<3, T, Q> Tmp = v; 7 | 8 | // Axis of rotation must be normalised 9 | T len = glm::length(Tmp); 10 | if(abs(len - static_cast(1)) > static_cast(0.001)) 11 | { 12 | T oneOverLen = static_cast(1) / len; 13 | Tmp.x *= oneOverLen; 14 | Tmp.y *= oneOverLen; 15 | Tmp.z *= oneOverLen; 16 | } 17 | 18 | T const AngleRad(angle); 19 | T const Sin = sin(AngleRad * static_cast(0.5)); 20 | 21 | return q * qua::wxyz(cos(AngleRad * static_cast(0.5)), Tmp.x * Sin, Tmp.y * Sin, Tmp.z * Sin); 22 | } 23 | }//namespace glm 24 | 25 | -------------------------------------------------------------------------------- /glm/ext/quaternion_trigonometric.inl: -------------------------------------------------------------------------------- 1 | #include "scalar_constants.hpp" 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER T angle(qua const& x) 7 | { 8 | if (abs(x.w) > cos_one_over_two()) 9 | { 10 | T const a = asin(sqrt(x.x * x.x + x.y * x.y + x.z * x.z)) * static_cast(2); 11 | if(x.w < static_cast(0)) 12 | return pi() * static_cast(2) - a; 13 | return a; 14 | } 15 | 16 | return acos(x.w) * static_cast(2); 17 | } 18 | 19 | template 20 | GLM_FUNC_QUALIFIER vec<3, T, Q> axis(qua const& x) 21 | { 22 | T const tmp1 = static_cast(1) - x.w * x.w; 23 | if(tmp1 <= static_cast(0)) 24 | return vec<3, T, Q>(0, 0, 1); 25 | T const tmp2 = static_cast(1) / sqrt(tmp1); 26 | return vec<3, T, Q>(x.x * tmp2, x.y * tmp2, x.z * tmp2); 27 | } 28 | 29 | template 30 | GLM_FUNC_QUALIFIER qua angleAxis(T const& angle, vec<3, T, Q> const& v) 31 | { 32 | T const a(angle); 33 | T const s = glm::sin(a * static_cast(0.5)); 34 | 35 | return qua(glm::cos(a * static_cast(0.5)), v * s); 36 | } 37 | }//namespace glm 38 | -------------------------------------------------------------------------------- /glm/ext/scalar_constants.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_scalar_constants 2 | /// @file glm/ext/scalar_constants.hpp 3 | /// 4 | /// @defgroup ext_scalar_constants GLM_EXT_scalar_constants 5 | /// @ingroup ext 6 | /// 7 | /// Provides a list of constants and precomputed useful values. 8 | /// 9 | /// Include to use the features of this extension. 10 | 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 | { 22 | /// @addtogroup ext_scalar_constants 23 | /// @{ 24 | 25 | /// Return the epsilon constant for floating point types. 26 | template 27 | GLM_FUNC_DECL GLM_CONSTEXPR genType epsilon(); 28 | 29 | /// Return the pi constant for floating point types. 30 | template 31 | GLM_FUNC_DECL GLM_CONSTEXPR genType pi(); 32 | 33 | /// Return the value of cos(1 / 2) for floating point types. 34 | template 35 | GLM_FUNC_DECL GLM_CONSTEXPR genType cos_one_over_two(); 36 | 37 | /// @} 38 | } //namespace glm 39 | 40 | #include "scalar_constants.inl" 41 | -------------------------------------------------------------------------------- /glm/ext/scalar_constants.inl: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType epsilon() 7 | { 8 | GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'epsilon' only accepts floating-point inputs"); 9 | return std::numeric_limits::epsilon(); 10 | } 11 | 12 | template 13 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType pi() 14 | { 15 | GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'pi' only accepts floating-point inputs"); 16 | return static_cast(3.14159265358979323846264338327950288); 17 | } 18 | 19 | template 20 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType cos_one_over_two() 21 | { 22 | return genType(0.877582561890372716130286068203503191); 23 | } 24 | } //namespace glm 25 | -------------------------------------------------------------------------------- /glm/ext/scalar_packing.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_scalar_packing 2 | /// @file glm/ext/scalar_packing.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_scalar_packing GLM_EXT_scalar_packing 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// This extension provides a set of function to convert scalar values to packed 12 | /// formats. 13 | 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 | { 25 | /// @addtogroup ext_scalar_packing 26 | /// @{ 27 | 28 | 29 | /// @} 30 | }// namespace glm 31 | 32 | #include "scalar_packing.inl" 33 | -------------------------------------------------------------------------------- /glm/ext/scalar_packing.inl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/glm/ext/scalar_packing.inl -------------------------------------------------------------------------------- /glm/ext/scalar_relational.inl: -------------------------------------------------------------------------------- 1 | #include "../common.hpp" 2 | #include "../ext/scalar_int_sized.hpp" 3 | #include "../ext/scalar_uint_sized.hpp" 4 | #include "../detail/type_float.hpp" 5 | 6 | namespace glm 7 | { 8 | template 9 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, genType const& epsilon) 10 | { 11 | return abs(x - y) <= epsilon; 12 | } 13 | 14 | template 15 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, genType const& epsilon) 16 | { 17 | return abs(x - y) > epsilon; 18 | } 19 | 20 | template 21 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool equal(genType const& x, genType const& y, int MaxULPs) 22 | { 23 | detail::float_t const a(x); 24 | detail::float_t const b(y); 25 | 26 | // Different signs means they do not match. 27 | if(a.negative() != b.negative()) 28 | return false; 29 | 30 | // Find the difference in ULPs. 31 | typename detail::float_t::int_type const DiffULPs = abs(a.i - b.i); 32 | return DiffULPs <= MaxULPs; 33 | } 34 | 35 | template 36 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool notEqual(genType const& x, genType const& y, int ULPs) 37 | { 38 | return !equal(x, y, ULPs); 39 | } 40 | }//namespace glm 41 | -------------------------------------------------------------------------------- /glm/ext/vector_bool1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_bool1 2 | /// @file glm/ext/vector_bool1.hpp 3 | /// 4 | /// @defgroup ext_vector_bool1 GLM_EXT_vector_bool1 5 | /// @ingroup ext 6 | /// 7 | /// Exposes bvec1 vector type. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_bool1_precision extension. 12 | 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 | { 23 | /// @addtogroup ext_vector_bool1 24 | /// @{ 25 | 26 | /// 1 components vector of boolean. 27 | typedef vec<1, bool, defaultp> bvec1; 28 | 29 | /// @} 30 | }//namespace glm 31 | -------------------------------------------------------------------------------- /glm/ext/vector_bool1_precision.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_bool1_precision 2 | /// @file glm/ext/vector_bool1_precision.hpp 3 | /// 4 | /// @defgroup ext_vector_bool1_precision GLM_EXT_vector_bool1_precision 5 | /// @ingroup ext 6 | /// 7 | /// Exposes highp_bvec1, mediump_bvec1 and lowp_bvec1 types. 8 | /// 9 | /// Include to use the features of this extension. 10 | 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 | { 21 | /// @addtogroup ext_vector_bool1_precision 22 | /// @{ 23 | 24 | /// 1 component vector of bool values. 25 | typedef vec<1, bool, highp> highp_bvec1; 26 | 27 | /// 1 component vector of bool values. 28 | typedef vec<1, bool, mediump> mediump_bvec1; 29 | 30 | /// 1 component vector of bool values. 31 | typedef vec<1, bool, lowp> lowp_bvec1; 32 | 33 | /// @} 34 | }//namespace glm 35 | -------------------------------------------------------------------------------- /glm/ext/vector_bool2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_bool2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 2 components vector of boolean. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<2, bool, defaultp> bvec2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_bool3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_bool3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 3 components vector of boolean. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<3, bool, defaultp> bvec3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_bool4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_bool4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 4 components vector of boolean. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<4, bool, defaultp> bvec4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_double1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_double1 2 | /// @file glm/ext/vector_double1.hpp 3 | /// 4 | /// @defgroup ext_vector_double1 GLM_EXT_vector_double1 5 | /// @ingroup ext 6 | /// 7 | /// Exposes double-precision floating point vector type with one component. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_double1_precision extension. 12 | /// @see ext_vector_float1 extension. 13 | 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 | { 24 | /// @addtogroup ext_vector_double1 25 | /// @{ 26 | 27 | /// 1 components vector of double-precision floating-point numbers. 28 | typedef vec<1, double, defaultp> dvec1; 29 | 30 | /// @} 31 | }//namespace glm 32 | -------------------------------------------------------------------------------- /glm/ext/vector_double1_precision.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_double1_precision 2 | /// @file glm/ext/vector_double1_precision.hpp 3 | /// 4 | /// @defgroup ext_vector_double1_precision GLM_EXT_vector_double1_precision 5 | /// @ingroup ext 6 | /// 7 | /// Exposes highp_dvec1, mediump_dvec1 and lowp_dvec1 types. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_double1 12 | 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 | { 23 | /// @addtogroup ext_vector_double1_precision 24 | /// @{ 25 | 26 | /// 1 component vector of double-precision floating-point numbers using high precision arithmetic in term of ULPs. 27 | typedef vec<1, double, highp> highp_dvec1; 28 | 29 | /// 1 component vector of double-precision floating-point numbers using medium precision arithmetic in term of ULPs. 30 | typedef vec<1, double, mediump> mediump_dvec1; 31 | 32 | /// 1 component vector of double-precision floating-point numbers using low precision arithmetic in term of ULPs. 33 | typedef vec<1, double, lowp> lowp_dvec1; 34 | 35 | /// @} 36 | }//namespace glm 37 | -------------------------------------------------------------------------------- /glm/ext/vector_double2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_double2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 2 components vector of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<2, double, defaultp> dvec2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_double3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_double3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 3 components vector of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<3, double, defaultp> dvec3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_double4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_double4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 4 components vector of double-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<4, double, defaultp> dvec4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_float1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_float1 2 | /// @file glm/ext/vector_float1.hpp 3 | /// 4 | /// @defgroup ext_vector_float1 GLM_EXT_vector_float1 5 | /// @ingroup ext 6 | /// 7 | /// Exposes single-precision floating point vector type with one component. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_float1_precision extension. 12 | /// @see ext_vector_double1 extension. 13 | 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 | { 24 | /// @addtogroup ext_vector_float1 25 | /// @{ 26 | 27 | /// 1 components vector of single-precision floating-point numbers. 28 | typedef vec<1, float, defaultp> vec1; 29 | 30 | /// @} 31 | }//namespace glm 32 | -------------------------------------------------------------------------------- /glm/ext/vector_float1_precision.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_float1_precision 2 | /// @file glm/ext/vector_float1_precision.hpp 3 | /// 4 | /// @defgroup ext_vector_float1_precision GLM_EXT_vector_float1_precision 5 | /// @ingroup ext 6 | /// 7 | /// Exposes highp_vec1, mediump_vec1 and lowp_vec1 types. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_float1 extension. 12 | 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 | { 23 | /// @addtogroup ext_vector_float1_precision 24 | /// @{ 25 | 26 | /// 1 component vector of single-precision floating-point numbers using high precision arithmetic in term of ULPs. 27 | typedef vec<1, float, highp> highp_vec1; 28 | 29 | /// 1 component vector of single-precision floating-point numbers using medium precision arithmetic in term of ULPs. 30 | typedef vec<1, float, mediump> mediump_vec1; 31 | 32 | /// 1 component vector of single-precision floating-point numbers using low precision arithmetic in term of ULPs. 33 | typedef vec<1, float, lowp> lowp_vec1; 34 | 35 | /// @} 36 | }//namespace glm 37 | -------------------------------------------------------------------------------- /glm/ext/vector_float2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_float2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 2 components vector of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<2, float, defaultp> vec2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_float3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_float3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 3 components vector of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<3, float, defaultp> vec3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_float4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_float4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 4 components vector of single-precision floating-point numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<4, float, defaultp> vec4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_int1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_int1 2 | /// @file glm/ext/vector_int1.hpp 3 | /// 4 | /// @defgroup ext_vector_int1 GLM_EXT_vector_int1 5 | /// @ingroup ext 6 | /// 7 | /// Exposes ivec1 vector type. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_uint1 extension. 12 | /// @see ext_vector_int1_precision extension. 13 | 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 | { 24 | /// @addtogroup ext_vector_int1 25 | /// @{ 26 | 27 | /// 1 component vector of signed integer numbers. 28 | typedef vec<1, int, defaultp> ivec1; 29 | 30 | /// @} 31 | }//namespace glm 32 | 33 | -------------------------------------------------------------------------------- /glm/ext/vector_int2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_int2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 2 components vector of signed integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<2, int, defaultp> ivec2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_int3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_int3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 3 components vector of signed integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<3, int, defaultp> ivec3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_int4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_int4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 4 components vector of signed integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<4, int, defaultp> ivec4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_packing.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_packing 2 | /// @file glm/ext/vector_packing.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup ext_vector_packing GLM_EXT_vector_packing 7 | /// @ingroup ext 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// This extension provides a set of function to convert vectors to packed 12 | /// formats. 13 | 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 | { 25 | /// @addtogroup ext_vector_packing 26 | /// @{ 27 | 28 | 29 | /// @} 30 | }// namespace glm 31 | 32 | #include "vector_packing.inl" 33 | -------------------------------------------------------------------------------- /glm/ext/vector_packing.inl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/glm/ext/vector_packing.inl -------------------------------------------------------------------------------- /glm/ext/vector_uint1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref ext_vector_uint1 2 | /// @file glm/ext/vector_uint1.hpp 3 | /// 4 | /// @defgroup ext_vector_uint1 GLM_EXT_vector_uint1 5 | /// @ingroup ext 6 | /// 7 | /// Exposes uvec1 vector type. 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// @see ext_vector_int1 extension. 12 | /// @see ext_vector_uint1_precision extension. 13 | 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 | { 24 | /// @addtogroup ext_vector_uint1 25 | /// @{ 26 | 27 | /// 1 component vector of unsigned integer numbers. 28 | typedef vec<1, unsigned int, defaultp> uvec1; 29 | 30 | /// @} 31 | }//namespace glm 32 | 33 | -------------------------------------------------------------------------------- /glm/ext/vector_uint2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_uint2.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec2.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 2 components vector of unsigned integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<2, unsigned int, defaultp> uvec2; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_uint3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_uint3.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec3.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 3 components vector of unsigned integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<3, unsigned int, defaultp> uvec3; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/ext/vector_uint4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/ext/vector_uint4.hpp 3 | 4 | #pragma once 5 | #include "../detail/type_vec4.hpp" 6 | 7 | namespace glm 8 | { 9 | /// @addtogroup core_vector 10 | /// @{ 11 | 12 | /// 4 components vector of unsigned integer numbers. 13 | /// 14 | /// @see GLSL 4.20.8 specification, section 4.1.5 Vectors 15 | typedef vec<4, unsigned int, defaultp> uvec4; 16 | 17 | /// @} 18 | }//namespace glm 19 | -------------------------------------------------------------------------------- /glm/gtc/integer.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtc_integer 2 | /// @file glm/gtc/integer.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// @see gtc_integer (dependence) 6 | /// 7 | /// @defgroup gtc_integer GLM_GTC_integer 8 | /// @ingroup gtc 9 | /// 10 | /// Include to use the features of this extension. 11 | /// 12 | /// @brief Allow to perform bit operations on integer values 13 | 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 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 | { 32 | /// @addtogroup gtc_integer 33 | /// @{ 34 | 35 | /// Returns the log2 of x for integer values. Useful to compute mipmap count from the texture size. 36 | /// @see gtc_integer 37 | template 38 | GLM_FUNC_DECL genIUType log2(genIUType x); 39 | 40 | /// @} 41 | } //namespace glm 42 | 43 | #include "integer.inl" 44 | -------------------------------------------------------------------------------- /glm/gtc/integer.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtc_integer 2 | 3 | namespace glm{ 4 | namespace detail 5 | { 6 | template 7 | struct compute_log2 8 | { 9 | GLM_FUNC_QUALIFIER static vec call(vec const& v) 10 | { 11 | //Equivalent to return findMSB(vec); but save one function call in ASM with VC 12 | //return findMSB(vec); 13 | return vec(detail::compute_findMSB_vec::call(v)); 14 | } 15 | }; 16 | 17 | # if GLM_HAS_BITSCAN_WINDOWS 18 | template 19 | struct compute_log2<4, int, Q, false, Aligned> 20 | { 21 | GLM_FUNC_QUALIFIER static vec<4, int, Q> call(vec<4, int, Q> const& v) 22 | { 23 | vec<4, int, Q> Result; 24 | _BitScanReverse(reinterpret_cast(&Result.x), v.x); 25 | _BitScanReverse(reinterpret_cast(&Result.y), v.y); 26 | _BitScanReverse(reinterpret_cast(&Result.z), v.z); 27 | _BitScanReverse(reinterpret_cast(&Result.w), v.w); 28 | return Result; 29 | } 30 | }; 31 | # endif//GLM_HAS_BITSCAN_WINDOWS 32 | }//namespace detail 33 | }//namespace glm 34 | -------------------------------------------------------------------------------- /glm/gtc/matrix_transform.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtc_matrix_transform 2 | /// @file glm/gtc/matrix_transform.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// @see gtx_transform 6 | /// @see gtx_transform2 7 | /// 8 | /// @defgroup gtc_matrix_transform GLM_GTC_matrix_transform 9 | /// @ingroup gtc 10 | /// 11 | /// Include to use the features of this extension. 12 | /// 13 | /// Defines functions that generate common transformation matrices. 14 | /// 15 | /// The matrices generated by this extension use standard OpenGL fixed-function 16 | /// conventions. For example, the lookAt function generates a transform from world 17 | /// space into the specific eye space that the projective matrix functions 18 | /// (perspective, ortho, etc) are designed to expect. The OpenGL compatibility 19 | /// specifications defines the particular layout of this eye space. 20 | 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" 37 | -------------------------------------------------------------------------------- /glm/gtc/matrix_transform.inl: -------------------------------------------------------------------------------- 1 | #include "../geometric.hpp" 2 | #include "../trigonometric.hpp" 3 | #include "../matrix.hpp" 4 | -------------------------------------------------------------------------------- /glm/gtc/quaternion_simd.inl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/icaven/glm/dca38025fba63bb9284023e6de55f756b9e37cec/glm/gtc/quaternion_simd.inl -------------------------------------------------------------------------------- /glm/gtc/reciprocal.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtc_reciprocal 2 | /// @file glm/gtc/reciprocal.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtc_reciprocal GLM_GTC_reciprocal 7 | /// @ingroup gtc 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Define secant, cosecant and cotangent functions. 12 | 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 | 25 | -------------------------------------------------------------------------------- /glm/gtc/type_precision.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtc_precision 2 | 3 | namespace glm 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /glm/gtc/vec1.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtc_vec1 2 | /// @file glm/gtc/vec1.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtc_vec1 GLM_GTC_vec1 7 | /// @ingroup gtc 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Add vec1, ivec1, uvec1 and bvec1 types. 12 | 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 | 31 | -------------------------------------------------------------------------------- /glm/gtx/closest_point.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_closest_point 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER vec<3, T, Q> closestPointOnLine 7 | ( 8 | vec<3, T, Q> const& point, 9 | vec<3, T, Q> const& a, 10 | vec<3, T, Q> const& b 11 | ) 12 | { 13 | T LineLength = distance(a, b); 14 | vec<3, T, Q> Vector = point - a; 15 | vec<3, T, Q> LineDirection = (b - a) / LineLength; 16 | 17 | // Project Vector to LineDirection to get the distance of point from a 18 | T Distance = dot(Vector, LineDirection); 19 | 20 | if(Distance <= T(0)) return a; 21 | if(Distance >= LineLength) return b; 22 | return a + LineDirection * Distance; 23 | } 24 | 25 | template 26 | GLM_FUNC_QUALIFIER vec<2, T, Q> closestPointOnLine 27 | ( 28 | vec<2, T, Q> const& point, 29 | vec<2, T, Q> const& a, 30 | vec<2, T, Q> const& b 31 | ) 32 | { 33 | T LineLength = distance(a, b); 34 | vec<2, T, Q> Vector = point - a; 35 | vec<2, T, Q> LineDirection = (b - a) / LineLength; 36 | 37 | // Project Vector to LineDirection to get the distance of point from a 38 | T Distance = dot(Vector, LineDirection); 39 | 40 | if(Distance <= T(0)) return a; 41 | if(Distance >= LineLength) return b; 42 | return a + LineDirection * Distance; 43 | } 44 | 45 | }//namespace glm 46 | -------------------------------------------------------------------------------- /glm/gtx/extend.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_extend 2 | /// @file glm/gtx/extend.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_extend GLM_GTX_extend 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Extend a position from a source to a position at a defined length. 12 | 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 | { 26 | /// @addtogroup gtx_extend 27 | /// @{ 28 | 29 | /// Extends of Length the Origin position using the (Source - Origin) direction. 30 | /// @see gtx_extend 31 | template 32 | GLM_FUNC_DECL genType extend( 33 | genType const& Origin, 34 | genType const& Source, 35 | typename genType::value_type const Length); 36 | 37 | /// @} 38 | }//namespace glm 39 | 40 | #include "extend.inl" 41 | -------------------------------------------------------------------------------- /glm/gtx/extend.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_extend 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER genType extend 7 | ( 8 | genType const& Origin, 9 | genType const& Source, 10 | genType const& Distance 11 | ) 12 | { 13 | return Origin + (Source - Origin) * Distance; 14 | } 15 | 16 | template 17 | GLM_FUNC_QUALIFIER vec<2, T, Q> extend 18 | ( 19 | vec<2, T, Q> const& Origin, 20 | vec<2, T, Q> const& Source, 21 | T const& Distance 22 | ) 23 | { 24 | return Origin + (Source - Origin) * Distance; 25 | } 26 | 27 | template 28 | GLM_FUNC_QUALIFIER vec<3, T, Q> extend 29 | ( 30 | vec<3, T, Q> const& Origin, 31 | vec<3, T, Q> const& Source, 32 | T const& Distance 33 | ) 34 | { 35 | return Origin + (Source - Origin) * Distance; 36 | } 37 | 38 | template 39 | GLM_FUNC_QUALIFIER vec<4, T, Q> extend 40 | ( 41 | vec<4, T, Q> const& Origin, 42 | vec<4, T, Q> const& Source, 43 | T const& Distance 44 | ) 45 | { 46 | return Origin + (Source - Origin) * Distance; 47 | } 48 | }//namespace glm 49 | -------------------------------------------------------------------------------- /glm/gtx/exterior_product.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_exterior_product 2 | 3 | #include 4 | 5 | namespace glm { 6 | namespace detail 7 | { 8 | template 9 | struct compute_cross_vec2 10 | { 11 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR static T call(vec<2, T, Q> const& v, vec<2, T, Q> const& u) 12 | { 13 | GLM_STATIC_ASSERT(std::numeric_limits::is_iec559 || GLM_CONFIG_UNRESTRICTED_FLOAT, "'cross' accepts only floating-point inputs"); 14 | 15 | return v.x * u.y - u.x * v.y; 16 | } 17 | }; 18 | }//namespace detail 19 | 20 | template 21 | GLM_FUNC_QUALIFIER GLM_CONSTEXPR T cross(vec<2, T, Q> const& x, vec<2, T, Q> const& y) 22 | { 23 | return detail::compute_cross_vec2::value>::call(x, y); 24 | } 25 | }//namespace glm 26 | 27 | -------------------------------------------------------------------------------- /glm/gtx/float_notmalize.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_float_normalize 2 | 3 | #include 4 | 5 | namespace glm 6 | { 7 | template 8 | GLM_FUNC_QUALIFIER vec floatNormalize(vec const& v) 9 | { 10 | return vec(v) / static_cast(std::numeric_limits::max()); 11 | } 12 | 13 | }//namespace glm 14 | -------------------------------------------------------------------------------- /glm/gtx/functions.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_functions 2 | 3 | #include "../exponential.hpp" 4 | 5 | namespace glm 6 | { 7 | template 8 | GLM_FUNC_QUALIFIER T gauss 9 | ( 10 | T x, 11 | T ExpectedValue, 12 | T StandardDeviation 13 | ) 14 | { 15 | return exp(-((x - ExpectedValue) * (x - ExpectedValue)) / (static_cast(2) * StandardDeviation * StandardDeviation)) / (StandardDeviation * sqrt(static_cast(6.28318530717958647692528676655900576))); 16 | } 17 | 18 | template 19 | GLM_FUNC_QUALIFIER T gauss 20 | ( 21 | vec<2, T, Q> const& Coord, 22 | vec<2, T, Q> const& ExpectedValue, 23 | vec<2, T, Q> const& StandardDeviation 24 | ) 25 | { 26 | vec<2, T, Q> const Squared = ((Coord - ExpectedValue) * (Coord - ExpectedValue)) / (static_cast(2) * StandardDeviation * StandardDeviation); 27 | return exp(-(Squared.x + Squared.y)); 28 | } 29 | }//namespace glm 30 | 31 | -------------------------------------------------------------------------------- /glm/gtx/gradient_paint.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_gradient_paint 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER T radialGradient 7 | ( 8 | vec<2, T, Q> const& Center, 9 | T const& Radius, 10 | vec<2, T, Q> const& Focal, 11 | vec<2, T, Q> const& Position 12 | ) 13 | { 14 | vec<2, T, Q> F = Focal - Center; 15 | vec<2, T, Q> D = Position - Focal; 16 | T Radius2 = pow2(Radius); 17 | T Fx2 = pow2(F.x); 18 | T Fy2 = pow2(F.y); 19 | 20 | T Numerator = (D.x * F.x + D.y * F.y) + sqrt(Radius2 * (pow2(D.x) + pow2(D.y)) - pow2(D.x * F.y - D.y * F.x)); 21 | T Denominator = Radius2 - (Fx2 + Fy2); 22 | return Numerator / Denominator; 23 | } 24 | 25 | template 26 | GLM_FUNC_QUALIFIER T linearGradient 27 | ( 28 | vec<2, T, Q> const& Point0, 29 | vec<2, T, Q> const& Point1, 30 | vec<2, T, Q> const& Position 31 | ) 32 | { 33 | vec<2, T, Q> Dist = Point1 - Point0; 34 | return (Dist.x * (Position.x - Point0.x) + Dist.y * (Position.y - Point0.y)) / glm::dot(Dist, Dist); 35 | } 36 | }//namespace glm 37 | -------------------------------------------------------------------------------- /glm/gtx/handed_coordinate_space.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_handed_coordinate_space 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER bool rightHanded 7 | ( 8 | vec<3, T, Q> const& tangent, 9 | vec<3, T, Q> const& binormal, 10 | vec<3, T, Q> const& normal 11 | ) 12 | { 13 | return dot(cross(normal, tangent), binormal) > T(0); 14 | } 15 | 16 | template 17 | GLM_FUNC_QUALIFIER bool leftHanded 18 | ( 19 | vec<3, T, Q> const& tangent, 20 | vec<3, T, Q> const& binormal, 21 | vec<3, T, Q> const& normal 22 | ) 23 | { 24 | return dot(cross(normal, tangent), binormal) < T(0); 25 | } 26 | }//namespace glm 27 | -------------------------------------------------------------------------------- /glm/gtx/log_base.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_log_base 2 | /// @file glm/gtx/log_base.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_log_base GLM_GTX_log_base 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Logarithm for any base. base can be a vector or a scalar. 12 | 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 | { 26 | /// @addtogroup gtx_log_base 27 | /// @{ 28 | 29 | /// Logarithm for any base. 30 | /// From GLM_GTX_log_base. 31 | template 32 | GLM_FUNC_DECL genType log( 33 | genType const& x, 34 | genType const& base); 35 | 36 | /// Logarithm for any base. 37 | /// From GLM_GTX_log_base. 38 | template 39 | GLM_FUNC_DECL vec sign( 40 | vec const& x, 41 | vec const& base); 42 | 43 | /// @} 44 | }//namespace glm 45 | 46 | #include "log_base.inl" 47 | -------------------------------------------------------------------------------- /glm/gtx/log_base.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_log_base 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER genType log(genType const& x, genType const& base) 7 | { 8 | return glm::log(x) / glm::log(base); 9 | } 10 | 11 | template 12 | GLM_FUNC_QUALIFIER vec log(vec const& x, vec const& base) 13 | { 14 | return glm::log(x) / glm::log(base); 15 | } 16 | }//namespace glm 17 | -------------------------------------------------------------------------------- /glm/gtx/matrix_cross_product.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_matrix_cross_product 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER mat<3, 3, T, Q> matrixCross3 7 | ( 8 | vec<3, T, Q> const& x 9 | ) 10 | { 11 | mat<3, 3, T, Q> Result(T(0)); 12 | Result[0][1] = x.z; 13 | Result[1][0] = -x.z; 14 | Result[0][2] = -x.y; 15 | Result[2][0] = x.y; 16 | Result[1][2] = x.x; 17 | Result[2][1] = -x.x; 18 | return Result; 19 | } 20 | 21 | template 22 | GLM_FUNC_QUALIFIER mat<4, 4, T, Q> matrixCross4 23 | ( 24 | vec<3, T, Q> const& x 25 | ) 26 | { 27 | mat<4, 4, T, Q> Result(T(0)); 28 | Result[0][1] = x.z; 29 | Result[1][0] = -x.z; 30 | Result[0][2] = -x.y; 31 | Result[2][0] = x.y; 32 | Result[1][2] = x.x; 33 | Result[2][1] = -x.x; 34 | return Result; 35 | } 36 | 37 | }//namespace glm 38 | -------------------------------------------------------------------------------- /glm/gtx/mixed_product.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_mixed_product 2 | /// @file glm/gtx/mixed_product.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_mixed_product GLM_GTX_mixed_producte 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Mixed product of 3 vectors. 12 | 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 | { 26 | /// @addtogroup gtx_mixed_product 27 | /// @{ 28 | 29 | /// @brief Mixed product of 3 vectors (from GLM_GTX_mixed_product extension) 30 | template 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 | 36 | /// @} 37 | }// namespace glm 38 | 39 | #include "mixed_product.inl" 40 | -------------------------------------------------------------------------------- /glm/gtx/mixed_product.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_mixed_product 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER T mixedProduct 7 | ( 8 | vec<3, T, Q> const& v1, 9 | vec<3, T, Q> const& v2, 10 | vec<3, T, Q> const& v3 11 | ) 12 | { 13 | return dot(cross(v1, v2), v3); 14 | } 15 | }//namespace glm 16 | -------------------------------------------------------------------------------- /glm/gtx/normal.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_normal 2 | /// @file glm/gtx/normal.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// @see gtx_extented_min_max (dependence) 6 | /// 7 | /// @defgroup gtx_normal GLM_GTX_normal 8 | /// @ingroup gtx 9 | /// 10 | /// Include to use the features of this extension. 11 | /// 12 | /// Compute the normal of a triangle. 13 | 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 | { 27 | /// @addtogroup gtx_normal 28 | /// @{ 29 | 30 | /// Computes triangle normal from triangle points. 31 | /// 32 | /// @see gtx_normal 33 | template 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 | 36 | /// @} 37 | }//namespace glm 38 | 39 | #include "normal.inl" 40 | -------------------------------------------------------------------------------- /glm/gtx/normal.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_normal 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER vec<3, T, Q> triangleNormal 7 | ( 8 | vec<3, T, Q> const& p1, 9 | vec<3, T, Q> const& p2, 10 | vec<3, T, Q> const& p3 11 | ) 12 | { 13 | return normalize(cross(p1 - p2, p1 - p3)); 14 | } 15 | }//namespace glm 16 | -------------------------------------------------------------------------------- /glm/gtx/normalize_dot.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_normalize_dot 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER T normalizeDot(vec const& x, vec const& y) 7 | { 8 | return glm::dot(x, y) * glm::inversesqrt(glm::dot(x, x) * glm::dot(y, y)); 9 | } 10 | 11 | template 12 | GLM_FUNC_QUALIFIER T fastNormalizeDot(vec const& x, vec const& y) 13 | { 14 | return glm::dot(x, y) * glm::fastInverseSqrt(glm::dot(x, x) * glm::dot(y, y)); 15 | } 16 | }//namespace glm 17 | -------------------------------------------------------------------------------- /glm/gtx/optimum_pow.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_optimum_pow 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER genType pow2(genType const& x) 7 | { 8 | return x * x; 9 | } 10 | 11 | template 12 | GLM_FUNC_QUALIFIER genType pow3(genType const& x) 13 | { 14 | return x * x * x; 15 | } 16 | 17 | template 18 | GLM_FUNC_QUALIFIER genType pow4(genType const& x) 19 | { 20 | return (x * x) * (x * x); 21 | } 22 | }//namespace glm 23 | -------------------------------------------------------------------------------- /glm/gtx/orthonormalize.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_orthonormalize 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER mat<3, 3, T, Q> orthonormalize(mat<3, 3, T, Q> const& m) 7 | { 8 | mat<3, 3, T, Q> r = m; 9 | 10 | r[0] = normalize(r[0]); 11 | 12 | T d0 = dot(r[0], r[1]); 13 | r[1] -= r[0] * d0; 14 | r[1] = normalize(r[1]); 15 | 16 | T d1 = dot(r[1], r[2]); 17 | d0 = dot(r[0], r[2]); 18 | r[2] -= r[0] * d0 + r[1] * d1; 19 | r[2] = normalize(r[2]); 20 | 21 | return r; 22 | } 23 | 24 | template 25 | GLM_FUNC_QUALIFIER vec<3, T, Q> orthonormalize(vec<3, T, Q> const& x, vec<3, T, Q> const& y) 26 | { 27 | return normalize(x - y * dot(y, x)); 28 | } 29 | }//namespace glm 30 | -------------------------------------------------------------------------------- /glm/gtx/perpendicular.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_perpendicular 2 | /// @file glm/gtx/perpendicular.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// @see gtx_projection (dependence) 6 | /// 7 | /// @defgroup gtx_perpendicular GLM_GTX_perpendicular 8 | /// @ingroup gtx 9 | /// 10 | /// Include to use the features of this extension. 11 | /// 12 | /// Perpendicular of a vector from other one 13 | 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 | { 28 | /// @addtogroup gtx_perpendicular 29 | /// @{ 30 | 31 | //! Projects x a perpendicular axis of Normal. 32 | //! From GLM_GTX_perpendicular extension. 33 | template 34 | GLM_FUNC_DECL genType perp(genType const& x, genType const& Normal); 35 | 36 | /// @} 37 | }//namespace glm 38 | 39 | #include "perpendicular.inl" 40 | -------------------------------------------------------------------------------- /glm/gtx/perpendicular.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_perpendicular 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER genType perp(genType const& x, genType const& Normal) 7 | { 8 | return x - proj(x, Normal); 9 | } 10 | }//namespace glm 11 | -------------------------------------------------------------------------------- /glm/gtx/polar_coordinates.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_polar_coordinates 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER vec<3, T, Q> polar 7 | ( 8 | vec<3, T, Q> const& euclidean 9 | ) 10 | { 11 | T const Length(length(euclidean)); 12 | vec<3, T, Q> const tmp(euclidean / Length); 13 | T const xz_dist(sqrt(tmp.x * tmp.x + tmp.z * tmp.z)); 14 | 15 | return vec<3, T, Q>( 16 | asin(tmp.y), // latitude 17 | atan(tmp.x, tmp.z), // longitude 18 | xz_dist); // xz distance 19 | } 20 | 21 | template 22 | GLM_FUNC_QUALIFIER vec<3, T, Q> euclidean 23 | ( 24 | vec<2, T, Q> const& polar 25 | ) 26 | { 27 | T const latitude(polar.x); 28 | T const longitude(polar.y); 29 | 30 | return vec<3, T, Q>( 31 | cos(latitude) * sin(longitude), 32 | sin(latitude), 33 | cos(latitude) * cos(longitude)); 34 | } 35 | 36 | }//namespace glm 37 | -------------------------------------------------------------------------------- /glm/gtx/projection.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_projection 2 | /// @file glm/gtx/projection.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_projection GLM_GTX_projection 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Projection of a vector to other one 12 | 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 | { 26 | /// @addtogroup gtx_projection 27 | /// @{ 28 | 29 | /// Projects x on Normal. 30 | /// 31 | /// @param[in] x A vector to project 32 | /// @param[in] Normal A normal that doesn't need to be of unit length. 33 | /// 34 | /// @see gtx_projection 35 | template 36 | GLM_FUNC_DECL genType proj(genType const& x, genType const& Normal); 37 | 38 | /// @} 39 | }//namespace glm 40 | 41 | #include "projection.inl" 42 | -------------------------------------------------------------------------------- /glm/gtx/projection.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_projection 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER genType proj(genType const& x, genType const& Normal) 7 | { 8 | return glm::dot(x, Normal) / glm::dot(Normal, Normal) * Normal; 9 | } 10 | }//namespace glm 11 | -------------------------------------------------------------------------------- /glm/gtx/raw_data.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_raw_data 2 | 3 | -------------------------------------------------------------------------------- /glm/gtx/scalar_relational.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_scalar_relational 2 | /// @file glm/gtx/scalar_relational.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_scalar_relational GLM_GTX_scalar_relational 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Extend a position from a source to a position at a defined length. 12 | 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 | { 26 | /// @addtogroup gtx_scalar_relational 27 | /// @{ 28 | 29 | 30 | 31 | /// @} 32 | }//namespace glm 33 | 34 | #include "scalar_relational.inl" 35 | -------------------------------------------------------------------------------- /glm/gtx/std_based_type.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_std_based_type 2 | 3 | namespace glm 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /glm/gtx/texture.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_texture 2 | 3 | namespace glm 4 | { 5 | template 6 | inline T levels(vec const& Extent) 7 | { 8 | return glm::log2(compMax(Extent)) + static_cast(1); 9 | } 10 | 11 | template 12 | inline T levels(T Extent) 13 | { 14 | return vec<1, T, defaultp>(Extent).x; 15 | } 16 | }//namespace glm 17 | 18 | -------------------------------------------------------------------------------- /glm/gtx/transform.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_transform 2 | 3 | namespace glm 4 | { 5 | template 6 | GLM_FUNC_QUALIFIER mat<4, 4, T, Q> translate(vec<3, T, Q> const& v) 7 | { 8 | return translate(mat<4, 4, T, Q>(static_cast(1)), v); 9 | } 10 | 11 | template 12 | GLM_FUNC_QUALIFIER mat<4, 4, T, Q> rotate(T angle, vec<3, T, Q> const& v) 13 | { 14 | return rotate(mat<4, 4, T, Q>(static_cast(1)), angle, v); 15 | } 16 | 17 | template 18 | GLM_FUNC_QUALIFIER mat<4, 4, T, Q> scale(vec<3, T, Q> const& v) 19 | { 20 | return scale(mat<4, 4, T, Q>(static_cast(1)), v); 21 | } 22 | 23 | }//namespace glm 24 | -------------------------------------------------------------------------------- /glm/gtx/type_aligned.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtc_type_aligned 2 | 3 | namespace glm 4 | { 5 | 6 | } 7 | -------------------------------------------------------------------------------- /glm/gtx/wrap.hpp: -------------------------------------------------------------------------------- 1 | /// @ref gtx_wrap 2 | /// @file glm/gtx/wrap.hpp 3 | /// 4 | /// @see core (dependence) 5 | /// 6 | /// @defgroup gtx_wrap GLM_GTX_wrap 7 | /// @ingroup gtx 8 | /// 9 | /// Include to use the features of this extension. 10 | /// 11 | /// Wrapping mode of texture coordinates. 12 | 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 | { 29 | /// @addtogroup gtx_wrap 30 | /// @{ 31 | 32 | /// @} 33 | }// namespace glm 34 | 35 | #include "wrap.inl" 36 | -------------------------------------------------------------------------------- /glm/gtx/wrap.inl: -------------------------------------------------------------------------------- 1 | /// @ref gtx_wrap 2 | 3 | namespace glm 4 | { 5 | 6 | }//namespace glm 7 | -------------------------------------------------------------------------------- /glm/mat2x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat2x2.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double2x2.hpp" 6 | #include "./ext/matrix_double2x2_precision.hpp" 7 | #include "./ext/matrix_float2x2.hpp" 8 | #include "./ext/matrix_float2x2_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/mat2x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat2x3.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double2x3.hpp" 6 | #include "./ext/matrix_double2x3_precision.hpp" 7 | #include "./ext/matrix_float2x3.hpp" 8 | #include "./ext/matrix_float2x3_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/mat2x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat2x4.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double2x4.hpp" 6 | #include "./ext/matrix_double2x4_precision.hpp" 7 | #include "./ext/matrix_float2x4.hpp" 8 | #include "./ext/matrix_float2x4_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/mat3x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat3x2.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double3x2.hpp" 6 | #include "./ext/matrix_double3x2_precision.hpp" 7 | #include "./ext/matrix_float3x2.hpp" 8 | #include "./ext/matrix_float3x2_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/mat3x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat3x3.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double3x3.hpp" 6 | #include "./ext/matrix_double3x3_precision.hpp" 7 | #include "./ext/matrix_float3x3.hpp" 8 | #include "./ext/matrix_float3x3_precision.hpp" 9 | -------------------------------------------------------------------------------- /glm/mat3x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat3x4.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double3x4.hpp" 6 | #include "./ext/matrix_double3x4_precision.hpp" 7 | #include "./ext/matrix_float3x4.hpp" 8 | #include "./ext/matrix_float3x4_precision.hpp" 9 | -------------------------------------------------------------------------------- /glm/mat4x2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat4x2.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double4x2.hpp" 6 | #include "./ext/matrix_double4x2_precision.hpp" 7 | #include "./ext/matrix_float4x2.hpp" 8 | #include "./ext/matrix_float4x2_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/mat4x3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat4x3.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double4x3.hpp" 6 | #include "./ext/matrix_double4x3_precision.hpp" 7 | #include "./ext/matrix_float4x3.hpp" 8 | #include "./ext/matrix_float4x3_precision.hpp" 9 | -------------------------------------------------------------------------------- /glm/mat4x4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/mat4x4.hpp 3 | 4 | #pragma once 5 | #include "./ext/matrix_double4x4.hpp" 6 | #include "./ext/matrix_double4x4_precision.hpp" 7 | #include "./ext/matrix_float4x4.hpp" 8 | #include "./ext/matrix_float4x4_precision.hpp" 9 | 10 | -------------------------------------------------------------------------------- /glm/simd/exponential.h: -------------------------------------------------------------------------------- 1 | /// @ref simd 2 | /// @file glm/simd/experimental.h 3 | 4 | #pragma once 5 | 6 | #include "platform.h" 7 | 8 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 9 | 10 | GLM_FUNC_QUALIFIER glm_f32vec4 glm_vec1_sqrt_lowp(glm_f32vec4 x) 11 | { 12 | return _mm_mul_ss(_mm_rsqrt_ss(x), x); 13 | } 14 | 15 | GLM_FUNC_QUALIFIER glm_f32vec4 glm_vec4_sqrt_lowp(glm_f32vec4 x) 16 | { 17 | return _mm_mul_ps(_mm_rsqrt_ps(x), x); 18 | } 19 | 20 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 21 | -------------------------------------------------------------------------------- /glm/simd/packing.h: -------------------------------------------------------------------------------- 1 | /// @ref simd 2 | /// @file glm/simd/packing.h 3 | 4 | #pragma once 5 | 6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 7 | 8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 9 | -------------------------------------------------------------------------------- /glm/simd/trigonometric.h: -------------------------------------------------------------------------------- 1 | /// @ref simd 2 | /// @file glm/simd/trigonometric.h 3 | 4 | #pragma once 5 | 6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 7 | 8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 9 | 10 | -------------------------------------------------------------------------------- /glm/simd/vector_relational.h: -------------------------------------------------------------------------------- 1 | /// @ref simd 2 | /// @file glm/simd/vector_relational.h 3 | 4 | #pragma once 5 | 6 | #if GLM_ARCH & GLM_ARCH_SSE2_BIT 7 | 8 | #endif//GLM_ARCH & GLM_ARCH_SSE2_BIT 9 | -------------------------------------------------------------------------------- /glm/vec2.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/vec2.hpp 3 | 4 | #pragma once 5 | #include "./ext/vector_bool2.hpp" 6 | #include "./ext/vector_bool2_precision.hpp" 7 | #include "./ext/vector_float2.hpp" 8 | #include "./ext/vector_float2_precision.hpp" 9 | #include "./ext/vector_double2.hpp" 10 | #include "./ext/vector_double2_precision.hpp" 11 | #include "./ext/vector_int2.hpp" 12 | #include "./ext/vector_int2_sized.hpp" 13 | #include "./ext/vector_uint2.hpp" 14 | #include "./ext/vector_uint2_sized.hpp" 15 | -------------------------------------------------------------------------------- /glm/vec3.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/vec3.hpp 3 | 4 | #pragma once 5 | #include "./ext/vector_bool3.hpp" 6 | #include "./ext/vector_bool3_precision.hpp" 7 | #include "./ext/vector_float3.hpp" 8 | #include "./ext/vector_float3_precision.hpp" 9 | #include "./ext/vector_double3.hpp" 10 | #include "./ext/vector_double3_precision.hpp" 11 | #include "./ext/vector_int3.hpp" 12 | #include "./ext/vector_int3_sized.hpp" 13 | #include "./ext/vector_uint3.hpp" 14 | #include "./ext/vector_uint3_sized.hpp" 15 | -------------------------------------------------------------------------------- /glm/vec4.hpp: -------------------------------------------------------------------------------- 1 | /// @ref core 2 | /// @file glm/vec4.hpp 3 | 4 | #pragma once 5 | #include "./ext/vector_bool4.hpp" 6 | #include "./ext/vector_bool4_precision.hpp" 7 | #include "./ext/vector_float4.hpp" 8 | #include "./ext/vector_float4_precision.hpp" 9 | #include "./ext/vector_double4.hpp" 10 | #include "./ext/vector_double4_precision.hpp" 11 | #include "./ext/vector_int4.hpp" 12 | #include "./ext/vector_int4_sized.hpp" 13 | #include "./ext/vector_uint4.hpp" 14 | #include "./ext/vector_uint4_sized.hpp" 15 | 16 | -------------------------------------------------------------------------------- /test/bug/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | glmCreateTestGTC(bug_ms_vec_static) 2 | -------------------------------------------------------------------------------- /test/bug/bug_ms_vec_static.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_CONFIG_ANONYMOUS_STRUCT == GLM_ENABLE 4 | struct vec2; 5 | 6 | struct swizzleStruct 7 | { 8 | char _buffer[1]; 9 | }; 10 | 11 | struct vec2 12 | { 13 | GLM_CONSTEXPR vec2() : 14 | x(0), y(0) 15 | {} 16 | 17 | #if defined(_MSC_VER) 18 | # pragma warning(push) 19 | # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union 20 | #endif 21 | #if GLM_COMPILER & GLM_COMPILER_CLANG 22 | # pragma clang diagnostic push 23 | # pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 24 | # pragma clang diagnostic ignored "-Wnested-anon-types" 25 | #endif 26 | 27 | union 28 | { 29 | struct { float x, y; }; 30 | struct { swizzleStruct xx; }; 31 | }; 32 | 33 | #if GLM_COMPILER & GLM_COMPILER_CLANG 34 | # pragma clang diagnostic pop 35 | #endif 36 | #if defined(_MSC_VER) 37 | # pragma warning(pop) 38 | #endif 39 | }; 40 | #endif 41 | 42 | // Visual C++ has a bug generating the error: fatal error C1001: An internal error has occurred in the compiler. 43 | // vec2 Bar; 44 | 45 | int main() 46 | { 47 | return 0; 48 | } 49 | -------------------------------------------------------------------------------- /test/cmake/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.6 FATAL_ERROR) 2 | cmake_policy(VERSION 3.6) 3 | project(test_find_glm) 4 | 5 | find_package(glm REQUIRED) 6 | 7 | add_executable(test_find_glm test_find_glm.cpp) 8 | target_link_libraries(test_find_glm glm::glm) 9 | 10 | -------------------------------------------------------------------------------- /test/cmake/test_find_glm.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | glm::mat4 camera(float Translate, glm::vec2 const& Rotate) 6 | { 7 | glm::mat4 Projection = glm::perspective(glm::pi() * 0.25f, 4.0f / 3.0f, 0.1f, 100.f); 8 | glm::mat4 View = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate)); 9 | View = glm::rotate(View, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f)); 10 | View = glm::rotate(View, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f)); 11 | glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f)); 12 | return Projection * View * Model; 13 | } 14 | 15 | int main() 16 | { 17 | const glm::mat4 m = camera(1.f, glm::vec2(1.f, 0.5f)); 18 | std::cout << "matrix diagonal: " << m[0][0] << ", " 19 | << m[1][1] << ", " << m[2][2] << ", " << m[3][3] << "\n"; 20 | return 0; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /test/core/core_force_aligned_gentypes.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main() 5 | { 6 | int Error = 0; 7 | 8 | return Error; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /test/core/core_force_arch_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_ARCH_UNKNOWN 2 | # define GLM_FORCE_ARCH_UNKNOWN 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_force_compiler_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_COMPILER_UNKNOWN 2 | # define GLM_FORCE_COMPILER_UNKNOWN 3 | #endif 4 | 5 | #if defined(__clang__) 6 | # pragma clang diagnostic push 7 | # pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 8 | # pragma clang diagnostic ignored "-Wnested-anon-types" 9 | # pragma clang diagnostic ignored "-Wsign-conversion" 10 | # pragma clang diagnostic ignored "-Wpadded" 11 | # pragma clang diagnostic ignored "-Wc++11-long-long" 12 | #elif defined(__GNUC__) 13 | # pragma GCC diagnostic push 14 | # pragma GCC diagnostic ignored "-Wpedantic" 15 | #elif defined(_MSC_VER) 16 | # pragma warning(push) 17 | # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union 18 | # pragma warning(disable: 4324) // structure was padded due to alignment specifier 19 | #endif 20 | 21 | #include 22 | #include 23 | 24 | #if defined(__clang__) 25 | # pragma clang diagnostic pop 26 | #elif defined(__GNUC__) 27 | # pragma GCC diagnostic pop 28 | #elif defined(_MSC_VER) 29 | # pragma warning(pop) 30 | #endif 31 | 32 | int main() 33 | { 34 | int Error = 0; 35 | 36 | return Error; 37 | } 38 | 39 | -------------------------------------------------------------------------------- /test/core/core_force_cxx03.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_CXX03 2 | # define GLM_FORCE_CXX03 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_force_cxx98.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_CXX98 2 | # define GLM_FORCE_CXX98 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_force_cxx_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_CXX_UNKNOWN 2 | # define GLM_FORCE_CXX_UNKNOWN 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_force_depth_zero_to_one.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_DEPTH_ZERO_TO_ONE 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | return Error; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/core/core_force_explicit_ctor.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_EXPLICIT_CTOR 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | glm::ivec4 B(1); 11 | Error += B == glm::ivec4(1) ? 0 : 1; 12 | 13 | //glm::vec4 A = B; 14 | 15 | return Error; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /test/core/core_force_inline.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_INLINE 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | return Error; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/core/core_force_left_handed.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_LEFT_HANDED 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | return Error; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/core/core_force_platform_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_PLATFORM_UNKNOWN 2 | # define GLM_FORCE_PLATFORM_UNKNOWN 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_force_quat_wxyz.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_QUAT_DATA_WXYZ 2 | #define GLM_FORCE_INLINE 3 | 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | int Error = 0; 10 | 11 | return Error; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /test/core/core_force_quat_xyzw.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_QUAT_DATA_XYZW 2 | #define GLM_FORCE_INLINE 3 | 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | int Error = 0; 10 | 11 | return Error; 12 | } 13 | 14 | -------------------------------------------------------------------------------- /test/core/core_force_size_t_length.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_SIZE_T_LENGTH 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | return Error; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/core/core_force_unrestricted_gentype.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_UNRESTRICTED_GENTYPE 2 | 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | return Error; 11 | } 12 | 13 | -------------------------------------------------------------------------------- /test/core/core_force_xyzw_only.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_XYZW_ONLY 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | { 15 | glm::ivec1 A(1); 16 | Error += A.x == 1 ? 0 : 1; 17 | } 18 | 19 | { 20 | glm::ivec2 A(1, 2); 21 | Error += A.x == 1 ? 0 : 1; 22 | Error += A.y == 2 ? 0 : 1; 23 | } 24 | 25 | { 26 | glm::ivec3 A(1, 2, 3); 27 | Error += A.x == 1 ? 0 : 1; 28 | Error += A.y == 2 ? 0 : 1; 29 | Error += A.z == 3 ? 0 : 1; 30 | } 31 | 32 | { 33 | glm::ivec4 A(1, 2, 3, 4); 34 | Error += A.x == 1 ? 0 : 1; 35 | Error += A.y == 2 ? 0 : 1; 36 | Error += A.z == 3 ? 0 : 1; 37 | Error += A.w == 4 ? 0 : 1; 38 | } 39 | 40 | return Error; 41 | } 42 | 43 | static int test_constexpr() 44 | { 45 | int Error = 0; 46 | 47 | return Error; 48 | } 49 | 50 | int main() 51 | { 52 | int Error = 0; 53 | 54 | Error += test_comp(); 55 | Error += test_constexpr(); 56 | 57 | return Error; 58 | } 59 | -------------------------------------------------------------------------------- /test/core/core_func_noise.cpp: -------------------------------------------------------------------------------- 1 | int main() 2 | { 3 | int Error = 0; 4 | 5 | return Error; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /test/core/core_func_trigonometric.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() 4 | { 5 | int Error = 0; 6 | 7 | 8 | return Error; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /test/core/core_setup_force_cxx03.cpp: -------------------------------------------------------------------------------- 1 | #ifdef GLM_FORCE_CXX_UNKNOWN 2 | #undef GLM_FORCE_CXX_UNKNOWN 3 | #endif 4 | #ifdef GLM_FORCE_CXX20 5 | #undef GLM_FORCE_CXX20 6 | #endif 7 | #ifdef GLM_FORCE_CXX17 8 | #undef GLM_FORCE_CXX17 9 | #endif 10 | #ifdef GLM_FORCE_CXX14 11 | #undef GLM_FORCE_CXX14 12 | #endif 13 | #ifdef GLM_FORCE_CXX11 14 | #undef GLM_FORCE_CXX11 15 | #endif 16 | #ifdef GLM_FORCE_CXX03 17 | #undef GLM_FORCE_CXX03 18 | #endif 19 | #ifdef GLM_FORCE_CXX98 20 | #undef GLM_FORCE_CXX98 21 | #endif 22 | 23 | #define GLM_FORCE_CXX03 24 | 25 | #include 26 | #include 27 | 28 | int main() 29 | { 30 | int Error = 0; 31 | 32 | return Error; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /test/core/core_setup_force_cxx98.cpp: -------------------------------------------------------------------------------- 1 | #ifdef GLM_FORCE_CXX_UNKNOWN 2 | #undef GLM_FORCE_CXX_UNKNOWN 3 | #endif 4 | #ifdef GLM_FORCE_CXX20 5 | #undef GLM_FORCE_CXX20 6 | #endif 7 | #ifdef GLM_FORCE_CXX17 8 | #undef GLM_FORCE_CXX17 9 | #endif 10 | #ifdef GLM_FORCE_CXX14 11 | #undef GLM_FORCE_CXX14 12 | #endif 13 | #ifdef GLM_FORCE_CXX11 14 | #undef GLM_FORCE_CXX11 15 | #endif 16 | #ifdef GLM_FORCE_CXX03 17 | #undef GLM_FORCE_CXX03 18 | #endif 19 | #ifdef GLM_FORCE_CXX98 20 | #undef GLM_FORCE_CXX98 21 | #endif 22 | 23 | #define GLM_FORCE_CXX98 24 | 25 | #include 26 | #include 27 | 28 | int main() 29 | { 30 | int Error = 0; 31 | 32 | return Error; 33 | } 34 | -------------------------------------------------------------------------------- /test/core/core_setup_force_cxx_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_CXX_UNKNOWN 2 | # define GLM_FORCE_CXX_UNKNOWN 3 | #endif 4 | 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | 15 | -------------------------------------------------------------------------------- /test/core/core_setup_force_size_t_length.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_FORCE_SIZE_T_LENGTH 2 | #include 3 | #include 4 | 5 | template 6 | genType add(genType const& a, genType const& b) 7 | { 8 | genType result(0); 9 | for(glm::length_t i = 0; i < a.length(); ++i) 10 | result[i] = a[i] + b[i]; 11 | return result; 12 | } 13 | 14 | int main() 15 | { 16 | int Error = 0; 17 | 18 | glm::ivec4 v(1); 19 | Error += add(v, v) == glm::ivec4(2) ? 0 : 1; 20 | 21 | return Error; 22 | } 23 | -------------------------------------------------------------------------------- /test/core/core_setup_platform_unknown.cpp: -------------------------------------------------------------------------------- 1 | #ifndef GLM_FORCE_PLATFORM_UNKNOWN 2 | # define GLM_FORCE_PLATFORM_UNKNOWN 3 | #endif 4 | #ifndef GLM_FORCE_COMPILER_UNKNOWN 5 | # define GLM_FORCE_COMPILER_UNKNOWN 6 | #endif 7 | #ifndef GLM_FORCE_ARCH_UNKNOWN 8 | # define GLM_FORCE_ARCH_UNKNOWN 9 | #endif 10 | #ifndef GLM_FORCE_CXX_UNKNOWN 11 | # define GLM_FORCE_CXX_UNKNOWN 12 | #endif 13 | 14 | #if defined(__clang__) 15 | # pragma clang diagnostic push 16 | # pragma clang diagnostic ignored "-Wgnu-anonymous-struct" 17 | # pragma clang diagnostic ignored "-Wnested-anon-types" 18 | # pragma clang diagnostic ignored "-Wsign-conversion" 19 | # pragma clang diagnostic ignored "-Wpadded" 20 | # pragma clang diagnostic ignored "-Wc++11-long-long" 21 | #elif defined(__GNUC__) 22 | # pragma GCC diagnostic push 23 | # pragma GCC diagnostic ignored "-Wpedantic" 24 | #elif defined(_MSC_VER) 25 | # pragma warning(push) 26 | # pragma warning(disable: 4201) // nonstandard extension used : nameless struct/union 27 | #endif 28 | 29 | #include 30 | #include 31 | 32 | #if defined(__clang__) 33 | # pragma clang diagnostic pop 34 | #elif defined(__GNUC__) 35 | # pragma GCC diagnostic pop 36 | #elif defined(_MSC_VER) 37 | # pragma warning(pop) 38 | #endif 39 | 40 | int main() 41 | { 42 | int Error = 0; 43 | 44 | return Error; 45 | } 46 | -------------------------------------------------------------------------------- /test/core/core_type_int.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | static int test_bit_operator() 5 | { 6 | int Error = 0; 7 | 8 | glm::ivec4 const a(1); 9 | glm::ivec4 const b = ~a; 10 | Error += glm::all(glm::equal(b, glm::ivec4(-2))) ? 0 : 1; 11 | 12 | glm::int32 const c(1); 13 | glm::int32 const d = ~c; 14 | Error += d == -2 ? 0 : 1; 15 | 16 | return Error; 17 | } 18 | 19 | int main() 20 | { 21 | int Error = 0; 22 | 23 | Error += test_bit_operator(); 24 | 25 | return Error; 26 | } 27 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_clip_space.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int2x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat2x2) == 4, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat2x2) == 8, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat2x2) == 16, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat2x2) == 32, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat2x2) < sizeof(glm::i16mat2x2) ? 0 : 1; 15 | Error += sizeof(glm::i16mat2x2) < sizeof(glm::i32mat2x2) ? 0 : 1; 16 | Error += sizeof(glm::i32mat2x2) < sizeof(glm::i64mat2x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int2x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat2x3) == 6, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat2x3) == 12, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat2x3) == 24, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat2x3) == 48, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat2x3) < sizeof(glm::i16mat2x3) ? 0 : 1; 15 | Error += sizeof(glm::i16mat2x3) < sizeof(glm::i32mat2x3) ? 0 : 1; 16 | Error += sizeof(glm::i32mat2x3) < sizeof(glm::i64mat2x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int2x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat2x4) == 8, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat2x4) == 16, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat2x4) == 32, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat2x4) == 64, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat2x4) < sizeof(glm::i16mat2x4) ? 0 : 1; 15 | Error += sizeof(glm::i16mat2x4) < sizeof(glm::i32mat2x4) ? 0 : 1; 16 | Error += sizeof(glm::i32mat2x4) < sizeof(glm::i64mat2x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int3x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat3x2) == 6, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat3x2) == 12, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat3x2) == 24, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat3x2) == 48, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat3x2) < sizeof(glm::i16mat3x2) ? 0 : 1; 15 | Error += sizeof(glm::i16mat3x2) < sizeof(glm::i32mat3x2) ? 0 : 1; 16 | Error += sizeof(glm::i32mat3x2) < sizeof(glm::i64mat3x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int3x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat3x3) == 9, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat3x3) == 18, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat3x3) == 36, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat3x3) == 72, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat3x3) < sizeof(glm::i16mat3x3) ? 0 : 1; 15 | Error += sizeof(glm::i16mat3x3) < sizeof(glm::i32mat3x3) ? 0 : 1; 16 | Error += sizeof(glm::i32mat3x3) < sizeof(glm::i64mat3x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int3x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat3x4) == 12, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat3x4) == 24, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat3x4) == 48, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat3x4) == 96, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat3x4) < sizeof(glm::i16mat3x4) ? 0 : 1; 15 | Error += sizeof(glm::i16mat3x4) < sizeof(glm::i32mat3x4) ? 0 : 1; 16 | Error += sizeof(glm::i32mat3x4) < sizeof(glm::i64mat3x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int4x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat4x2) == 8, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat4x2) == 16, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat4x2) == 32, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat4x2) == 64, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat4x2) < sizeof(glm::i16mat4x2) ? 0 : 1; 15 | Error += sizeof(glm::i16mat4x2) < sizeof(glm::i32mat4x2) ? 0 : 1; 16 | Error += sizeof(glm::i32mat4x2) < sizeof(glm::i64mat4x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int4x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat4x3) == 12, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat4x3) == 24, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat4x3) == 48, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat4x3) == 96, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat4x3) < sizeof(glm::i16mat4x3) ? 0 : 1; 15 | Error += sizeof(glm::i16mat4x3) < sizeof(glm::i32mat4x3) ? 0 : 1; 16 | Error += sizeof(glm::i32mat4x3) < sizeof(glm::i64mat4x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_int4x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8mat4x4) == 16, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16mat4x4) == 32, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32mat4x4) == 64, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64mat4x4) == 128, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8mat4x4) < sizeof(glm::i16mat4x4) ? 0 : 1; 15 | Error += sizeof(glm::i16mat4x4) < sizeof(glm::i32mat4x4) ? 0 : 1; 16 | Error += sizeof(glm::i32mat4x4) < sizeof(glm::i64mat4x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_projection.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | int Error = 0; 11 | 12 | return Error; 13 | } 14 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint2x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat2x2) == 4, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat2x2) == 8, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat2x2) == 16, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat2x2) == 32, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat2x2) < sizeof(glm::u16mat2x2) ? 0 : 1; 15 | Error += sizeof(glm::u16mat2x2) < sizeof(glm::u32mat2x2) ? 0 : 1; 16 | Error += sizeof(glm::u32mat2x2) < sizeof(glm::u64mat2x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint2x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat2x3) == 6, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat2x3) == 12, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat2x3) == 24, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat2x3) == 48, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat2x3) < sizeof(glm::u16mat2x3) ? 0 : 1; 15 | Error += sizeof(glm::u16mat2x3) < sizeof(glm::u32mat2x3) ? 0 : 1; 16 | Error += sizeof(glm::u32mat2x3) < sizeof(glm::u64mat2x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint2x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat2x4) == 8, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat2x4) == 16, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat2x4) == 32, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat2x4) == 64, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat2x4) < sizeof(glm::u16mat2x4) ? 0 : 1; 15 | Error += sizeof(glm::u16mat2x4) < sizeof(glm::u32mat2x4) ? 0 : 1; 16 | Error += sizeof(glm::u32mat2x4) < sizeof(glm::u64mat2x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint3x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat3x2) == 6, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat3x2) == 12, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat3x2) == 24, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat3x2) == 48, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat3x2) < sizeof(glm::u16mat3x2) ? 0 : 1; 15 | Error += sizeof(glm::u16mat3x2) < sizeof(glm::u32mat3x2) ? 0 : 1; 16 | Error += sizeof(glm::u32mat3x2) < sizeof(glm::u64mat3x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint3x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat3x3) == 9, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat3x3) == 18, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat3x3) == 36, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat3x3) == 72, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat3x3) < sizeof(glm::u16mat3x3) ? 0 : 1; 15 | Error += sizeof(glm::u16mat3x3) < sizeof(glm::u32mat3x3) ? 0 : 1; 16 | Error += sizeof(glm::u32mat3x3) < sizeof(glm::u64mat3x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint3x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat3x4) == 12, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat3x4) == 24, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat3x4) == 48, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat3x4) == 96, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat3x4) < sizeof(glm::u16mat3x4) ? 0 : 1; 15 | Error += sizeof(glm::u16mat3x4) < sizeof(glm::u32mat3x4) ? 0 : 1; 16 | Error += sizeof(glm::u32mat3x4) < sizeof(glm::u64mat3x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint4x2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat4x2) == 8, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat4x2) == 16, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat4x2) == 32, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat4x2) == 64, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat4x2) < sizeof(glm::u16mat4x2) ? 0 : 1; 15 | Error += sizeof(glm::u16mat4x2) < sizeof(glm::u32mat4x2) ? 0 : 1; 16 | Error += sizeof(glm::u32mat4x2) < sizeof(glm::u64mat4x2) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint4x3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat4x3) == 12, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat4x3) == 24, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat4x3) == 48, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat4x3) == 96, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat4x3) < sizeof(glm::u16mat4x3) ? 0 : 1; 15 | Error += sizeof(glm::u16mat4x3) < sizeof(glm::u32mat4x3) ? 0 : 1; 16 | Error += sizeof(glm::u32mat4x3) < sizeof(glm::u64mat4x3) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_matrix_uint4x4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8mat4x4) == 16, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16mat4x4) == 32, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32mat4x4) == 64, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64mat4x4) == 128, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_comp() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8mat4x4) < sizeof(glm::u16mat4x4) ? 0 : 1; 15 | Error += sizeof(glm::u16mat4x4) < sizeof(glm::u32mat4x4) ? 0 : 1; 16 | Error += sizeof(glm::u32mat4x4) < sizeof(glm::u64mat4x4) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | 21 | int main() 22 | { 23 | int Error = 0; 24 | 25 | Error += test_comp(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_quaternion_trigonometric.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | float const Epsilon = 0.001f; 7 | 8 | static int test_angle() 9 | { 10 | int Error = 0; 11 | 12 | { 13 | glm::quat const Q = glm::quat(glm::vec3(1, 0, 0), glm::vec3(0, 1, 0)); 14 | float const A = glm::degrees(glm::angle(Q)); 15 | Error += glm::equal(A, 90.0f, Epsilon) ? 0 : 1; 16 | } 17 | 18 | { 19 | glm::quat const Q = glm::quat(glm::vec3(0, 1, 0), glm::vec3(1, 0, 0)); 20 | float const A = glm::degrees(glm::angle(Q)); 21 | Error += glm::equal(A, 90.0f, Epsilon) ? 0 : 1; 22 | } 23 | 24 | { 25 | glm::quat const Q = glm::angleAxis(glm::two_pi() - 1.0f, glm::vec3(1, 0, 0)); 26 | float const A = glm::angle(Q); 27 | Error += glm::equal(A, 1.0f, Epsilon) ? 1 : 0; 28 | } 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_angle(); 38 | 39 | return Error; 40 | } 41 | -------------------------------------------------------------------------------- /test/ext/ext_scalar_constants.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | template 4 | static int test_epsilon() 5 | { 6 | int Error = 0; 7 | 8 | valType const Test = glm::epsilon(); 9 | Error += Test > static_cast(0) ? 0 : 1; 10 | 11 | return Error; 12 | } 13 | 14 | template 15 | static int test_pi() 16 | { 17 | int Error = 0; 18 | 19 | valType const Test = glm::pi(); 20 | Error += Test > static_cast(3.14) ? 0 : 1; 21 | Error += Test < static_cast(3.15) ? 0 : 1; 22 | 23 | return Error; 24 | } 25 | 26 | int main() 27 | { 28 | int Error = 0; 29 | 30 | Error += test_epsilon(); 31 | Error += test_epsilon(); 32 | Error += test_pi(); 33 | Error += test_pi(); 34 | 35 | return Error; 36 | } 37 | -------------------------------------------------------------------------------- /test/ext/ext_scalar_packing.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int test_packUnorm() 5 | { 6 | int Error = 0; 7 | 8 | 9 | return Error; 10 | } 11 | 12 | int test_packSnorm() 13 | { 14 | int Error = 0; 15 | 16 | 17 | return Error; 18 | } 19 | 20 | int main() 21 | { 22 | int Error = 0; 23 | 24 | Error += test_packUnorm(); 25 | Error += test_packSnorm(); 26 | 27 | return Error; 28 | } 29 | -------------------------------------------------------------------------------- /test/ext/ext_vector_int1_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8vec1) == 1, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16vec1) == 2, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32vec1) == 4, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64vec1) == 8, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8vec1) == 1 ? 0 : 1; 15 | Error += sizeof(glm::i16vec1) == 2 ? 0 : 1; 16 | Error += sizeof(glm::i32vec1) == 4 ? 0 : 1; 17 | Error += sizeof(glm::i64vec1) == 8 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::i8vec1) < sizeof(glm::i16vec1) ? 0 : 1; 27 | Error += sizeof(glm::i16vec1) < sizeof(glm::i32vec1) ? 0 : 1; 28 | Error += sizeof(glm::i32vec1) < sizeof(glm::i64vec1) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_int2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8vec2) == 2, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16vec2) == 4, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32vec2) == 8, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64vec2) == 16, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8vec2) == 2 ? 0 : 1; 15 | Error += sizeof(glm::i16vec2) == 4 ? 0 : 1; 16 | Error += sizeof(glm::i32vec2) == 8 ? 0 : 1; 17 | Error += sizeof(glm::i64vec2) == 16 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::i8vec2) < sizeof(glm::i16vec2) ? 0 : 1; 27 | Error += sizeof(glm::i16vec2) < sizeof(glm::i32vec2) ? 0 : 1; 28 | Error += sizeof(glm::i32vec2) < sizeof(glm::i64vec2) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_int3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8vec3) == 3, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16vec3) == 6, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32vec3) == 12, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64vec3) == 24, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8vec3) == 3 ? 0 : 1; 15 | Error += sizeof(glm::i16vec3) == 6 ? 0 : 1; 16 | Error += sizeof(glm::i32vec3) == 12 ? 0 : 1; 17 | Error += sizeof(glm::i64vec3) == 24 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::i8vec3) < sizeof(glm::i16vec3) ? 0 : 1; 27 | Error += sizeof(glm::i16vec3) < sizeof(glm::i32vec3) ? 0 : 1; 28 | Error += sizeof(glm::i32vec3) < sizeof(glm::i64vec3) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_int4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::i8vec4) == 4, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::i16vec4) == 8, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::i32vec4) == 16, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::i64vec4) == 32, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::i8vec4) == 4 ? 0 : 1; 15 | Error += sizeof(glm::i16vec4) == 8 ? 0 : 1; 16 | Error += sizeof(glm::i32vec4) == 16 ? 0 : 1; 17 | Error += sizeof(glm::i64vec4) == 32 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::i8vec4) < sizeof(glm::i16vec4) ? 0 : 1; 27 | Error += sizeof(glm::i16vec4) < sizeof(glm::i32vec4) ? 0 : 1; 28 | Error += sizeof(glm::i32vec4) < sizeof(glm::i64vec4) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_uint1_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8vec1) == 1, "uint8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16vec1) == 2, "uint16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32vec1) == 4, "uint32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64vec1) == 8, "uint64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8vec1) == 1 ? 0 : 1; 15 | Error += sizeof(glm::u16vec1) == 2 ? 0 : 1; 16 | Error += sizeof(glm::u32vec1) == 4 ? 0 : 1; 17 | Error += sizeof(glm::u64vec1) == 8 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::u8vec1) < sizeof(glm::u16vec1) ? 0 : 1; 27 | Error += sizeof(glm::u16vec1) < sizeof(glm::u32vec1) ? 0 : 1; 28 | Error += sizeof(glm::u32vec1) < sizeof(glm::u64vec1) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_uint2_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8vec2) == 2, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16vec2) == 4, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32vec2) == 8, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64vec2) == 16, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8vec2) == 2 ? 0 : 1; 15 | Error += sizeof(glm::u16vec2) == 4 ? 0 : 1; 16 | Error += sizeof(glm::u32vec2) == 8 ? 0 : 1; 17 | Error += sizeof(glm::u64vec2) == 16 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::u8vec2) < sizeof(glm::u16vec2) ? 0 : 1; 27 | Error += sizeof(glm::u16vec2) < sizeof(glm::u32vec2) ? 0 : 1; 28 | Error += sizeof(glm::u32vec2) < sizeof(glm::u64vec2) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_uint3_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8vec3) == 3, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16vec3) == 6, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32vec3) == 12, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64vec3) == 24, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8vec3) == 3 ? 0 : 1; 15 | Error += sizeof(glm::u16vec3) == 6 ? 0 : 1; 16 | Error += sizeof(glm::u32vec3) == 12 ? 0 : 1; 17 | Error += sizeof(glm::u64vec3) == 24 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::u8vec3) < sizeof(glm::u16vec3) ? 0 : 1; 27 | Error += sizeof(glm::u16vec3) < sizeof(glm::u32vec3) ? 0 : 1; 28 | Error += sizeof(glm::u32vec3) < sizeof(glm::u64vec3) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/ext/ext_vector_uint4_sized.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #if GLM_HAS_STATIC_ASSERT 4 | static_assert(sizeof(glm::u8vec4) == 4, "int8 size isn't 1 byte on this platform"); 5 | static_assert(sizeof(glm::u16vec4) == 8, "int16 size isn't 2 bytes on this platform"); 6 | static_assert(sizeof(glm::u32vec4) == 16, "int32 size isn't 4 bytes on this platform"); 7 | static_assert(sizeof(glm::u64vec4) == 32, "int64 size isn't 8 bytes on this platform"); 8 | #endif 9 | 10 | static int test_size() 11 | { 12 | int Error = 0; 13 | 14 | Error += sizeof(glm::u8vec4) == 4 ? 0 : 1; 15 | Error += sizeof(glm::u16vec4) == 8 ? 0 : 1; 16 | Error += sizeof(glm::u32vec4) == 16 ? 0 : 1; 17 | Error += sizeof(glm::u64vec4) == 32 ? 0 : 1; 18 | 19 | return Error; 20 | } 21 | 22 | static int test_comp() 23 | { 24 | int Error = 0; 25 | 26 | Error += sizeof(glm::u8vec4) < sizeof(glm::u16vec4) ? 0 : 1; 27 | Error += sizeof(glm::u16vec4) < sizeof(glm::u32vec4) ? 0 : 1; 28 | Error += sizeof(glm::u32vec4) < sizeof(glm::u64vec4) ? 0 : 1; 29 | 30 | return Error; 31 | } 32 | 33 | int main() 34 | { 35 | int Error = 0; 36 | 37 | Error += test_size(); 38 | Error += test_comp(); 39 | 40 | return Error; 41 | } 42 | -------------------------------------------------------------------------------- /test/glm.cppcheck: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /test/gtc/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | glmCreateTestGTC(gtc_bitfield) 2 | glmCreateTestGTC(gtc_color_space) 3 | glmCreateTestGTC(gtc_constants) 4 | glmCreateTestGTC(gtc_epsilon) 5 | glmCreateTestGTC(gtc_integer) 6 | glmCreateTestGTC(gtc_matrix_access) 7 | glmCreateTestGTC(gtc_matrix_integer) 8 | glmCreateTestGTC(gtc_matrix_inverse) 9 | glmCreateTestGTC(gtc_matrix_transform) 10 | glmCreateTestGTC(gtc_noise) 11 | glmCreateTestGTC(gtc_packing) 12 | glmCreateTestGTC(gtc_quaternion) 13 | glmCreateTestGTC(gtc_random) 14 | glmCreateTestGTC(gtc_round) 15 | glmCreateTestGTC(gtc_reciprocal) 16 | glmCreateTestGTC(gtc_type_aligned) 17 | glmCreateTestGTC(gtc_type_precision) 18 | glmCreateTestGTC(gtc_type_ptr) 19 | glmCreateTestGTC(gtc_ulp) 20 | glmCreateTestGTC(gtc_vec1) 21 | -------------------------------------------------------------------------------- /test/gtc/gtc_constants.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | static int test_epsilon() 4 | { 5 | int Error = 0; 6 | 7 | { 8 | float Test = glm::epsilon(); 9 | Error += Test > 0.0f ? 0 : 1; 10 | } 11 | 12 | { 13 | double Test = glm::epsilon(); 14 | Error += Test > 0.0 ? 0 : 1; 15 | } 16 | 17 | return Error; 18 | } 19 | 20 | int main() 21 | { 22 | int Error(0); 23 | 24 | //float MinHalf = 0.0f; 25 | //while (glm::half(MinHalf) == glm::half(0.0f)) 26 | // MinHalf += std::numeric_limits::epsilon(); 27 | Error += test_epsilon(); 28 | 29 | return Error; 30 | } 31 | -------------------------------------------------------------------------------- /test/gtc/gtc_matrix_integer.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() 4 | { 5 | int Error = 0; 6 | 7 | return Error; 8 | } 9 | -------------------------------------------------------------------------------- /test/gtc/gtc_matrix_inverse.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | static int test_affine() 5 | { 6 | int Error = 0; 7 | 8 | { 9 | glm::mat3 const M( 10 | 2.f, 0.f, 0.f, 11 | 0.f, 2.f, 0.f, 12 | 0.f, 0.f, 1.f); 13 | glm::mat3 const A = glm::affineInverse(M); 14 | glm::mat3 const I = glm::inverse(M); 15 | glm::mat3 const R = glm::affineInverse(A); 16 | 17 | for(glm::length_t i = 0; i < A.length(); ++i) 18 | { 19 | Error += glm::all(glm::epsilonEqual(M[i], R[i], 0.01f)) ? 0 : 1; 20 | Error += glm::all(glm::epsilonEqual(A[i], I[i], 0.01f)) ? 0 : 1; 21 | } 22 | } 23 | 24 | { 25 | glm::mat4 const M( 26 | 2.f, 0.f, 0.f, 0.f, 27 | 0.f, 2.f, 0.f, 0.f, 28 | 0.f, 0.f, 2.f, 0.f, 29 | 0.f, 0.f, 0.f, 1.f); 30 | glm::mat4 const A = glm::affineInverse(M); 31 | glm::mat4 const I = glm::inverse(M); 32 | glm::mat4 const R = glm::affineInverse(A); 33 | 34 | for(glm::length_t i = 0; i < A.length(); ++i) 35 | { 36 | Error += glm::all(glm::epsilonEqual(M[i], R[i], 0.01f)) ? 0 : 1; 37 | Error += glm::all(glm::epsilonEqual(A[i], I[i], 0.01f)) ? 0 : 1; 38 | } 39 | } 40 | 41 | return Error; 42 | } 43 | 44 | int main() 45 | { 46 | int Error = 0; 47 | 48 | Error += test_affine(); 49 | 50 | return Error; 51 | } 52 | -------------------------------------------------------------------------------- /test/gtc/gtc_reciprocal.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main() 5 | { 6 | return 0; 7 | } 8 | 9 | -------------------------------------------------------------------------------- /test/gtc/gtc_user_defined_types.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2010-09-16 5 | // Updated : 2011-05-27 6 | // Licence : This source is under MIT licence 7 | // File : test/gtc/type_ptr.cpp 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | #define GLM_FORCE_RADIANS 11 | #include 12 | 13 | int test_make_pointer_vec() 14 | { 15 | int Error = 0; 16 | 17 | glm::func(); 18 | //func(); 19 | 20 | return Error; 21 | } 22 | 23 | int main() 24 | { 25 | int Error = 0; 26 | 27 | Error += test_make_pointer_vec(); 28 | 29 | return Error; 30 | } 31 | -------------------------------------------------------------------------------- /test/gtc/gtc_vec1.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() 4 | { 5 | int Error = 0; 6 | 7 | return Error; 8 | } 9 | -------------------------------------------------------------------------------- /test/gtx/gtx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main() 4 | { 5 | int Error = 0; 6 | 7 | return Error; 8 | } 9 | -------------------------------------------------------------------------------- /test/gtx/gtx_associated_min_max.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | #include 4 | 5 | int main() 6 | { 7 | int Error(0); 8 | 9 | return Error; 10 | } 11 | -------------------------------------------------------------------------------- /test/gtx/gtx_closest_point.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_color_space.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define GLM_ENABLE_EXPERIMENTAL 4 | #include 5 | 6 | static int test_hsv() 7 | { 8 | int Error = 0; 9 | 10 | glm::vec3 colorHSV = glm::hsvColor(glm::vec3(1.0f, 0.5f, 0.0f)); 11 | glm::vec3 colorRGB = glm::rgbColor(colorHSV); 12 | 13 | Error += glm::all(glm::equal(colorRGB, glm::vec3(1.0f, 0.5f, 0.0f), glm::epsilon())) ? 0 : 1; 14 | 15 | return Error; 16 | } 17 | 18 | static int test_saturation() 19 | { 20 | int Error = 0; 21 | 22 | glm::vec4 Color = glm::saturation(1.0f, glm::vec4(1.0, 0.5, 0.0, 1.0)); 23 | Error += glm::all(glm::equal(Color, glm::vec4(1.0, 0.5, 0.0, 1.0), glm::epsilon())) ? 0 : 1; 24 | 25 | return Error; 26 | } 27 | 28 | int main() 29 | { 30 | int Error(0); 31 | 32 | Error += test_hsv(); 33 | Error += test_saturation(); 34 | 35 | return Error; 36 | } 37 | -------------------------------------------------------------------------------- /test/gtx/gtx_color_space_YCoCg.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #define GLM_ENABLE_EXPERIMENTAL 5 | #include 6 | 7 | int main() 8 | { 9 | int Error = 0; 10 | 11 | glm::vec3 colorYCoCg = glm::rgb2YCoCg(glm::vec3(1.0f, 0.5f, 0.0f)); 12 | glm::vec3 colorRGB1 = glm::YCoCg2rgb(colorYCoCg); 13 | 14 | Error += glm::all(glm::equal(colorRGB1, glm::vec3(1.0f, 0.5f, 0.0f), glm::epsilon())) ? 0 : 1; 15 | 16 | return Error; 17 | } 18 | -------------------------------------------------------------------------------- /test/gtx/gtx_compatibility.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | Error += glm::isfinite(1.0f) ? 0 : 1; 9 | Error += glm::isfinite(1.0) ? 0 : 1; 10 | Error += glm::isfinite(-1.0f) ? 0 : 1; 11 | Error += glm::isfinite(-1.0) ? 0 : 1; 12 | 13 | Error += glm::all(glm::isfinite(glm::vec4(1.0f))) ? 0 : 1; 14 | Error += glm::all(glm::isfinite(glm::dvec4(1.0))) ? 0 : 1; 15 | Error += glm::all(glm::isfinite(glm::vec4(-1.0f))) ? 0 : 1; 16 | Error += glm::all(glm::isfinite(glm::dvec4(-1.0))) ? 0 : 1; 17 | 18 | return Error; 19 | } 20 | -------------------------------------------------------------------------------- /test/gtx/gtx_extend.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_exterior_product.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int Error = 0; 9 | 10 | float const f = glm::cross(glm::vec2(1.0f, 1.0f), glm::vec2(1.0f, 1.0f)); 11 | Error += glm::epsilonEqual(f, 0.0f, 0.001f) ? 0 : 1; 12 | 13 | return Error; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /test/gtx/gtx_fast_exponential.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_functions.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | #include 4 | #include 5 | 6 | static int test_gauss_1d() 7 | { 8 | int Error = 0; 9 | 10 | std::vector Result(20); 11 | for(std::size_t i = 0, n = Result.size(); i < n; ++i) 12 | Result[i] = glm::gauss(static_cast(i) * 0.1f, 0.0f, 1.0f); 13 | 14 | return Error; 15 | } 16 | 17 | static int test_gauss_2d() 18 | { 19 | int Error = 0; 20 | 21 | std::vector Result(20); 22 | for(std::size_t i = 0, n = Result.size(); i < n; ++i) 23 | Result[i] = glm::gauss(glm::vec2(static_cast(i)) * 0.1f, glm::vec2(0.0f), glm::vec2(1.0f)); 24 | 25 | return Error; 26 | } 27 | 28 | int main() 29 | { 30 | int Error = 0; 31 | 32 | Error += test_gauss_1d(); 33 | Error += test_gauss_2d(); 34 | 35 | return Error; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /test/gtx/gtx_gradient_paint.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | static int test_radialGradient() 5 | { 6 | int Error = 0; 7 | 8 | float Gradient = glm::radialGradient(glm::vec2(0), 1.0f, glm::vec2(1), glm::vec2(0.5)); 9 | Error += Gradient != 0.0f ? 0 : 1; 10 | 11 | return Error; 12 | } 13 | 14 | static int test_linearGradient() 15 | { 16 | int Error = 0; 17 | 18 | float Gradient = glm::linearGradient(glm::vec2(0), glm::vec2(1), glm::vec2(0.5)); 19 | Error += Gradient != 0.0f ? 0 : 1; 20 | 21 | return Error; 22 | } 23 | 24 | int main() 25 | { 26 | int Error = 0; 27 | 28 | Error += test_radialGradient(); 29 | Error += test_linearGradient(); 30 | 31 | return Error; 32 | } 33 | 34 | 35 | -------------------------------------------------------------------------------- /test/gtx/gtx_handed_coordinate_space.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_int_10_10_10_2.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2013-10-25 5 | // Updated : 2013-10-25 6 | // Licence : This source is under MIT licence 7 | // File : test/gtx/associated_min_max.cpp 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | #include 11 | #include 12 | 13 | int main() 14 | { 15 | int Error(0); 16 | 17 | return Error; 18 | } 19 | -------------------------------------------------------------------------------- /test/gtx/gtx_matrix_cross_product.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_matrix_major_storage.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_matrix_transform_2d.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_mixed_product.cpp: -------------------------------------------------------------------------------- 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// 2 | // OpenGL Mathematics Copyright (c) 2005 - 2013 G-Truc Creation (www.g-truc.net) 3 | /////////////////////////////////////////////////////////////////////////////////////////////////// 4 | // Created : 2013-10-25 5 | // Updated : 2013-10-25 6 | // Licence : This source is under MIT licence 7 | // File : test/gtx/associated_min_max.cpp 8 | /////////////////////////////////////////////////////////////////////////////////////////////////// 9 | 10 | #include 11 | #include 12 | 13 | int main() 14 | { 15 | int Error(0); 16 | 17 | return Error; 18 | } 19 | -------------------------------------------------------------------------------- /test/gtx/gtx_normal.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_normalize_dot.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_number_precision.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_optimum_pow.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_orthonormalize.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_perpendicular.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_polar_coordinates.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_projection.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_rotate_normalized_axis.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error(0); 7 | 8 | return Error; 9 | } 10 | -------------------------------------------------------------------------------- /test/gtx/gtx_scalar_multiplication.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | #if GLM_HAS_TEMPLATE_ALIASES && !(GLM_COMPILER & GLM_COMPILER_GCC) 6 | 7 | #define GLM_ENABLE_EXPERIMENTAL 8 | #include 9 | 10 | int main() 11 | { 12 | int Error(0); 13 | glm::vec3 v(0.5, 3.1, -9.1); 14 | 15 | Error += glm::all(glm::equal(v, 1.0 * v, glm::epsilon())) ? 0 : 1; 16 | Error += glm::all(glm::equal(v, 1 * v, glm::epsilon())) ? 0 : 1; 17 | Error += glm::all(glm::equal(v, 1u * v, glm::epsilon())) ? 0 : 1; 18 | 19 | glm::mat3 m(1, 2, 3, 4, 5, 6, 7, 8, 9); 20 | glm::vec3 w = 0.5f * m * v; 21 | 22 | Error += glm::all(glm::equal((m*v)/2, w, glm::epsilon())) ? 0 : 1; 23 | Error += glm::all(glm::equal(m*(v/2), w, glm::epsilon())) ? 0 : 1; 24 | Error += glm::all(glm::equal((m/2)*v, w, glm::epsilon())) ? 0 : 1; 25 | Error += glm::all(glm::equal((0.5*m)*v, w, glm::epsilon())) ? 0 : 1; 26 | Error += glm::all(glm::equal(0.5*(m*v), w, glm::epsilon())) ? 0 : 1; 27 | 28 | return Error; 29 | } 30 | 31 | #else 32 | 33 | int main() 34 | { 35 | return 0; 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /test/gtx/gtx_texture.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define GLM_ENABLE_EXPERIMENTAL 4 | #include 5 | 6 | static int test_levels() 7 | { 8 | int Error = 0; 9 | 10 | int const Levels = glm::levels(glm::ivec2(3, 2)); 11 | Error += Levels == 2 ? 0 : 1; 12 | 13 | return Error; 14 | } 15 | 16 | int main() 17 | { 18 | int Error = 0; 19 | 20 | Error += test_levels(); 21 | 22 | return Error; 23 | } 24 | -------------------------------------------------------------------------------- /test/gtx/gtx_type_trait.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | #include 4 | 5 | int main() 6 | { 7 | int Error = 0; 8 | 9 | return Error; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /test/gtx/gtx_vec_swizzle.cpp: -------------------------------------------------------------------------------- 1 | #define GLM_ENABLE_EXPERIMENTAL 2 | #include 3 | 4 | int main() 5 | { 6 | int Error = 0; 7 | 8 | 9 | return Error; 10 | } 11 | 12 | -------------------------------------------------------------------------------- /test/perf/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | glmCreateTestGTC(perf_matrix_div) 2 | glmCreateTestGTC(perf_matrix_inverse) 3 | glmCreateTestGTC(perf_matrix_mul) 4 | glmCreateTestGTC(perf_matrix_mul_vector) 5 | glmCreateTestGTC(perf_matrix_transpose) 6 | glmCreateTestGTC(perf_vector_mul_matrix) 7 | -------------------------------------------------------------------------------- /util/autoexp.txt: -------------------------------------------------------------------------------- 1 | [Visualizer] 2 | 3 | glm::detail::tvec2<*>{ 4 | preview ( 5 | #(#($c.x,$c.y)) 6 | ) 7 | children ( 8 | #([x]: $c.x,[y]: $c.y) 9 | ) 10 | } 11 | 12 | glm::detail::tvec3<*>{ 13 | preview ( 14 | #($e.x,$e.y,$e.z) 15 | ) 16 | children ( 17 | #([x]: $e.x,[y]: $e.y,[z]: $e.z) 18 | ) 19 | } 20 | 21 | glm::detail::tvec4<*>{ 22 | preview ( 23 | #($c.x,$c.y,$c.z,$c.w) 24 | ) 25 | children ( 26 | #([x]: $e.x,[y]: $e.y,[z]: $e.z, #([w]: $e.w)) 27 | ) 28 | } 29 | --------------------------------------------------------------------------------