hbpencil01 commited on
Commit
bb5817e
·
verified ·
1 Parent(s): 1d2ce80

Remove stale HF code and temporary assets

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. model/garden/point_cloud/iteration_7000/point_cloud.ply +0 -3
  2. model/jelly/events.out.tfevents.1745983161.autodl-container-7a0047a67f-b56b57bd.764007.0 +0 -3
  3. model/jelly/point_cloud/iteration_5000/point_cloud.ply +0 -3
  4. model/watermelon/events.out.tfevents.1741704083.autodl-container-ea524596de-c52d2fbe.59520.0 +0 -3
  5. model/watermelon/point_cloud/iteration_30000/origin.ply +0 -3
  6. model/watermelon/point_cloud/iteration_30000/point_cloud_slice.ply +0 -3
  7. submodules/diff-gaussian-rasterization/.gitignore +0 -3
  8. submodules/diff-gaussian-rasterization/.gitmodules +0 -3
  9. submodules/diff-gaussian-rasterization/CMakeLists.txt +0 -36
  10. submodules/diff-gaussian-rasterization/LICENSE.md +0 -83
  11. submodules/diff-gaussian-rasterization/README.md +0 -19
  12. submodules/diff-gaussian-rasterization/cuda_rasterizer/auxiliary.h +0 -175
  13. submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu +0 -657
  14. submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.h +0 -65
  15. submodules/diff-gaussian-rasterization/cuda_rasterizer/config.h +0 -19
  16. submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu +0 -455
  17. submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.h +0 -66
  18. submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer.h +0 -88
  19. submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu +0 -434
  20. submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.h +0 -74
  21. submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/_C.cpython-39-x86_64-linux-gnu.so +0 -3
  22. submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py +0 -221
  23. submodules/diff-gaussian-rasterization/ext.cpp +0 -19
  24. submodules/diff-gaussian-rasterization/rasterize_points.cu +0 -217
  25. submodules/diff-gaussian-rasterization/rasterize_points.h +0 -67
  26. submodules/diff-gaussian-rasterization/setup.py +0 -34
  27. submodules/diff-gaussian-rasterization/third_party/glm/.appveyor.yml +0 -92
  28. submodules/diff-gaussian-rasterization/third_party/glm/.gitignore +0 -61
  29. submodules/diff-gaussian-rasterization/third_party/glm/.travis.yml +0 -388
  30. submodules/diff-gaussian-rasterization/third_party/glm/CMakeLists.txt +0 -45
  31. submodules/diff-gaussian-rasterization/third_party/glm/cmake/cmake_uninstall.cmake.in +0 -21
  32. submodules/diff-gaussian-rasterization/third_party/glm/copying.txt +0 -54
  33. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00001_source.html +0 -493
  34. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00002_source.html +0 -121
  35. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00003_source.html +0 -182
  36. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00004_source.html +0 -0
  37. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00005_source.html +0 -0
  38. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00006_source.html +0 -262
  39. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00007.html +0 -205
  40. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00007_source.html +0 -250
  41. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00008.html +0 -149
  42. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00008_source.html +0 -154
  43. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00009.html +0 -223
  44. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00009_source.html +0 -212
  45. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00010.html +0 -124
  46. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00010_source.html +0 -133
  47. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00011.html +0 -137
  48. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00011_source.html +0 -139
  49. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00012.html +0 -134
  50. submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00012_source.html +0 -136
model/garden/point_cloud/iteration_7000/point_cloud.ply DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:d972e3053a71b9cf15d29297f36e9abf883980ac7417b541c02964eee7cea670
3
- size 1087764748
 
 
 
 
model/jelly/events.out.tfevents.1745983161.autodl-container-7a0047a67f-b56b57bd.764007.0 DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:1bfd074d297367e1c89219bdc1ca839f0038951017584bde41366a552d4bb7af
3
- size 12565870
 
 
 
 
model/jelly/point_cloud/iteration_5000/point_cloud.ply DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:b0ef12f0b09981ac3cfccbfd3cc410c406b7159a8eb4229c4515405439d77141
3
- size 85049163
 
 
 
 
model/watermelon/events.out.tfevents.1741704083.autodl-container-ea524596de-c52d2fbe.59520.0 DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:14db2109b86c303e07648e70ce1ab774f8f0f022663ce06963628abcbc658b12
3
- size 11285516
 
 
 
 
model/watermelon/point_cloud/iteration_30000/origin.ply DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:fc5c4871b5f0b78714a5eafe4f174c3d874a29b541fb0afd9fff1a556d55c834
3
- size 342514332
 
 
 
 
model/watermelon/point_cloud/iteration_30000/point_cloud_slice.ply DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:0c164862534c0ea1f7dbc7c4db23b37f5b78bb36efacc9ecd861e1606a8f73ec
3
- size 19968754
 
 
 
 
submodules/diff-gaussian-rasterization/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- build/
2
- diff_gaussian_rasterization.egg-info/
3
- dist/
 
 
 
 
submodules/diff-gaussian-rasterization/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "third_party/glm"]
2
- path = third_party/glm
3
- url = https://github.com/g-truc/glm.git
 
 
 
 
submodules/diff-gaussian-rasterization/CMakeLists.txt DELETED
@@ -1,36 +0,0 @@
1
- #
2
- # Copyright (C) 2023, Inria
3
- # GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- # All rights reserved.
5
- #
6
- # This software is free for non-commercial, research and evaluation use
7
- # under the terms of the LICENSE.md file.
8
- #
9
- # For inquiries contact george.drettakis@inria.fr
10
- #
11
-
12
- cmake_minimum_required(VERSION 3.20)
13
-
14
- project(DiffRast LANGUAGES CUDA CXX)
15
-
16
- set(CMAKE_CXX_STANDARD 17)
17
- set(CMAKE_CXX_EXTENSIONS OFF)
18
- set(CMAKE_CUDA_STANDARD 17)
19
-
20
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
21
-
22
- add_library(CudaRasterizer
23
- cuda_rasterizer/backward.h
24
- cuda_rasterizer/backward.cu
25
- cuda_rasterizer/forward.h
26
- cuda_rasterizer/forward.cu
27
- cuda_rasterizer/auxiliary.h
28
- cuda_rasterizer/rasterizer_impl.cu
29
- cuda_rasterizer/rasterizer_impl.h
30
- cuda_rasterizer/rasterizer.h
31
- )
32
-
33
- set_target_properties(CudaRasterizer PROPERTIES CUDA_ARCHITECTURES "70;75;86")
34
-
35
- target_include_directories(CudaRasterizer PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/cuda_rasterizer)
36
- target_include_directories(CudaRasterizer PRIVATE third_party/glm ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/LICENSE.md DELETED
@@ -1,83 +0,0 @@
1
- Gaussian-Splatting License
2
- ===========================
3
-
4
- **Inria** and **the Max Planck Institut for Informatik (MPII)** hold all the ownership rights on the *Software* named **gaussian-splatting**.
5
- The *Software* is in the process of being registered with the Agence pour la Protection des
6
- Programmes (APP).
7
-
8
- The *Software* is still being developed by the *Licensor*.
9
-
10
- *Licensor*'s goal is to allow the research community to use, test and evaluate
11
- the *Software*.
12
-
13
- ## 1. Definitions
14
-
15
- *Licensee* means any person or entity that uses the *Software* and distributes
16
- its *Work*.
17
-
18
- *Licensor* means the owners of the *Software*, i.e Inria and MPII
19
-
20
- *Software* means the original work of authorship made available under this
21
- License ie gaussian-splatting.
22
-
23
- *Work* means the *Software* and any additions to or derivative works of the
24
- *Software* that are made available under this License.
25
-
26
-
27
- ## 2. Purpose
28
- This license is intended to define the rights granted to the *Licensee* by
29
- Licensors under the *Software*.
30
-
31
- ## 3. Rights granted
32
-
33
- For the above reasons Licensors have decided to distribute the *Software*.
34
- Licensors grant non-exclusive rights to use the *Software* for research purposes
35
- to research users (both academic and industrial), free of charge, without right
36
- to sublicense.. The *Software* may be used "non-commercially", i.e., for research
37
- and/or evaluation purposes only.
38
-
39
- Subject to the terms and conditions of this License, you are granted a
40
- non-exclusive, royalty-free, license to reproduce, prepare derivative works of,
41
- publicly display, publicly perform and distribute its *Work* and any resulting
42
- derivative works in any form.
43
-
44
- ## 4. Limitations
45
-
46
- **4.1 Redistribution.** You may reproduce or distribute the *Work* only if (a) you do
47
- so under this License, (b) you include a complete copy of this License with
48
- your distribution, and (c) you retain without modification any copyright,
49
- patent, trademark, or attribution notices that are present in the *Work*.
50
-
51
- **4.2 Derivative Works.** You may specify that additional or different terms apply
52
- to the use, reproduction, and distribution of your derivative works of the *Work*
53
- ("Your Terms") only if (a) Your Terms provide that the use limitation in
54
- Section 2 applies to your derivative works, and (b) you identify the specific
55
- derivative works that are subject to Your Terms. Notwithstanding Your Terms,
56
- this License (including the redistribution requirements in Section 3.1) will
57
- continue to apply to the *Work* itself.
58
-
59
- **4.3** Any other use without of prior consent of Licensors is prohibited. Research
60
- users explicitly acknowledge having received from Licensors all information
61
- allowing to appreciate the adequacy between of the *Software* and their needs and
62
- to undertake all necessary precautions for its execution and use.
63
-
64
- **4.4** The *Software* is provided both as a compiled library file and as source
65
- code. In case of using the *Software* for a publication or other results obtained
66
- through the use of the *Software*, users are strongly encouraged to cite the
67
- corresponding publications as explained in the documentation of the *Software*.
68
-
69
- ## 5. Disclaimer
70
-
71
- THE USER CANNOT USE, EXPLOIT OR DISTRIBUTE THE *SOFTWARE* FOR COMMERCIAL PURPOSES
72
- WITHOUT PRIOR AND EXPLICIT CONSENT OF LICENSORS. YOU MUST CONTACT INRIA FOR ANY
73
- UNAUTHORIZED USE: stip-sophia.transfert@inria.fr . ANY SUCH ACTION WILL
74
- CONSTITUTE A FORGERY. THIS *SOFTWARE* IS PROVIDED "AS IS" WITHOUT ANY WARRANTIES
75
- OF ANY NATURE AND ANY EXPRESS OR IMPLIED WARRANTIES, WITH REGARDS TO COMMERCIAL
76
- USE, PROFESSIONNAL USE, LEGAL OR NOT, OR OTHER, OR COMMERCIALISATION OR
77
- ADAPTATION. UNLESS EXPLICITLY PROVIDED BY LAW, IN NO EVENT, SHALL INRIA OR THE
78
- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
79
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
80
- GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION)
81
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
82
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING FROM, OUT OF OR
83
- IN CONNECTION WITH THE *SOFTWARE* OR THE USE OR OTHER DEALINGS IN THE *SOFTWARE*.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/README.md DELETED
@@ -1,19 +0,0 @@
1
- # Differential Gaussian Rasterization
2
-
3
- Used as the rasterization engine for the paper "3D Gaussian Splatting for Real-Time Rendering of Radiance Fields". If you can make use of it in your own research, please be so kind to cite us.
4
-
5
- <section class="section" id="BibTeX">
6
- <div class="container is-max-desktop content">
7
- <h2 class="title">BibTeX</h2>
8
- <pre><code>@Article{kerbl3Dgaussians,
9
- author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{\"u}hler, Thomas and Drettakis, George},
10
- title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering},
11
- journal = {ACM Transactions on Graphics},
12
- number = {4},
13
- volume = {42},
14
- month = {July},
15
- year = {2023},
16
- url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/}
17
- }</code></pre>
18
- </div>
19
- </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/auxiliary.h DELETED
@@ -1,175 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #ifndef CUDA_RASTERIZER_AUXILIARY_H_INCLUDED
13
- #define CUDA_RASTERIZER_AUXILIARY_H_INCLUDED
14
-
15
- #include "config.h"
16
- #include "stdio.h"
17
-
18
- #define BLOCK_SIZE (BLOCK_X * BLOCK_Y)
19
- #define NUM_WARPS (BLOCK_SIZE/32)
20
-
21
- // Spherical harmonics coefficients
22
- __device__ const float SH_C0 = 0.28209479177387814f;
23
- __device__ const float SH_C1 = 0.4886025119029199f;
24
- __device__ const float SH_C2[] = {
25
- 1.0925484305920792f,
26
- -1.0925484305920792f,
27
- 0.31539156525252005f,
28
- -1.0925484305920792f,
29
- 0.5462742152960396f
30
- };
31
- __device__ const float SH_C3[] = {
32
- -0.5900435899266435f,
33
- 2.890611442640554f,
34
- -0.4570457994644658f,
35
- 0.3731763325901154f,
36
- -0.4570457994644658f,
37
- 1.445305721320277f,
38
- -0.5900435899266435f
39
- };
40
-
41
- __forceinline__ __device__ float ndc2Pix(float v, int S)
42
- {
43
- return ((v + 1.0) * S - 1.0) * 0.5;
44
- }
45
-
46
- __forceinline__ __device__ void getRect(const float2 p, int max_radius, uint2& rect_min, uint2& rect_max, dim3 grid)
47
- {
48
- rect_min = {
49
- min(grid.x, max((int)0, (int)((p.x - max_radius) / BLOCK_X))),
50
- min(grid.y, max((int)0, (int)((p.y - max_radius) / BLOCK_Y)))
51
- };
52
- rect_max = {
53
- min(grid.x, max((int)0, (int)((p.x + max_radius + BLOCK_X - 1) / BLOCK_X))),
54
- min(grid.y, max((int)0, (int)((p.y + max_radius + BLOCK_Y - 1) / BLOCK_Y)))
55
- };
56
- }
57
-
58
- __forceinline__ __device__ float3 transformPoint4x3(const float3& p, const float* matrix)
59
- {
60
- float3 transformed = {
61
- matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z + matrix[12],
62
- matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z + matrix[13],
63
- matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z + matrix[14],
64
- };
65
- return transformed;
66
- }
67
-
68
- __forceinline__ __device__ float4 transformPoint4x4(const float3& p, const float* matrix)
69
- {
70
- float4 transformed = {
71
- matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z + matrix[12],
72
- matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z + matrix[13],
73
- matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z + matrix[14],
74
- matrix[3] * p.x + matrix[7] * p.y + matrix[11] * p.z + matrix[15]
75
- };
76
- return transformed;
77
- }
78
-
79
- __forceinline__ __device__ float3 transformVec4x3(const float3& p, const float* matrix)
80
- {
81
- float3 transformed = {
82
- matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z,
83
- matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z,
84
- matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z,
85
- };
86
- return transformed;
87
- }
88
-
89
- __forceinline__ __device__ float3 transformVec4x3Transpose(const float3& p, const float* matrix)
90
- {
91
- float3 transformed = {
92
- matrix[0] * p.x + matrix[1] * p.y + matrix[2] * p.z,
93
- matrix[4] * p.x + matrix[5] * p.y + matrix[6] * p.z,
94
- matrix[8] * p.x + matrix[9] * p.y + matrix[10] * p.z,
95
- };
96
- return transformed;
97
- }
98
-
99
- __forceinline__ __device__ float dnormvdz(float3 v, float3 dv)
100
- {
101
- float sum2 = v.x * v.x + v.y * v.y + v.z * v.z;
102
- float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
103
- float dnormvdz = (-v.x * v.z * dv.x - v.y * v.z * dv.y + (sum2 - v.z * v.z) * dv.z) * invsum32;
104
- return dnormvdz;
105
- }
106
-
107
- __forceinline__ __device__ float3 dnormvdv(float3 v, float3 dv)
108
- {
109
- float sum2 = v.x * v.x + v.y * v.y + v.z * v.z;
110
- float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
111
-
112
- float3 dnormvdv;
113
- dnormvdv.x = ((+sum2 - v.x * v.x) * dv.x - v.y * v.x * dv.y - v.z * v.x * dv.z) * invsum32;
114
- dnormvdv.y = (-v.x * v.y * dv.x + (sum2 - v.y * v.y) * dv.y - v.z * v.y * dv.z) * invsum32;
115
- dnormvdv.z = (-v.x * v.z * dv.x - v.y * v.z * dv.y + (sum2 - v.z * v.z) * dv.z) * invsum32;
116
- return dnormvdv;
117
- }
118
-
119
- __forceinline__ __device__ float4 dnormvdv(float4 v, float4 dv)
120
- {
121
- float sum2 = v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w;
122
- float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
123
-
124
- float4 vdv = { v.x * dv.x, v.y * dv.y, v.z * dv.z, v.w * dv.w };
125
- float vdv_sum = vdv.x + vdv.y + vdv.z + vdv.w;
126
- float4 dnormvdv;
127
- dnormvdv.x = ((sum2 - v.x * v.x) * dv.x - v.x * (vdv_sum - vdv.x)) * invsum32;
128
- dnormvdv.y = ((sum2 - v.y * v.y) * dv.y - v.y * (vdv_sum - vdv.y)) * invsum32;
129
- dnormvdv.z = ((sum2 - v.z * v.z) * dv.z - v.z * (vdv_sum - vdv.z)) * invsum32;
130
- dnormvdv.w = ((sum2 - v.w * v.w) * dv.w - v.w * (vdv_sum - vdv.w)) * invsum32;
131
- return dnormvdv;
132
- }
133
-
134
- __forceinline__ __device__ float sigmoid(float x)
135
- {
136
- return 1.0f / (1.0f + expf(-x));
137
- }
138
-
139
- __forceinline__ __device__ bool in_frustum(int idx,
140
- const float* orig_points,
141
- const float* viewmatrix,
142
- const float* projmatrix,
143
- bool prefiltered,
144
- float3& p_view)
145
- {
146
- float3 p_orig = { orig_points[3 * idx], orig_points[3 * idx + 1], orig_points[3 * idx + 2] };
147
-
148
- // Bring points to screen space
149
- float4 p_hom = transformPoint4x4(p_orig, projmatrix);
150
- float p_w = 1.0f / (p_hom.w + 0.0000001f);
151
- float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };
152
- p_view = transformPoint4x3(p_orig, viewmatrix);
153
-
154
- if (p_view.z <= 0.2f)// || ((p_proj.x < -1.3 || p_proj.x > 1.3 || p_proj.y < -1.3 || p_proj.y > 1.3)))
155
- {
156
- if (prefiltered)
157
- {
158
- printf("Point is filtered although prefiltered is set. This shouldn't happen!");
159
- __trap();
160
- }
161
- return false;
162
- }
163
- return true;
164
- }
165
-
166
- #define CHECK_CUDA(A, debug) \
167
- A; if(debug) { \
168
- auto ret = cudaDeviceSynchronize(); \
169
- if (ret != cudaSuccess) { \
170
- std::cerr << "\n[CUDA ERROR] in " << __FILE__ << "\nLine " << __LINE__ << ": " << cudaGetErrorString(ret); \
171
- throw std::runtime_error(cudaGetErrorString(ret)); \
172
- } \
173
- }
174
-
175
- #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.cu DELETED
@@ -1,657 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #include "backward.h"
13
- #include "auxiliary.h"
14
- #include <cooperative_groups.h>
15
- #include <cooperative_groups/reduce.h>
16
- namespace cg = cooperative_groups;
17
-
18
- // Backward pass for conversion of spherical harmonics to RGB for
19
- // each Gaussian.
20
- __device__ void computeColorFromSH(int idx, int deg, int max_coeffs, const glm::vec3* means, glm::vec3 campos, const float* shs, const bool* clamped, const glm::vec3* dL_dcolor, glm::vec3* dL_dmeans, glm::vec3* dL_dshs)
21
- {
22
- // Compute intermediate values, as it is done during forward
23
- glm::vec3 pos = means[idx];
24
- glm::vec3 dir_orig = pos - campos;
25
- glm::vec3 dir = dir_orig / glm::length(dir_orig);
26
-
27
- glm::vec3* sh = ((glm::vec3*)shs) + idx * max_coeffs;
28
-
29
- // Use PyTorch rule for clamping: if clamping was applied,
30
- // gradient becomes 0.
31
- glm::vec3 dL_dRGB = dL_dcolor[idx];
32
- dL_dRGB.x *= clamped[3 * idx + 0] ? 0 : 1;
33
- dL_dRGB.y *= clamped[3 * idx + 1] ? 0 : 1;
34
- dL_dRGB.z *= clamped[3 * idx + 2] ? 0 : 1;
35
-
36
- glm::vec3 dRGBdx(0, 0, 0);
37
- glm::vec3 dRGBdy(0, 0, 0);
38
- glm::vec3 dRGBdz(0, 0, 0);
39
- float x = dir.x;
40
- float y = dir.y;
41
- float z = dir.z;
42
-
43
- // Target location for this Gaussian to write SH gradients to
44
- glm::vec3* dL_dsh = dL_dshs + idx * max_coeffs;
45
-
46
- // No tricks here, just high school-level calculus.
47
- float dRGBdsh0 = SH_C0;
48
- dL_dsh[0] = dRGBdsh0 * dL_dRGB;
49
- if (deg > 0)
50
- {
51
- float dRGBdsh1 = -SH_C1 * y;
52
- float dRGBdsh2 = SH_C1 * z;
53
- float dRGBdsh3 = -SH_C1 * x;
54
- dL_dsh[1] = dRGBdsh1 * dL_dRGB;
55
- dL_dsh[2] = dRGBdsh2 * dL_dRGB;
56
- dL_dsh[3] = dRGBdsh3 * dL_dRGB;
57
-
58
- dRGBdx = -SH_C1 * sh[3];
59
- dRGBdy = -SH_C1 * sh[1];
60
- dRGBdz = SH_C1 * sh[2];
61
-
62
- if (deg > 1)
63
- {
64
- float xx = x * x, yy = y * y, zz = z * z;
65
- float xy = x * y, yz = y * z, xz = x * z;
66
-
67
- float dRGBdsh4 = SH_C2[0] * xy;
68
- float dRGBdsh5 = SH_C2[1] * yz;
69
- float dRGBdsh6 = SH_C2[2] * (2.f * zz - xx - yy);
70
- float dRGBdsh7 = SH_C2[3] * xz;
71
- float dRGBdsh8 = SH_C2[4] * (xx - yy);
72
- dL_dsh[4] = dRGBdsh4 * dL_dRGB;
73
- dL_dsh[5] = dRGBdsh5 * dL_dRGB;
74
- dL_dsh[6] = dRGBdsh6 * dL_dRGB;
75
- dL_dsh[7] = dRGBdsh7 * dL_dRGB;
76
- dL_dsh[8] = dRGBdsh8 * dL_dRGB;
77
-
78
- dRGBdx += SH_C2[0] * y * sh[4] + SH_C2[2] * 2.f * -x * sh[6] + SH_C2[3] * z * sh[7] + SH_C2[4] * 2.f * x * sh[8];
79
- dRGBdy += SH_C2[0] * x * sh[4] + SH_C2[1] * z * sh[5] + SH_C2[2] * 2.f * -y * sh[6] + SH_C2[4] * 2.f * -y * sh[8];
80
- dRGBdz += SH_C2[1] * y * sh[5] + SH_C2[2] * 2.f * 2.f * z * sh[6] + SH_C2[3] * x * sh[7];
81
-
82
- if (deg > 2)
83
- {
84
- float dRGBdsh9 = SH_C3[0] * y * (3.f * xx - yy);
85
- float dRGBdsh10 = SH_C3[1] * xy * z;
86
- float dRGBdsh11 = SH_C3[2] * y * (4.f * zz - xx - yy);
87
- float dRGBdsh12 = SH_C3[3] * z * (2.f * zz - 3.f * xx - 3.f * yy);
88
- float dRGBdsh13 = SH_C3[4] * x * (4.f * zz - xx - yy);
89
- float dRGBdsh14 = SH_C3[5] * z * (xx - yy);
90
- float dRGBdsh15 = SH_C3[6] * x * (xx - 3.f * yy);
91
- dL_dsh[9] = dRGBdsh9 * dL_dRGB;
92
- dL_dsh[10] = dRGBdsh10 * dL_dRGB;
93
- dL_dsh[11] = dRGBdsh11 * dL_dRGB;
94
- dL_dsh[12] = dRGBdsh12 * dL_dRGB;
95
- dL_dsh[13] = dRGBdsh13 * dL_dRGB;
96
- dL_dsh[14] = dRGBdsh14 * dL_dRGB;
97
- dL_dsh[15] = dRGBdsh15 * dL_dRGB;
98
-
99
- dRGBdx += (
100
- SH_C3[0] * sh[9] * 3.f * 2.f * xy +
101
- SH_C3[1] * sh[10] * yz +
102
- SH_C3[2] * sh[11] * -2.f * xy +
103
- SH_C3[3] * sh[12] * -3.f * 2.f * xz +
104
- SH_C3[4] * sh[13] * (-3.f * xx + 4.f * zz - yy) +
105
- SH_C3[5] * sh[14] * 2.f * xz +
106
- SH_C3[6] * sh[15] * 3.f * (xx - yy));
107
-
108
- dRGBdy += (
109
- SH_C3[0] * sh[9] * 3.f * (xx - yy) +
110
- SH_C3[1] * sh[10] * xz +
111
- SH_C3[2] * sh[11] * (-3.f * yy + 4.f * zz - xx) +
112
- SH_C3[3] * sh[12] * -3.f * 2.f * yz +
113
- SH_C3[4] * sh[13] * -2.f * xy +
114
- SH_C3[5] * sh[14] * -2.f * yz +
115
- SH_C3[6] * sh[15] * -3.f * 2.f * xy);
116
-
117
- dRGBdz += (
118
- SH_C3[1] * sh[10] * xy +
119
- SH_C3[2] * sh[11] * 4.f * 2.f * yz +
120
- SH_C3[3] * sh[12] * 3.f * (2.f * zz - xx - yy) +
121
- SH_C3[4] * sh[13] * 4.f * 2.f * xz +
122
- SH_C3[5] * sh[14] * (xx - yy));
123
- }
124
- }
125
- }
126
-
127
- // The view direction is an input to the computation. View direction
128
- // is influenced by the Gaussian's mean, so SHs gradients
129
- // must propagate back into 3D position.
130
- glm::vec3 dL_ddir(glm::dot(dRGBdx, dL_dRGB), glm::dot(dRGBdy, dL_dRGB), glm::dot(dRGBdz, dL_dRGB));
131
-
132
- // Account for normalization of direction
133
- float3 dL_dmean = dnormvdv(float3{ dir_orig.x, dir_orig.y, dir_orig.z }, float3{ dL_ddir.x, dL_ddir.y, dL_ddir.z });
134
-
135
- // Gradients of loss w.r.t. Gaussian means, but only the portion
136
- // that is caused because the mean affects the view-dependent color.
137
- // Additional mean gradient is accumulated in below methods.
138
- dL_dmeans[idx] += glm::vec3(dL_dmean.x, dL_dmean.y, dL_dmean.z);
139
- }
140
-
141
- // Backward version of INVERSE 2D covariance matrix computation
142
- // (due to length launched as separate kernel before other
143
- // backward steps contained in preprocess)
144
- __global__ void computeCov2DCUDA(int P,
145
- const float3* means,
146
- const int* radii,
147
- const float* cov3Ds,
148
- const float h_x, float h_y,
149
- const float tan_fovx, float tan_fovy,
150
- const float* view_matrix,
151
- const float* dL_dconics,
152
- float3* dL_dmeans,
153
- float* dL_dcov)
154
- {
155
- auto idx = cg::this_grid().thread_rank();
156
- if (idx >= P || !(radii[idx] > 0))
157
- return;
158
-
159
- // Reading location of 3D covariance for this Gaussian
160
- const float* cov3D = cov3Ds + 6 * idx;
161
-
162
- // Fetch gradients, recompute 2D covariance and relevant
163
- // intermediate forward results needed in the backward.
164
- float3 mean = means[idx];
165
- float3 dL_dconic = { dL_dconics[4 * idx], dL_dconics[4 * idx + 1], dL_dconics[4 * idx + 3] };
166
- float3 t = transformPoint4x3(mean, view_matrix);
167
-
168
- const float limx = 1.3f * tan_fovx;
169
- const float limy = 1.3f * tan_fovy;
170
- const float txtz = t.x / t.z;
171
- const float tytz = t.y / t.z;
172
- t.x = min(limx, max(-limx, txtz)) * t.z;
173
- t.y = min(limy, max(-limy, tytz)) * t.z;
174
-
175
- const float x_grad_mul = txtz < -limx || txtz > limx ? 0 : 1;
176
- const float y_grad_mul = tytz < -limy || tytz > limy ? 0 : 1;
177
-
178
- glm::mat3 J = glm::mat3(h_x / t.z, 0.0f, -(h_x * t.x) / (t.z * t.z),
179
- 0.0f, h_y / t.z, -(h_y * t.y) / (t.z * t.z),
180
- 0, 0, 0);
181
-
182
- glm::mat3 W = glm::mat3(
183
- view_matrix[0], view_matrix[4], view_matrix[8],
184
- view_matrix[1], view_matrix[5], view_matrix[9],
185
- view_matrix[2], view_matrix[6], view_matrix[10]);
186
-
187
- glm::mat3 Vrk = glm::mat3(
188
- cov3D[0], cov3D[1], cov3D[2],
189
- cov3D[1], cov3D[3], cov3D[4],
190
- cov3D[2], cov3D[4], cov3D[5]);
191
-
192
- glm::mat3 T = W * J;
193
-
194
- glm::mat3 cov2D = glm::transpose(T) * glm::transpose(Vrk) * T;
195
-
196
- // Use helper variables for 2D covariance entries. More compact.
197
- float a = cov2D[0][0] += 0.3f;
198
- float b = cov2D[0][1];
199
- float c = cov2D[1][1] += 0.3f;
200
-
201
- float denom = a * c - b * b;
202
- float dL_da = 0, dL_db = 0, dL_dc = 0;
203
- float denom2inv = 1.0f / ((denom * denom) + 0.0000001f);
204
-
205
- if (denom2inv != 0)
206
- {
207
- // Gradients of loss w.r.t. entries of 2D covariance matrix,
208
- // given gradients of loss w.r.t. conic matrix (inverse covariance matrix).
209
- // e.g., dL / da = dL / d_conic_a * d_conic_a / d_a
210
- dL_da = denom2inv * (-c * c * dL_dconic.x + 2 * b * c * dL_dconic.y + (denom - a * c) * dL_dconic.z);
211
- dL_dc = denom2inv * (-a * a * dL_dconic.z + 2 * a * b * dL_dconic.y + (denom - a * c) * dL_dconic.x);
212
- dL_db = denom2inv * 2 * (b * c * dL_dconic.x - (denom + 2 * b * b) * dL_dconic.y + a * b * dL_dconic.z);
213
-
214
- // Gradients of loss L w.r.t. each 3D covariance matrix (Vrk) entry,
215
- // given gradients w.r.t. 2D covariance matrix (diagonal).
216
- // cov2D = transpose(T) * transpose(Vrk) * T;
217
- dL_dcov[6 * idx + 0] = (T[0][0] * T[0][0] * dL_da + T[0][0] * T[1][0] * dL_db + T[1][0] * T[1][0] * dL_dc);
218
- dL_dcov[6 * idx + 3] = (T[0][1] * T[0][1] * dL_da + T[0][1] * T[1][1] * dL_db + T[1][1] * T[1][1] * dL_dc);
219
- dL_dcov[6 * idx + 5] = (T[0][2] * T[0][2] * dL_da + T[0][2] * T[1][2] * dL_db + T[1][2] * T[1][2] * dL_dc);
220
-
221
- // Gradients of loss L w.r.t. each 3D covariance matrix (Vrk) entry,
222
- // given gradients w.r.t. 2D covariance matrix (off-diagonal).
223
- // Off-diagonal elements appear twice --> double the gradient.
224
- // cov2D = transpose(T) * transpose(Vrk) * T;
225
- dL_dcov[6 * idx + 1] = 2 * T[0][0] * T[0][1] * dL_da + (T[0][0] * T[1][1] + T[0][1] * T[1][0]) * dL_db + 2 * T[1][0] * T[1][1] * dL_dc;
226
- dL_dcov[6 * idx + 2] = 2 * T[0][0] * T[0][2] * dL_da + (T[0][0] * T[1][2] + T[0][2] * T[1][0]) * dL_db + 2 * T[1][0] * T[1][2] * dL_dc;
227
- dL_dcov[6 * idx + 4] = 2 * T[0][2] * T[0][1] * dL_da + (T[0][1] * T[1][2] + T[0][2] * T[1][1]) * dL_db + 2 * T[1][1] * T[1][2] * dL_dc;
228
- }
229
- else
230
- {
231
- for (int i = 0; i < 6; i++)
232
- dL_dcov[6 * idx + i] = 0;
233
- }
234
-
235
- // Gradients of loss w.r.t. upper 2x3 portion of intermediate matrix T
236
- // cov2D = transpose(T) * transpose(Vrk) * T;
237
- float dL_dT00 = 2 * (T[0][0] * Vrk[0][0] + T[0][1] * Vrk[0][1] + T[0][2] * Vrk[0][2]) * dL_da +
238
- (T[1][0] * Vrk[0][0] + T[1][1] * Vrk[0][1] + T[1][2] * Vrk[0][2]) * dL_db;
239
- float dL_dT01 = 2 * (T[0][0] * Vrk[1][0] + T[0][1] * Vrk[1][1] + T[0][2] * Vrk[1][2]) * dL_da +
240
- (T[1][0] * Vrk[1][0] + T[1][1] * Vrk[1][1] + T[1][2] * Vrk[1][2]) * dL_db;
241
- float dL_dT02 = 2 * (T[0][0] * Vrk[2][0] + T[0][1] * Vrk[2][1] + T[0][2] * Vrk[2][2]) * dL_da +
242
- (T[1][0] * Vrk[2][0] + T[1][1] * Vrk[2][1] + T[1][2] * Vrk[2][2]) * dL_db;
243
- float dL_dT10 = 2 * (T[1][0] * Vrk[0][0] + T[1][1] * Vrk[0][1] + T[1][2] * Vrk[0][2]) * dL_dc +
244
- (T[0][0] * Vrk[0][0] + T[0][1] * Vrk[0][1] + T[0][2] * Vrk[0][2]) * dL_db;
245
- float dL_dT11 = 2 * (T[1][0] * Vrk[1][0] + T[1][1] * Vrk[1][1] + T[1][2] * Vrk[1][2]) * dL_dc +
246
- (T[0][0] * Vrk[1][0] + T[0][1] * Vrk[1][1] + T[0][2] * Vrk[1][2]) * dL_db;
247
- float dL_dT12 = 2 * (T[1][0] * Vrk[2][0] + T[1][1] * Vrk[2][1] + T[1][2] * Vrk[2][2]) * dL_dc +
248
- (T[0][0] * Vrk[2][0] + T[0][1] * Vrk[2][1] + T[0][2] * Vrk[2][2]) * dL_db;
249
-
250
- // Gradients of loss w.r.t. upper 3x2 non-zero entries of Jacobian matrix
251
- // T = W * J
252
- float dL_dJ00 = W[0][0] * dL_dT00 + W[0][1] * dL_dT01 + W[0][2] * dL_dT02;
253
- float dL_dJ02 = W[2][0] * dL_dT00 + W[2][1] * dL_dT01 + W[2][2] * dL_dT02;
254
- float dL_dJ11 = W[1][0] * dL_dT10 + W[1][1] * dL_dT11 + W[1][2] * dL_dT12;
255
- float dL_dJ12 = W[2][0] * dL_dT10 + W[2][1] * dL_dT11 + W[2][2] * dL_dT12;
256
-
257
- float tz = 1.f / t.z;
258
- float tz2 = tz * tz;
259
- float tz3 = tz2 * tz;
260
-
261
- // Gradients of loss w.r.t. transformed Gaussian mean t
262
- float dL_dtx = x_grad_mul * -h_x * tz2 * dL_dJ02;
263
- float dL_dty = y_grad_mul * -h_y * tz2 * dL_dJ12;
264
- float dL_dtz = -h_x * tz2 * dL_dJ00 - h_y * tz2 * dL_dJ11 + (2 * h_x * t.x) * tz3 * dL_dJ02 + (2 * h_y * t.y) * tz3 * dL_dJ12;
265
-
266
- // Account for transformation of mean to t
267
- // t = transformPoint4x3(mean, view_matrix);
268
- float3 dL_dmean = transformVec4x3Transpose({ dL_dtx, dL_dty, dL_dtz }, view_matrix);
269
-
270
- // Gradients of loss w.r.t. Gaussian means, but only the portion
271
- // that is caused because the mean affects the covariance matrix.
272
- // Additional mean gradient is accumulated in BACKWARD::preprocess.
273
- dL_dmeans[idx] = dL_dmean;
274
- }
275
-
276
- // Backward pass for the conversion of scale and rotation to a
277
- // 3D covariance matrix for each Gaussian.
278
- __device__ void computeCov3D(int idx, const glm::vec3 scale, float mod, const glm::vec4 rot, const float* dL_dcov3Ds, glm::vec3* dL_dscales, glm::vec4* dL_drots)
279
- {
280
- // Recompute (intermediate) results for the 3D covariance computation.
281
- glm::vec4 q = rot;// / glm::length(rot);
282
- float r = q.x;
283
- float x = q.y;
284
- float y = q.z;
285
- float z = q.w;
286
-
287
- glm::mat3 R = glm::mat3(
288
- 1.f - 2.f * (y * y + z * z), 2.f * (x * y - r * z), 2.f * (x * z + r * y),
289
- 2.f * (x * y + r * z), 1.f - 2.f * (x * x + z * z), 2.f * (y * z - r * x),
290
- 2.f * (x * z - r * y), 2.f * (y * z + r * x), 1.f - 2.f * (x * x + y * y)
291
- );
292
-
293
- glm::mat3 S = glm::mat3(1.0f);
294
-
295
- glm::vec3 s = mod * scale;
296
- S[0][0] = s.x;
297
- S[1][1] = s.y;
298
- S[2][2] = s.z;
299
-
300
- glm::mat3 M = S * R;
301
-
302
- const float* dL_dcov3D = dL_dcov3Ds + 6 * idx;
303
-
304
- glm::vec3 dunc(dL_dcov3D[0], dL_dcov3D[3], dL_dcov3D[5]);
305
- glm::vec3 ounc = 0.5f * glm::vec3(dL_dcov3D[1], dL_dcov3D[2], dL_dcov3D[4]);
306
-
307
- // Convert per-element covariance loss gradients to matrix form
308
- glm::mat3 dL_dSigma = glm::mat3(
309
- dL_dcov3D[0], 0.5f * dL_dcov3D[1], 0.5f * dL_dcov3D[2],
310
- 0.5f * dL_dcov3D[1], dL_dcov3D[3], 0.5f * dL_dcov3D[4],
311
- 0.5f * dL_dcov3D[2], 0.5f * dL_dcov3D[4], dL_dcov3D[5]
312
- );
313
-
314
- // Compute loss gradient w.r.t. matrix M
315
- // dSigma_dM = 2 * M
316
- glm::mat3 dL_dM = 2.0f * M * dL_dSigma;
317
-
318
- glm::mat3 Rt = glm::transpose(R);
319
- glm::mat3 dL_dMt = glm::transpose(dL_dM);
320
-
321
- // Gradients of loss w.r.t. scale
322
- glm::vec3* dL_dscale = dL_dscales + idx;
323
- dL_dscale->x = glm::dot(Rt[0], dL_dMt[0]);
324
- dL_dscale->y = glm::dot(Rt[1], dL_dMt[1]);
325
- dL_dscale->z = glm::dot(Rt[2], dL_dMt[2]);
326
-
327
- dL_dMt[0] *= s.x;
328
- dL_dMt[1] *= s.y;
329
- dL_dMt[2] *= s.z;
330
-
331
- // Gradients of loss w.r.t. normalized quaternion
332
- glm::vec4 dL_dq;
333
- dL_dq.x = 2 * z * (dL_dMt[0][1] - dL_dMt[1][0]) + 2 * y * (dL_dMt[2][0] - dL_dMt[0][2]) + 2 * x * (dL_dMt[1][2] - dL_dMt[2][1]);
334
- dL_dq.y = 2 * y * (dL_dMt[1][0] + dL_dMt[0][1]) + 2 * z * (dL_dMt[2][0] + dL_dMt[0][2]) + 2 * r * (dL_dMt[1][2] - dL_dMt[2][1]) - 4 * x * (dL_dMt[2][2] + dL_dMt[1][1]);
335
- dL_dq.z = 2 * x * (dL_dMt[1][0] + dL_dMt[0][1]) + 2 * r * (dL_dMt[2][0] - dL_dMt[0][2]) + 2 * z * (dL_dMt[1][2] + dL_dMt[2][1]) - 4 * y * (dL_dMt[2][2] + dL_dMt[0][0]);
336
- dL_dq.w = 2 * r * (dL_dMt[0][1] - dL_dMt[1][0]) + 2 * x * (dL_dMt[2][0] + dL_dMt[0][2]) + 2 * y * (dL_dMt[1][2] + dL_dMt[2][1]) - 4 * z * (dL_dMt[1][1] + dL_dMt[0][0]);
337
-
338
- // Gradients of loss w.r.t. unnormalized quaternion
339
- float4* dL_drot = (float4*)(dL_drots + idx);
340
- *dL_drot = float4{ dL_dq.x, dL_dq.y, dL_dq.z, dL_dq.w };//dnormvdv(float4{ rot.x, rot.y, rot.z, rot.w }, float4{ dL_dq.x, dL_dq.y, dL_dq.z, dL_dq.w });
341
- }
342
-
343
- // Backward pass of the preprocessing steps, except
344
- // for the covariance computation and inversion
345
- // (those are handled by a previous kernel call)
346
- template<int C>
347
- __global__ void preprocessCUDA(
348
- int P, int D, int M,
349
- const float3* means,
350
- const int* radii,
351
- const float* shs,
352
- const bool* clamped,
353
- const glm::vec3* scales,
354
- const glm::vec4* rotations,
355
- const float scale_modifier,
356
- const float* proj,
357
- const glm::vec3* campos,
358
- const float3* dL_dmean2D,
359
- glm::vec3* dL_dmeans,
360
- float* dL_dcolor,
361
- float* dL_dcov3D,
362
- float* dL_dsh,
363
- glm::vec3* dL_dscale,
364
- glm::vec4* dL_drot)
365
- {
366
- auto idx = cg::this_grid().thread_rank();
367
- if (idx >= P || !(radii[idx] > 0))
368
- return;
369
-
370
- float3 m = means[idx];
371
-
372
- // Taking care of gradients from the screenspace points
373
- float4 m_hom = transformPoint4x4(m, proj);
374
- float m_w = 1.0f / (m_hom.w + 0.0000001f);
375
-
376
- // Compute loss gradient w.r.t. 3D means due to gradients of 2D means
377
- // from rendering procedure
378
- glm::vec3 dL_dmean;
379
- float mul1 = (proj[0] * m.x + proj[4] * m.y + proj[8] * m.z + proj[12]) * m_w * m_w;
380
- float mul2 = (proj[1] * m.x + proj[5] * m.y + proj[9] * m.z + proj[13]) * m_w * m_w;
381
- dL_dmean.x = (proj[0] * m_w - proj[3] * mul1) * dL_dmean2D[idx].x + (proj[1] * m_w - proj[3] * mul2) * dL_dmean2D[idx].y;
382
- dL_dmean.y = (proj[4] * m_w - proj[7] * mul1) * dL_dmean2D[idx].x + (proj[5] * m_w - proj[7] * mul2) * dL_dmean2D[idx].y;
383
- dL_dmean.z = (proj[8] * m_w - proj[11] * mul1) * dL_dmean2D[idx].x + (proj[9] * m_w - proj[11] * mul2) * dL_dmean2D[idx].y;
384
-
385
- // That's the second part of the mean gradient. Previous computation
386
- // of cov2D and following SH conversion also affects it.
387
- dL_dmeans[idx] += dL_dmean;
388
-
389
- // Compute gradient updates due to computing colors from SHs
390
- if (shs)
391
- computeColorFromSH(idx, D, M, (glm::vec3*)means, *campos, shs, clamped, (glm::vec3*)dL_dcolor, (glm::vec3*)dL_dmeans, (glm::vec3*)dL_dsh);
392
-
393
- // Compute gradient updates due to computing covariance from scale/rotation
394
- if (scales)
395
- computeCov3D(idx, scales[idx], scale_modifier, rotations[idx], dL_dcov3D, dL_dscale, dL_drot);
396
- }
397
-
398
- // Backward version of the rendering procedure.
399
- template <uint32_t C>
400
- __global__ void __launch_bounds__(BLOCK_X * BLOCK_Y)
401
- renderCUDA(
402
- const uint2* __restrict__ ranges,
403
- const uint32_t* __restrict__ point_list,
404
- int W, int H,
405
- const float* __restrict__ bg_color,
406
- const float2* __restrict__ points_xy_image,
407
- const float4* __restrict__ conic_opacity,
408
- const float* __restrict__ colors,
409
- const float* __restrict__ final_Ts,
410
- const uint32_t* __restrict__ n_contrib,
411
- const float* __restrict__ dL_dpixels,
412
- float3* __restrict__ dL_dmean2D,
413
- float4* __restrict__ dL_dconic2D,
414
- float* __restrict__ dL_dopacity,
415
- float* __restrict__ dL_dcolors)
416
- {
417
- // We rasterize again. Compute necessary block info.
418
- auto block = cg::this_thread_block();
419
- const uint32_t horizontal_blocks = (W + BLOCK_X - 1) / BLOCK_X;
420
- const uint2 pix_min = { block.group_index().x * BLOCK_X, block.group_index().y * BLOCK_Y };
421
- const uint2 pix_max = { min(pix_min.x + BLOCK_X, W), min(pix_min.y + BLOCK_Y , H) };
422
- const uint2 pix = { pix_min.x + block.thread_index().x, pix_min.y + block.thread_index().y };
423
- const uint32_t pix_id = W * pix.y + pix.x;
424
- const float2 pixf = { (float)pix.x, (float)pix.y };
425
-
426
- const bool inside = pix.x < W&& pix.y < H;
427
- const uint2 range = ranges[block.group_index().y * horizontal_blocks + block.group_index().x];
428
-
429
- const int rounds = ((range.y - range.x + BLOCK_SIZE - 1) / BLOCK_SIZE);
430
-
431
- bool done = !inside;
432
- int toDo = range.y - range.x;
433
-
434
- __shared__ int collected_id[BLOCK_SIZE];
435
- __shared__ float2 collected_xy[BLOCK_SIZE];
436
- __shared__ float4 collected_conic_opacity[BLOCK_SIZE];
437
- __shared__ float collected_colors[C * BLOCK_SIZE];
438
-
439
- // In the forward, we stored the final value for T, the
440
- // product of all (1 - alpha) factors.
441
- const float T_final = inside ? final_Ts[pix_id] : 0;
442
- float T = T_final;
443
-
444
- // We start from the back. The ID of the last contributing
445
- // Gaussian is known from each pixel from the forward.
446
- uint32_t contributor = toDo;
447
- const int last_contributor = inside ? n_contrib[pix_id] : 0;
448
-
449
- float accum_rec[C] = { 0 };
450
- float dL_dpixel[C];
451
- if (inside)
452
- for (int i = 0; i < C; i++)
453
- dL_dpixel[i] = dL_dpixels[i * H * W + pix_id];
454
-
455
- float last_alpha = 0;
456
- float last_color[C] = { 0 };
457
-
458
- // Gradient of pixel coordinate w.r.t. normalized
459
- // screen-space viewport corrdinates (-1 to 1)
460
- const float ddelx_dx = 0.5 * W;
461
- const float ddely_dy = 0.5 * H;
462
-
463
- // Traverse all Gaussians
464
- for (int i = 0; i < rounds; i++, toDo -= BLOCK_SIZE)
465
- {
466
- // Load auxiliary data into shared memory, start in the BACK
467
- // and load them in revers order.
468
- block.sync();
469
- const int progress = i * BLOCK_SIZE + block.thread_rank();
470
- if (range.x + progress < range.y)
471
- {
472
- const int coll_id = point_list[range.y - progress - 1];
473
- collected_id[block.thread_rank()] = coll_id;
474
- collected_xy[block.thread_rank()] = points_xy_image[coll_id];
475
- collected_conic_opacity[block.thread_rank()] = conic_opacity[coll_id];
476
- for (int i = 0; i < C; i++)
477
- collected_colors[i * BLOCK_SIZE + block.thread_rank()] = colors[coll_id * C + i];
478
- }
479
- block.sync();
480
-
481
- // Iterate over Gaussians
482
- for (int j = 0; !done && j < min(BLOCK_SIZE, toDo); j++)
483
- {
484
- // Keep track of current Gaussian ID. Skip, if this one
485
- // is behind the last contributor for this pixel.
486
- contributor--;
487
- if (contributor >= last_contributor)
488
- continue;
489
-
490
- // Compute blending values, as before.
491
- const float2 xy = collected_xy[j];
492
- const float2 d = { xy.x - pixf.x, xy.y - pixf.y };
493
- const float4 con_o = collected_conic_opacity[j];
494
- const float power = -0.5f * (con_o.x * d.x * d.x + con_o.z * d.y * d.y) - con_o.y * d.x * d.y;
495
- if (power > 0.0f)
496
- continue;
497
-
498
- const float G = exp(power);
499
- const float alpha = min(0.99f, con_o.w * G);
500
- if (alpha < 1.0f / 255.0f)
501
- continue;
502
-
503
- T = T / (1.f - alpha);
504
- const float dchannel_dcolor = alpha * T;
505
-
506
- // Propagate gradients to per-Gaussian colors and keep
507
- // gradients w.r.t. alpha (blending factor for a Gaussian/pixel
508
- // pair).
509
- float dL_dalpha = 0.0f;
510
- const int global_id = collected_id[j];
511
- for (int ch = 0; ch < C; ch++)
512
- {
513
- const float c = collected_colors[ch * BLOCK_SIZE + j];
514
- // Update last color (to be used in the next iteration)
515
- accum_rec[ch] = last_alpha * last_color[ch] + (1.f - last_alpha) * accum_rec[ch];
516
- last_color[ch] = c;
517
-
518
- const float dL_dchannel = dL_dpixel[ch];
519
- dL_dalpha += (c - accum_rec[ch]) * dL_dchannel;
520
- // Update the gradients w.r.t. color of the Gaussian.
521
- // Atomic, since this pixel is just one of potentially
522
- // many that were affected by this Gaussian.
523
- atomicAdd(&(dL_dcolors[global_id * C + ch]), dchannel_dcolor * dL_dchannel);
524
- }
525
- dL_dalpha *= T;
526
- // Update last alpha (to be used in the next iteration)
527
- last_alpha = alpha;
528
-
529
- // Account for fact that alpha also influences how much of
530
- // the background color is added if nothing left to blend
531
- float bg_dot_dpixel = 0;
532
- for (int i = 0; i < C; i++)
533
- bg_dot_dpixel += bg_color[i] * dL_dpixel[i];
534
- dL_dalpha += (-T_final / (1.f - alpha)) * bg_dot_dpixel;
535
-
536
-
537
- // Helpful reusable temporary variables
538
- const float dL_dG = con_o.w * dL_dalpha;
539
- const float gdx = G * d.x;
540
- const float gdy = G * d.y;
541
- const float dG_ddelx = -gdx * con_o.x - gdy * con_o.y;
542
- const float dG_ddely = -gdy * con_o.z - gdx * con_o.y;
543
-
544
- // Update gradients w.r.t. 2D mean position of the Gaussian
545
- atomicAdd(&dL_dmean2D[global_id].x, dL_dG * dG_ddelx * ddelx_dx);
546
- atomicAdd(&dL_dmean2D[global_id].y, dL_dG * dG_ddely * ddely_dy);
547
-
548
- // Update gradients w.r.t. 2D covariance (2x2 matrix, symmetric)
549
- atomicAdd(&dL_dconic2D[global_id].x, -0.5f * gdx * d.x * dL_dG);
550
- atomicAdd(&dL_dconic2D[global_id].y, -0.5f * gdx * d.y * dL_dG);
551
- atomicAdd(&dL_dconic2D[global_id].w, -0.5f * gdy * d.y * dL_dG);
552
-
553
- // Update gradients w.r.t. opacity of the Gaussian
554
- atomicAdd(&(dL_dopacity[global_id]), G * dL_dalpha);
555
- }
556
- }
557
- }
558
-
559
- void BACKWARD::preprocess(
560
- int P, int D, int M,
561
- const float3* means3D,
562
- const int* radii,
563
- const float* shs,
564
- const bool* clamped,
565
- const glm::vec3* scales,
566
- const glm::vec4* rotations,
567
- const float scale_modifier,
568
- const float* cov3Ds,
569
- const float* viewmatrix,
570
- const float* projmatrix,
571
- const float focal_x, float focal_y,
572
- const float tan_fovx, float tan_fovy,
573
- const glm::vec3* campos,
574
- const float3* dL_dmean2D,
575
- const float* dL_dconic,
576
- glm::vec3* dL_dmean3D,
577
- float* dL_dcolor,
578
- float* dL_dcov3D,
579
- float* dL_dsh,
580
- glm::vec3* dL_dscale,
581
- glm::vec4* dL_drot)
582
- {
583
- // Propagate gradients for the path of 2D conic matrix computation.
584
- // Somewhat long, thus it is its own kernel rather than being part of
585
- // "preprocess". When done, loss gradient w.r.t. 3D means has been
586
- // modified and gradient w.r.t. 3D covariance matrix has been computed.
587
- computeCov2DCUDA << <(P + 255) / 256, 256 >> > (
588
- P,
589
- means3D,
590
- radii,
591
- cov3Ds,
592
- focal_x,
593
- focal_y,
594
- tan_fovx,
595
- tan_fovy,
596
- viewmatrix,
597
- dL_dconic,
598
- (float3*)dL_dmean3D,
599
- dL_dcov3D);
600
-
601
- // Propagate gradients for remaining steps: finish 3D mean gradients,
602
- // propagate color gradients to SH (if desireD), propagate 3D covariance
603
- // matrix gradients to scale and rotation.
604
- preprocessCUDA<NUM_CHANNELS> << < (P + 255) / 256, 256 >> > (
605
- P, D, M,
606
- (float3*)means3D,
607
- radii,
608
- shs,
609
- clamped,
610
- (glm::vec3*)scales,
611
- (glm::vec4*)rotations,
612
- scale_modifier,
613
- projmatrix,
614
- campos,
615
- (float3*)dL_dmean2D,
616
- (glm::vec3*)dL_dmean3D,
617
- dL_dcolor,
618
- dL_dcov3D,
619
- dL_dsh,
620
- dL_dscale,
621
- dL_drot);
622
- }
623
-
624
- void BACKWARD::render(
625
- const dim3 grid, const dim3 block,
626
- const uint2* ranges,
627
- const uint32_t* point_list,
628
- int W, int H,
629
- const float* bg_color,
630
- const float2* means2D,
631
- const float4* conic_opacity,
632
- const float* colors,
633
- const float* final_Ts,
634
- const uint32_t* n_contrib,
635
- const float* dL_dpixels,
636
- float3* dL_dmean2D,
637
- float4* dL_dconic2D,
638
- float* dL_dopacity,
639
- float* dL_dcolors)
640
- {
641
- renderCUDA<NUM_CHANNELS> << <grid, block >> >(
642
- ranges,
643
- point_list,
644
- W, H,
645
- bg_color,
646
- means2D,
647
- conic_opacity,
648
- colors,
649
- final_Ts,
650
- n_contrib,
651
- dL_dpixels,
652
- dL_dmean2D,
653
- dL_dconic2D,
654
- dL_dopacity,
655
- dL_dcolors
656
- );
657
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/backward.h DELETED
@@ -1,65 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #ifndef CUDA_RASTERIZER_BACKWARD_H_INCLUDED
13
- #define CUDA_RASTERIZER_BACKWARD_H_INCLUDED
14
-
15
- #include <cuda.h>
16
- #include "cuda_runtime.h"
17
- #include "device_launch_parameters.h"
18
- #define GLM_FORCE_CUDA
19
- #include <glm/glm.hpp>
20
-
21
- namespace BACKWARD
22
- {
23
- void render(
24
- const dim3 grid, dim3 block,
25
- const uint2* ranges,
26
- const uint32_t* point_list,
27
- int W, int H,
28
- const float* bg_color,
29
- const float2* means2D,
30
- const float4* conic_opacity,
31
- const float* colors,
32
- const float* final_Ts,
33
- const uint32_t* n_contrib,
34
- const float* dL_dpixels,
35
- float3* dL_dmean2D,
36
- float4* dL_dconic2D,
37
- float* dL_dopacity,
38
- float* dL_dcolors);
39
-
40
- void preprocess(
41
- int P, int D, int M,
42
- const float3* means,
43
- const int* radii,
44
- const float* shs,
45
- const bool* clamped,
46
- const glm::vec3* scales,
47
- const glm::vec4* rotations,
48
- const float scale_modifier,
49
- const float* cov3Ds,
50
- const float* view,
51
- const float* proj,
52
- const float focal_x, float focal_y,
53
- const float tan_fovx, float tan_fovy,
54
- const glm::vec3* campos,
55
- const float3* dL_dmean2D,
56
- const float* dL_dconics,
57
- glm::vec3* dL_dmeans,
58
- float* dL_dcolor,
59
- float* dL_dcov3D,
60
- float* dL_dsh,
61
- glm::vec3* dL_dscale,
62
- glm::vec4* dL_drot);
63
- }
64
-
65
- #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/config.h DELETED
@@ -1,19 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #ifndef CUDA_RASTERIZER_CONFIG_H_INCLUDED
13
- #define CUDA_RASTERIZER_CONFIG_H_INCLUDED
14
-
15
- #define NUM_CHANNELS 3 // Default 3, RGB
16
- #define BLOCK_X 16
17
- #define BLOCK_Y 16
18
-
19
- #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.cu DELETED
@@ -1,455 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #include "forward.h"
13
- #include "auxiliary.h"
14
- #include <cooperative_groups.h>
15
- #include <cooperative_groups/reduce.h>
16
- namespace cg = cooperative_groups;
17
-
18
- // Forward method for converting the input spherical harmonics
19
- // coefficients of each Gaussian to a simple RGB color.
20
- __device__ glm::vec3 computeColorFromSH(int idx, int deg, int max_coeffs, const glm::vec3* means, glm::vec3 campos, const float* shs, bool* clamped)
21
- {
22
- // The implementation is loosely based on code for
23
- // "Differentiable Point-Based Radiance Fields for
24
- // Efficient View Synthesis" by Zhang et al. (2022)
25
- glm::vec3 pos = means[idx];
26
- glm::vec3 dir = pos - campos;
27
- dir = dir / glm::length(dir);
28
-
29
- glm::vec3* sh = ((glm::vec3*)shs) + idx * max_coeffs;
30
- glm::vec3 result = SH_C0 * sh[0];
31
-
32
- if (deg > 0)
33
- {
34
- float x = dir.x;
35
- float y = dir.y;
36
- float z = dir.z;
37
- result = result - SH_C1 * y * sh[1] + SH_C1 * z * sh[2] - SH_C1 * x * sh[3];
38
-
39
- if (deg > 1)
40
- {
41
- float xx = x * x, yy = y * y, zz = z * z;
42
- float xy = x * y, yz = y * z, xz = x * z;
43
- result = result +
44
- SH_C2[0] * xy * sh[4] +
45
- SH_C2[1] * yz * sh[5] +
46
- SH_C2[2] * (2.0f * zz - xx - yy) * sh[6] +
47
- SH_C2[3] * xz * sh[7] +
48
- SH_C2[4] * (xx - yy) * sh[8];
49
-
50
- if (deg > 2)
51
- {
52
- result = result +
53
- SH_C3[0] * y * (3.0f * xx - yy) * sh[9] +
54
- SH_C3[1] * xy * z * sh[10] +
55
- SH_C3[2] * y * (4.0f * zz - xx - yy) * sh[11] +
56
- SH_C3[3] * z * (2.0f * zz - 3.0f * xx - 3.0f * yy) * sh[12] +
57
- SH_C3[4] * x * (4.0f * zz - xx - yy) * sh[13] +
58
- SH_C3[5] * z * (xx - yy) * sh[14] +
59
- SH_C3[6] * x * (xx - 3.0f * yy) * sh[15];
60
- }
61
- }
62
- }
63
- result += 0.5f;
64
-
65
- // RGB colors are clamped to positive values. If values are
66
- // clamped, we need to keep track of this for the backward pass.
67
- clamped[3 * idx + 0] = (result.x < 0);
68
- clamped[3 * idx + 1] = (result.y < 0);
69
- clamped[3 * idx + 2] = (result.z < 0);
70
- return glm::max(result, 0.0f);
71
- }
72
-
73
- // Forward version of 2D covariance matrix computation
74
- __device__ float3 computeCov2D(const float3& mean, float focal_x, float focal_y, float tan_fovx, float tan_fovy, const float* cov3D, const float* viewmatrix)
75
- {
76
- // The following models the steps outlined by equations 29
77
- // and 31 in "EWA Splatting" (Zwicker et al., 2002).
78
- // Additionally considers aspect / scaling of viewport.
79
- // Transposes used to account for row-/column-major conventions.
80
- float3 t = transformPoint4x3(mean, viewmatrix);
81
-
82
- const float limx = 1.3f * tan_fovx;
83
- const float limy = 1.3f * tan_fovy;
84
- const float txtz = t.x / t.z;
85
- const float tytz = t.y / t.z;
86
- t.x = min(limx, max(-limx, txtz)) * t.z;
87
- t.y = min(limy, max(-limy, tytz)) * t.z;
88
-
89
- glm::mat3 J = glm::mat3(
90
- focal_x / t.z, 0.0f, -(focal_x * t.x) / (t.z * t.z),
91
- 0.0f, focal_y / t.z, -(focal_y * t.y) / (t.z * t.z),
92
- 0, 0, 0);
93
-
94
- glm::mat3 W = glm::mat3(
95
- viewmatrix[0], viewmatrix[4], viewmatrix[8],
96
- viewmatrix[1], viewmatrix[5], viewmatrix[9],
97
- viewmatrix[2], viewmatrix[6], viewmatrix[10]);
98
-
99
- glm::mat3 T = W * J;
100
-
101
- glm::mat3 Vrk = glm::mat3(
102
- cov3D[0], cov3D[1], cov3D[2],
103
- cov3D[1], cov3D[3], cov3D[4],
104
- cov3D[2], cov3D[4], cov3D[5]);
105
-
106
- glm::mat3 cov = glm::transpose(T) * glm::transpose(Vrk) * T;
107
-
108
- // Apply low-pass filter: every Gaussian should be at least
109
- // one pixel wide/high. Discard 3rd row and column.
110
- cov[0][0] += 0.3f;
111
- cov[1][1] += 0.3f;
112
- return { float(cov[0][0]), float(cov[0][1]), float(cov[1][1]) };
113
- }
114
-
115
- // Forward method for converting scale and rotation properties of each
116
- // Gaussian to a 3D covariance matrix in world space. Also takes care
117
- // of quaternion normalization.
118
- __device__ void computeCov3D(const glm::vec3 scale, float mod, const glm::vec4 rot, float* cov3D)
119
- {
120
- // Create scaling matrix
121
- glm::mat3 S = glm::mat3(1.0f);
122
- S[0][0] = mod * scale.x;
123
- S[1][1] = mod * scale.y;
124
- S[2][2] = mod * scale.z;
125
-
126
- // Normalize quaternion to get valid rotation
127
- glm::vec4 q = rot;// / glm::length(rot);
128
- float r = q.x;
129
- float x = q.y;
130
- float y = q.z;
131
- float z = q.w;
132
-
133
- // Compute rotation matrix from quaternion
134
- glm::mat3 R = glm::mat3(
135
- 1.f - 2.f * (y * y + z * z), 2.f * (x * y - r * z), 2.f * (x * z + r * y),
136
- 2.f * (x * y + r * z), 1.f - 2.f * (x * x + z * z), 2.f * (y * z - r * x),
137
- 2.f * (x * z - r * y), 2.f * (y * z + r * x), 1.f - 2.f * (x * x + y * y)
138
- );
139
-
140
- glm::mat3 M = S * R;
141
-
142
- // Compute 3D world covariance matrix Sigma
143
- glm::mat3 Sigma = glm::transpose(M) * M;
144
-
145
- // Covariance is symmetric, only store upper right
146
- cov3D[0] = Sigma[0][0];
147
- cov3D[1] = Sigma[0][1];
148
- cov3D[2] = Sigma[0][2];
149
- cov3D[3] = Sigma[1][1];
150
- cov3D[4] = Sigma[1][2];
151
- cov3D[5] = Sigma[2][2];
152
- }
153
-
154
- // Perform initial steps for each Gaussian prior to rasterization.
155
- template<int C>
156
- __global__ void preprocessCUDA(int P, int D, int M,
157
- const float* orig_points,
158
- const glm::vec3* scales,
159
- const float scale_modifier,
160
- const glm::vec4* rotations,
161
- const float* opacities,
162
- const float* shs,
163
- bool* clamped,
164
- const float* cov3D_precomp,
165
- const float* colors_precomp,
166
- const float* viewmatrix,
167
- const float* projmatrix,
168
- const glm::vec3* cam_pos,
169
- const int W, int H,
170
- const float tan_fovx, float tan_fovy,
171
- const float focal_x, float focal_y,
172
- int* radii,
173
- float2* points_xy_image,
174
- float* depths,
175
- float* cov3Ds,
176
- float* rgb,
177
- float4* conic_opacity,
178
- const dim3 grid,
179
- uint32_t* tiles_touched,
180
- bool prefiltered)
181
- {
182
- auto idx = cg::this_grid().thread_rank();
183
- if (idx >= P)
184
- return;
185
-
186
- // Initialize radius and touched tiles to 0. If this isn't changed,
187
- // this Gaussian will not be processed further.
188
- radii[idx] = 0;
189
- tiles_touched[idx] = 0;
190
-
191
- // Perform near culling, quit if outside.
192
- float3 p_view;
193
- if (!in_frustum(idx, orig_points, viewmatrix, projmatrix, prefiltered, p_view))
194
- return;
195
-
196
- // Transform point by projecting
197
- float3 p_orig = { orig_points[3 * idx], orig_points[3 * idx + 1], orig_points[3 * idx + 2] };
198
- float4 p_hom = transformPoint4x4(p_orig, projmatrix);
199
- float p_w = 1.0f / (p_hom.w + 0.0000001f);
200
- float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };
201
-
202
- // If 3D covariance matrix is precomputed, use it, otherwise compute
203
- // from scaling and rotation parameters.
204
- const float* cov3D;
205
- if (cov3D_precomp != nullptr)
206
- {
207
- cov3D = cov3D_precomp + idx * 6;
208
- }
209
- else
210
- {
211
- computeCov3D(scales[idx], scale_modifier, rotations[idx], cov3Ds + idx * 6);
212
- cov3D = cov3Ds + idx * 6;
213
- }
214
-
215
- // Compute 2D screen-space covariance matrix
216
- float3 cov = computeCov2D(p_orig, focal_x, focal_y, tan_fovx, tan_fovy, cov3D, viewmatrix);
217
-
218
- // Invert covariance (EWA algorithm)
219
- float det = (cov.x * cov.z - cov.y * cov.y);
220
- if (det == 0.0f)
221
- return;
222
- float det_inv = 1.f / det;
223
- float3 conic = { cov.z * det_inv, -cov.y * det_inv, cov.x * det_inv };
224
-
225
- // Compute extent in screen space (by finding eigenvalues of
226
- // 2D covariance matrix). Use extent to compute a bounding rectangle
227
- // of screen-space tiles that this Gaussian overlaps with. Quit if
228
- // rectangle covers 0 tiles.
229
- float mid = 0.5f * (cov.x + cov.z);
230
- float lambda1 = mid + sqrt(max(0.1f, mid * mid - det));
231
- float lambda2 = mid - sqrt(max(0.1f, mid * mid - det));
232
- float my_radius = ceil(3.f * sqrt(max(lambda1, lambda2)));
233
- float2 point_image = { ndc2Pix(p_proj.x, W), ndc2Pix(p_proj.y, H) };
234
- uint2 rect_min, rect_max;
235
- getRect(point_image, my_radius, rect_min, rect_max, grid);
236
- if ((rect_max.x - rect_min.x) * (rect_max.y - rect_min.y) == 0)
237
- return;
238
-
239
- // If colors have been precomputed, use them, otherwise convert
240
- // spherical harmonics coefficients to RGB color.
241
- if (colors_precomp == nullptr)
242
- {
243
- glm::vec3 result = computeColorFromSH(idx, D, M, (glm::vec3*)orig_points, *cam_pos, shs, clamped);
244
- rgb[idx * C + 0] = result.x;
245
- rgb[idx * C + 1] = result.y;
246
- rgb[idx * C + 2] = result.z;
247
- }
248
-
249
- // Store some useful helper data for the next steps.
250
- depths[idx] = p_view.z;
251
- radii[idx] = my_radius;
252
- points_xy_image[idx] = point_image;
253
- // Inverse 2D covariance and opacity neatly pack into one float4
254
- conic_opacity[idx] = { conic.x, conic.y, conic.z, opacities[idx] };
255
- tiles_touched[idx] = (rect_max.y - rect_min.y) * (rect_max.x - rect_min.x);
256
- }
257
-
258
- // Main rasterization method. Collaboratively works on one tile per
259
- // block, each thread treats one pixel. Alternates between fetching
260
- // and rasterizing data.
261
- template <uint32_t CHANNELS>
262
- __global__ void __launch_bounds__(BLOCK_X * BLOCK_Y)
263
- renderCUDA(
264
- const uint2* __restrict__ ranges,
265
- const uint32_t* __restrict__ point_list,
266
- int W, int H,
267
- const float2* __restrict__ points_xy_image,
268
- const float* __restrict__ features,
269
- const float4* __restrict__ conic_opacity,
270
- float* __restrict__ final_T,
271
- uint32_t* __restrict__ n_contrib,
272
- const float* __restrict__ bg_color,
273
- float* __restrict__ out_color)
274
- {
275
- // Identify current tile and associated min/max pixel range.
276
- auto block = cg::this_thread_block();
277
- uint32_t horizontal_blocks = (W + BLOCK_X - 1) / BLOCK_X;
278
- uint2 pix_min = { block.group_index().x * BLOCK_X, block.group_index().y * BLOCK_Y };
279
- uint2 pix_max = { min(pix_min.x + BLOCK_X, W), min(pix_min.y + BLOCK_Y , H) };
280
- uint2 pix = { pix_min.x + block.thread_index().x, pix_min.y + block.thread_index().y };
281
- uint32_t pix_id = W * pix.y + pix.x;
282
- float2 pixf = { (float)pix.x, (float)pix.y };
283
-
284
- // Check if this thread is associated with a valid pixel or outside.
285
- bool inside = pix.x < W&& pix.y < H;
286
- // Done threads can help with fetching, but don't rasterize
287
- bool done = !inside;
288
-
289
- // Load start/end range of IDs to process in bit sorted list.
290
- uint2 range = ranges[block.group_index().y * horizontal_blocks + block.group_index().x];
291
- const int rounds = ((range.y - range.x + BLOCK_SIZE - 1) / BLOCK_SIZE);
292
- int toDo = range.y - range.x;
293
-
294
- // Allocate storage for batches of collectively fetched data.
295
- __shared__ int collected_id[BLOCK_SIZE];
296
- __shared__ float2 collected_xy[BLOCK_SIZE];
297
- __shared__ float4 collected_conic_opacity[BLOCK_SIZE];
298
-
299
- // Initialize helper variables
300
- float T = 1.0f;
301
- uint32_t contributor = 0;
302
- uint32_t last_contributor = 0;
303
- float C[CHANNELS] = { 0 };
304
-
305
- // Iterate over batches until all done or range is complete
306
- for (int i = 0; i < rounds; i++, toDo -= BLOCK_SIZE)
307
- {
308
- // End if entire block votes that it is done rasterizing
309
- int num_done = __syncthreads_count(done);
310
- if (num_done == BLOCK_SIZE)
311
- break;
312
-
313
- // Collectively fetch per-Gaussian data from global to shared
314
- int progress = i * BLOCK_SIZE + block.thread_rank();
315
- if (range.x + progress < range.y)
316
- {
317
- int coll_id = point_list[range.x + progress];
318
- collected_id[block.thread_rank()] = coll_id;
319
- collected_xy[block.thread_rank()] = points_xy_image[coll_id];
320
- collected_conic_opacity[block.thread_rank()] = conic_opacity[coll_id];
321
- }
322
- block.sync();
323
-
324
- // Iterate over current batch
325
- for (int j = 0; !done && j < min(BLOCK_SIZE, toDo); j++)
326
- {
327
- // Keep track of current position in range
328
- contributor++;
329
-
330
- // Resample using conic matrix (cf. "Surface
331
- // Splatting" by Zwicker et al., 2001)
332
- float2 xy = collected_xy[j];
333
- float2 d = { xy.x - pixf.x, xy.y - pixf.y };
334
- float4 con_o = collected_conic_opacity[j];
335
- float power = -0.5f * (con_o.x * d.x * d.x + con_o.z * d.y * d.y) - con_o.y * d.x * d.y;
336
- if (power > 0.0f)
337
- continue;
338
-
339
- // Eq. (2) from 3D Gaussian splatting paper.
340
- // Obtain alpha by multiplying with Gaussian opacity
341
- // and its exponential falloff from mean.
342
- // Avoid numerical instabilities (see paper appendix).
343
- float alpha = min(0.99f, con_o.w * exp(power));
344
- if (alpha < 1.0f / 255.0f)
345
- continue;
346
- float test_T = T * (1 - alpha);
347
- if (test_T < 0.0001f)
348
- {
349
- done = true;
350
- continue;
351
- }
352
-
353
- // Eq. (3) from 3D Gaussian splatting paper.
354
- for (int ch = 0; ch < CHANNELS; ch++)
355
- C[ch] += features[collected_id[j] * CHANNELS + ch] * alpha * T;
356
-
357
- T = test_T;
358
-
359
- // Keep track of last range entry to update this
360
- // pixel.
361
- last_contributor = contributor;
362
- }
363
- }
364
-
365
- // All threads that treat valid pixel write out their final
366
- // rendering data to the frame and auxiliary buffers.
367
- if (inside)
368
- {
369
- final_T[pix_id] = T;
370
- n_contrib[pix_id] = last_contributor;
371
- for (int ch = 0; ch < CHANNELS; ch++)
372
- out_color[ch * H * W + pix_id] = C[ch] + T * bg_color[ch];
373
- }
374
- }
375
-
376
- void FORWARD::render(
377
- const dim3 grid, dim3 block,
378
- const uint2* ranges,
379
- const uint32_t* point_list,
380
- int W, int H,
381
- const float2* means2D,
382
- const float* colors,
383
- const float4* conic_opacity,
384
- float* final_T,
385
- uint32_t* n_contrib,
386
- const float* bg_color,
387
- float* out_color)
388
- {
389
- renderCUDA<NUM_CHANNELS> << <grid, block >> > (
390
- ranges,
391
- point_list,
392
- W, H,
393
- means2D,
394
- colors,
395
- conic_opacity,
396
- final_T,
397
- n_contrib,
398
- bg_color,
399
- out_color);
400
- }
401
-
402
- void FORWARD::preprocess(int P, int D, int M,
403
- const float* means3D,
404
- const glm::vec3* scales,
405
- const float scale_modifier,
406
- const glm::vec4* rotations,
407
- const float* opacities,
408
- const float* shs,
409
- bool* clamped,
410
- const float* cov3D_precomp,
411
- const float* colors_precomp,
412
- const float* viewmatrix,
413
- const float* projmatrix,
414
- const glm::vec3* cam_pos,
415
- const int W, int H,
416
- const float focal_x, float focal_y,
417
- const float tan_fovx, float tan_fovy,
418
- int* radii,
419
- float2* means2D,
420
- float* depths,
421
- float* cov3Ds,
422
- float* rgb,
423
- float4* conic_opacity,
424
- const dim3 grid,
425
- uint32_t* tiles_touched,
426
- bool prefiltered)
427
- {
428
- preprocessCUDA<NUM_CHANNELS> << <(P + 255) / 256, 256 >> > (
429
- P, D, M,
430
- means3D,
431
- scales,
432
- scale_modifier,
433
- rotations,
434
- opacities,
435
- shs,
436
- clamped,
437
- cov3D_precomp,
438
- colors_precomp,
439
- viewmatrix,
440
- projmatrix,
441
- cam_pos,
442
- W, H,
443
- tan_fovx, tan_fovy,
444
- focal_x, focal_y,
445
- radii,
446
- means2D,
447
- depths,
448
- cov3Ds,
449
- rgb,
450
- conic_opacity,
451
- grid,
452
- tiles_touched,
453
- prefiltered
454
- );
455
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/forward.h DELETED
@@ -1,66 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #ifndef CUDA_RASTERIZER_FORWARD_H_INCLUDED
13
- #define CUDA_RASTERIZER_FORWARD_H_INCLUDED
14
-
15
- #include <cuda.h>
16
- #include "cuda_runtime.h"
17
- #include "device_launch_parameters.h"
18
- #define GLM_FORCE_CUDA
19
- #include <glm/glm.hpp>
20
-
21
- namespace FORWARD
22
- {
23
- // Perform initial steps for each Gaussian prior to rasterization.
24
- void preprocess(int P, int D, int M,
25
- const float* orig_points,
26
- const glm::vec3* scales,
27
- const float scale_modifier,
28
- const glm::vec4* rotations,
29
- const float* opacities,
30
- const float* shs,
31
- bool* clamped,
32
- const float* cov3D_precomp,
33
- const float* colors_precomp,
34
- const float* viewmatrix,
35
- const float* projmatrix,
36
- const glm::vec3* cam_pos,
37
- const int W, int H,
38
- const float focal_x, float focal_y,
39
- const float tan_fovx, float tan_fovy,
40
- int* radii,
41
- float2* points_xy_image,
42
- float* depths,
43
- float* cov3Ds,
44
- float* colors,
45
- float4* conic_opacity,
46
- const dim3 grid,
47
- uint32_t* tiles_touched,
48
- bool prefiltered);
49
-
50
- // Main rasterization method.
51
- void render(
52
- const dim3 grid, dim3 block,
53
- const uint2* ranges,
54
- const uint32_t* point_list,
55
- int W, int H,
56
- const float2* points_xy_image,
57
- const float* features,
58
- const float4* conic_opacity,
59
- float* final_T,
60
- uint32_t* n_contrib,
61
- const float* bg_color,
62
- float* out_color);
63
- }
64
-
65
-
66
- #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer.h DELETED
@@ -1,88 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #ifndef CUDA_RASTERIZER_H_INCLUDED
13
- #define CUDA_RASTERIZER_H_INCLUDED
14
-
15
- #include <vector>
16
- #include <functional>
17
-
18
- namespace CudaRasterizer
19
- {
20
- class Rasterizer
21
- {
22
- public:
23
-
24
- static void markVisible(
25
- int P,
26
- float* means3D,
27
- float* viewmatrix,
28
- float* projmatrix,
29
- bool* present);
30
-
31
- static int forward(
32
- std::function<char* (size_t)> geometryBuffer,
33
- std::function<char* (size_t)> binningBuffer,
34
- std::function<char* (size_t)> imageBuffer,
35
- const int P, int D, int M,
36
- const float* background,
37
- const int width, int height,
38
- const float* means3D,
39
- const float* shs,
40
- const float* colors_precomp,
41
- const float* opacities,
42
- const float* scales,
43
- const float scale_modifier,
44
- const float* rotations,
45
- const float* cov3D_precomp,
46
- const float* viewmatrix,
47
- const float* projmatrix,
48
- const float* cam_pos,
49
- const float tan_fovx, float tan_fovy,
50
- const bool prefiltered,
51
- float* out_color,
52
- int* radii = nullptr,
53
- bool debug = false);
54
-
55
- static void backward(
56
- const int P, int D, int M, int R,
57
- const float* background,
58
- const int width, int height,
59
- const float* means3D,
60
- const float* shs,
61
- const float* colors_precomp,
62
- const float* scales,
63
- const float scale_modifier,
64
- const float* rotations,
65
- const float* cov3D_precomp,
66
- const float* viewmatrix,
67
- const float* projmatrix,
68
- const float* campos,
69
- const float tan_fovx, float tan_fovy,
70
- const int* radii,
71
- char* geom_buffer,
72
- char* binning_buffer,
73
- char* image_buffer,
74
- const float* dL_dpix,
75
- float* dL_dmean2D,
76
- float* dL_dconic,
77
- float* dL_dopacity,
78
- float* dL_dcolor,
79
- float* dL_dmean3D,
80
- float* dL_dcov3D,
81
- float* dL_dsh,
82
- float* dL_dscale,
83
- float* dL_drot,
84
- bool debug);
85
- };
86
- };
87
-
88
- #endif
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.cu DELETED
@@ -1,434 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #include "rasterizer_impl.h"
13
- #include <iostream>
14
- #include <fstream>
15
- #include <algorithm>
16
- #include <numeric>
17
- #include <cuda.h>
18
- #include "cuda_runtime.h"
19
- #include "device_launch_parameters.h"
20
- #include <cub/cub.cuh>
21
- #include <cub/device/device_radix_sort.cuh>
22
- #define GLM_FORCE_CUDA
23
- #include <glm/glm.hpp>
24
-
25
- #include <cooperative_groups.h>
26
- #include <cooperative_groups/reduce.h>
27
- namespace cg = cooperative_groups;
28
-
29
- #include "auxiliary.h"
30
- #include "forward.h"
31
- #include "backward.h"
32
-
33
- // Helper function to find the next-highest bit of the MSB
34
- // on the CPU.
35
- uint32_t getHigherMsb(uint32_t n)
36
- {
37
- uint32_t msb = sizeof(n) * 4;
38
- uint32_t step = msb;
39
- while (step > 1)
40
- {
41
- step /= 2;
42
- if (n >> msb)
43
- msb += step;
44
- else
45
- msb -= step;
46
- }
47
- if (n >> msb)
48
- msb++;
49
- return msb;
50
- }
51
-
52
- // Wrapper method to call auxiliary coarse frustum containment test.
53
- // Mark all Gaussians that pass it.
54
- __global__ void checkFrustum(int P,
55
- const float* orig_points,
56
- const float* viewmatrix,
57
- const float* projmatrix,
58
- bool* present)
59
- {
60
- auto idx = cg::this_grid().thread_rank();
61
- if (idx >= P)
62
- return;
63
-
64
- float3 p_view;
65
- present[idx] = in_frustum(idx, orig_points, viewmatrix, projmatrix, false, p_view);
66
- }
67
-
68
- // Generates one key/value pair for all Gaussian / tile overlaps.
69
- // Run once per Gaussian (1:N mapping).
70
- __global__ void duplicateWithKeys(
71
- int P,
72
- const float2* points_xy,
73
- const float* depths,
74
- const uint32_t* offsets,
75
- uint64_t* gaussian_keys_unsorted,
76
- uint32_t* gaussian_values_unsorted,
77
- int* radii,
78
- dim3 grid)
79
- {
80
- auto idx = cg::this_grid().thread_rank();
81
- if (idx >= P)
82
- return;
83
-
84
- // Generate no key/value pair for invisible Gaussians
85
- if (radii[idx] > 0)
86
- {
87
- // Find this Gaussian's offset in buffer for writing keys/values.
88
- uint32_t off = (idx == 0) ? 0 : offsets[idx - 1];
89
- uint2 rect_min, rect_max;
90
-
91
- getRect(points_xy[idx], radii[idx], rect_min, rect_max, grid);
92
-
93
- // For each tile that the bounding rect overlaps, emit a
94
- // key/value pair. The key is | tile ID | depth |,
95
- // and the value is the ID of the Gaussian. Sorting the values
96
- // with this key yields Gaussian IDs in a list, such that they
97
- // are first sorted by tile and then by depth.
98
- for (int y = rect_min.y; y < rect_max.y; y++)
99
- {
100
- for (int x = rect_min.x; x < rect_max.x; x++)
101
- {
102
- uint64_t key = y * grid.x + x;
103
- key <<= 32;
104
- key |= *((uint32_t*)&depths[idx]);
105
- gaussian_keys_unsorted[off] = key;
106
- gaussian_values_unsorted[off] = idx;
107
- off++;
108
- }
109
- }
110
- }
111
- }
112
-
113
- // Check keys to see if it is at the start/end of one tile's range in
114
- // the full sorted list. If yes, write start/end of this tile.
115
- // Run once per instanced (duplicated) Gaussian ID.
116
- __global__ void identifyTileRanges(int L, uint64_t* point_list_keys, uint2* ranges)
117
- {
118
- auto idx = cg::this_grid().thread_rank();
119
- if (idx >= L)
120
- return;
121
-
122
- // Read tile ID from key. Update start/end of tile range if at limit.
123
- uint64_t key = point_list_keys[idx];
124
- uint32_t currtile = key >> 32;
125
- if (idx == 0)
126
- ranges[currtile].x = 0;
127
- else
128
- {
129
- uint32_t prevtile = point_list_keys[idx - 1] >> 32;
130
- if (currtile != prevtile)
131
- {
132
- ranges[prevtile].y = idx;
133
- ranges[currtile].x = idx;
134
- }
135
- }
136
- if (idx == L - 1)
137
- ranges[currtile].y = L;
138
- }
139
-
140
- // Mark Gaussians as visible/invisible, based on view frustum testing
141
- void CudaRasterizer::Rasterizer::markVisible(
142
- int P,
143
- float* means3D,
144
- float* viewmatrix,
145
- float* projmatrix,
146
- bool* present)
147
- {
148
- checkFrustum << <(P + 255) / 256, 256 >> > (
149
- P,
150
- means3D,
151
- viewmatrix, projmatrix,
152
- present);
153
- }
154
-
155
- CudaRasterizer::GeometryState CudaRasterizer::GeometryState::fromChunk(char*& chunk, size_t P)
156
- {
157
- GeometryState geom;
158
- obtain(chunk, geom.depths, P, 128);
159
- obtain(chunk, geom.clamped, P * 3, 128);
160
- obtain(chunk, geom.internal_radii, P, 128);
161
- obtain(chunk, geom.means2D, P, 128);
162
- obtain(chunk, geom.cov3D, P * 6, 128);
163
- obtain(chunk, geom.conic_opacity, P, 128);
164
- obtain(chunk, geom.rgb, P * 3, 128);
165
- obtain(chunk, geom.tiles_touched, P, 128);
166
- cub::DeviceScan::InclusiveSum(nullptr, geom.scan_size, geom.tiles_touched, geom.tiles_touched, P);
167
- obtain(chunk, geom.scanning_space, geom.scan_size, 128);
168
- obtain(chunk, geom.point_offsets, P, 128);
169
- return geom;
170
- }
171
-
172
- CudaRasterizer::ImageState CudaRasterizer::ImageState::fromChunk(char*& chunk, size_t N)
173
- {
174
- ImageState img;
175
- obtain(chunk, img.accum_alpha, N, 128);
176
- obtain(chunk, img.n_contrib, N, 128);
177
- obtain(chunk, img.ranges, N, 128);
178
- return img;
179
- }
180
-
181
- CudaRasterizer::BinningState CudaRasterizer::BinningState::fromChunk(char*& chunk, size_t P)
182
- {
183
- BinningState binning;
184
- obtain(chunk, binning.point_list, P, 128);
185
- obtain(chunk, binning.point_list_unsorted, P, 128);
186
- obtain(chunk, binning.point_list_keys, P, 128);
187
- obtain(chunk, binning.point_list_keys_unsorted, P, 128);
188
- cub::DeviceRadixSort::SortPairs(
189
- nullptr, binning.sorting_size,
190
- binning.point_list_keys_unsorted, binning.point_list_keys,
191
- binning.point_list_unsorted, binning.point_list, P);
192
- obtain(chunk, binning.list_sorting_space, binning.sorting_size, 128);
193
- return binning;
194
- }
195
-
196
- // Forward rendering procedure for differentiable rasterization
197
- // of Gaussians.
198
- int CudaRasterizer::Rasterizer::forward(
199
- std::function<char* (size_t)> geometryBuffer,
200
- std::function<char* (size_t)> binningBuffer,
201
- std::function<char* (size_t)> imageBuffer,
202
- const int P, int D, int M,
203
- const float* background,
204
- const int width, int height,
205
- const float* means3D,
206
- const float* shs,
207
- const float* colors_precomp,
208
- const float* opacities,
209
- const float* scales,
210
- const float scale_modifier,
211
- const float* rotations,
212
- const float* cov3D_precomp,
213
- const float* viewmatrix,
214
- const float* projmatrix,
215
- const float* cam_pos,
216
- const float tan_fovx, float tan_fovy,
217
- const bool prefiltered,
218
- float* out_color,
219
- int* radii,
220
- bool debug)
221
- {
222
- const float focal_y = height / (2.0f * tan_fovy);
223
- const float focal_x = width / (2.0f * tan_fovx);
224
-
225
- size_t chunk_size = required<GeometryState>(P);
226
- char* chunkptr = geometryBuffer(chunk_size);
227
- GeometryState geomState = GeometryState::fromChunk(chunkptr, P);
228
-
229
- if (radii == nullptr)
230
- {
231
- radii = geomState.internal_radii;
232
- }
233
-
234
- dim3 tile_grid((width + BLOCK_X - 1) / BLOCK_X, (height + BLOCK_Y - 1) / BLOCK_Y, 1);
235
- dim3 block(BLOCK_X, BLOCK_Y, 1);
236
-
237
- // Dynamically resize image-based auxiliary buffers during training
238
- size_t img_chunk_size = required<ImageState>(width * height);
239
- char* img_chunkptr = imageBuffer(img_chunk_size);
240
- ImageState imgState = ImageState::fromChunk(img_chunkptr, width * height);
241
-
242
- if (NUM_CHANNELS != 3 && colors_precomp == nullptr)
243
- {
244
- throw std::runtime_error("For non-RGB, provide precomputed Gaussian colors!");
245
- }
246
-
247
- // Run preprocessing per-Gaussian (transformation, bounding, conversion of SHs to RGB)
248
- CHECK_CUDA(FORWARD::preprocess(
249
- P, D, M,
250
- means3D,
251
- (glm::vec3*)scales,
252
- scale_modifier,
253
- (glm::vec4*)rotations,
254
- opacities,
255
- shs,
256
- geomState.clamped,
257
- cov3D_precomp,
258
- colors_precomp,
259
- viewmatrix, projmatrix,
260
- (glm::vec3*)cam_pos,
261
- width, height,
262
- focal_x, focal_y,
263
- tan_fovx, tan_fovy,
264
- radii,
265
- geomState.means2D,
266
- geomState.depths,
267
- geomState.cov3D,
268
- geomState.rgb,
269
- geomState.conic_opacity,
270
- tile_grid,
271
- geomState.tiles_touched,
272
- prefiltered
273
- ), debug)
274
-
275
- // Compute prefix sum over full list of touched tile counts by Gaussians
276
- // E.g., [2, 3, 0, 2, 1] -> [2, 5, 5, 7, 8]
277
- CHECK_CUDA(cub::DeviceScan::InclusiveSum(geomState.scanning_space, geomState.scan_size, geomState.tiles_touched, geomState.point_offsets, P), debug)
278
-
279
- // Retrieve total number of Gaussian instances to launch and resize aux buffers
280
- int num_rendered;
281
- CHECK_CUDA(cudaMemcpy(&num_rendered, geomState.point_offsets + P - 1, sizeof(int), cudaMemcpyDeviceToHost), debug);
282
-
283
- size_t binning_chunk_size = required<BinningState>(num_rendered);
284
- char* binning_chunkptr = binningBuffer(binning_chunk_size);
285
- BinningState binningState = BinningState::fromChunk(binning_chunkptr, num_rendered);
286
-
287
- // For each instance to be rendered, produce adequate [ tile | depth ] key
288
- // and corresponding dublicated Gaussian indices to be sorted
289
- duplicateWithKeys << <(P + 255) / 256, 256 >> > (
290
- P,
291
- geomState.means2D,
292
- geomState.depths,
293
- geomState.point_offsets,
294
- binningState.point_list_keys_unsorted,
295
- binningState.point_list_unsorted,
296
- radii,
297
- tile_grid)
298
- CHECK_CUDA(, debug)
299
-
300
- int bit = getHigherMsb(tile_grid.x * tile_grid.y);
301
-
302
- // Sort complete list of (duplicated) Gaussian indices by keys
303
- CHECK_CUDA(cub::DeviceRadixSort::SortPairs(
304
- binningState.list_sorting_space,
305
- binningState.sorting_size,
306
- binningState.point_list_keys_unsorted, binningState.point_list_keys,
307
- binningState.point_list_unsorted, binningState.point_list,
308
- num_rendered, 0, 32 + bit), debug)
309
-
310
- CHECK_CUDA(cudaMemset(imgState.ranges, 0, tile_grid.x * tile_grid.y * sizeof(uint2)), debug);
311
-
312
- // Identify start and end of per-tile workloads in sorted list
313
- if (num_rendered > 0)
314
- identifyTileRanges << <(num_rendered + 255) / 256, 256 >> > (
315
- num_rendered,
316
- binningState.point_list_keys,
317
- imgState.ranges);
318
- CHECK_CUDA(, debug)
319
-
320
- // Let each tile blend its range of Gaussians independently in parallel
321
- const float* feature_ptr = colors_precomp != nullptr ? colors_precomp : geomState.rgb;
322
- CHECK_CUDA(FORWARD::render(
323
- tile_grid, block,
324
- imgState.ranges,
325
- binningState.point_list,
326
- width, height,
327
- geomState.means2D,
328
- feature_ptr,
329
- geomState.conic_opacity,
330
- imgState.accum_alpha,
331
- imgState.n_contrib,
332
- background,
333
- out_color), debug)
334
-
335
- return num_rendered;
336
- }
337
-
338
- // Produce necessary gradients for optimization, corresponding
339
- // to forward render pass
340
- void CudaRasterizer::Rasterizer::backward(
341
- const int P, int D, int M, int R,
342
- const float* background,
343
- const int width, int height,
344
- const float* means3D,
345
- const float* shs,
346
- const float* colors_precomp,
347
- const float* scales,
348
- const float scale_modifier,
349
- const float* rotations,
350
- const float* cov3D_precomp,
351
- const float* viewmatrix,
352
- const float* projmatrix,
353
- const float* campos,
354
- const float tan_fovx, float tan_fovy,
355
- const int* radii,
356
- char* geom_buffer,
357
- char* binning_buffer,
358
- char* img_buffer,
359
- const float* dL_dpix,
360
- float* dL_dmean2D,
361
- float* dL_dconic,
362
- float* dL_dopacity,
363
- float* dL_dcolor,
364
- float* dL_dmean3D,
365
- float* dL_dcov3D,
366
- float* dL_dsh,
367
- float* dL_dscale,
368
- float* dL_drot,
369
- bool debug)
370
- {
371
- GeometryState geomState = GeometryState::fromChunk(geom_buffer, P);
372
- BinningState binningState = BinningState::fromChunk(binning_buffer, R);
373
- ImageState imgState = ImageState::fromChunk(img_buffer, width * height);
374
-
375
- if (radii == nullptr)
376
- {
377
- radii = geomState.internal_radii;
378
- }
379
-
380
- const float focal_y = height / (2.0f * tan_fovy);
381
- const float focal_x = width / (2.0f * tan_fovx);
382
-
383
- const dim3 tile_grid((width + BLOCK_X - 1) / BLOCK_X, (height + BLOCK_Y - 1) / BLOCK_Y, 1);
384
- const dim3 block(BLOCK_X, BLOCK_Y, 1);
385
-
386
- // Compute loss gradients w.r.t. 2D mean position, conic matrix,
387
- // opacity and RGB of Gaussians from per-pixel loss gradients.
388
- // If we were given precomputed colors and not SHs, use them.
389
- const float* color_ptr = (colors_precomp != nullptr) ? colors_precomp : geomState.rgb;
390
- CHECK_CUDA(BACKWARD::render(
391
- tile_grid,
392
- block,
393
- imgState.ranges,
394
- binningState.point_list,
395
- width, height,
396
- background,
397
- geomState.means2D,
398
- geomState.conic_opacity,
399
- color_ptr,
400
- imgState.accum_alpha,
401
- imgState.n_contrib,
402
- dL_dpix,
403
- (float3*)dL_dmean2D,
404
- (float4*)dL_dconic,
405
- dL_dopacity,
406
- dL_dcolor), debug)
407
-
408
- // Take care of the rest of preprocessing. Was the precomputed covariance
409
- // given to us or a scales/rot pair? If precomputed, pass that. If not,
410
- // use the one we computed ourselves.
411
- const float* cov3D_ptr = (cov3D_precomp != nullptr) ? cov3D_precomp : geomState.cov3D;
412
- CHECK_CUDA(BACKWARD::preprocess(P, D, M,
413
- (float3*)means3D,
414
- radii,
415
- shs,
416
- geomState.clamped,
417
- (glm::vec3*)scales,
418
- (glm::vec4*)rotations,
419
- scale_modifier,
420
- cov3D_ptr,
421
- viewmatrix,
422
- projmatrix,
423
- focal_x, focal_y,
424
- tan_fovx, tan_fovy,
425
- (glm::vec3*)campos,
426
- (float3*)dL_dmean2D,
427
- dL_dconic,
428
- (glm::vec3*)dL_dmean3D,
429
- dL_dcolor,
430
- dL_dcov3D,
431
- dL_dsh,
432
- (glm::vec3*)dL_dscale,
433
- (glm::vec4*)dL_drot), debug)
434
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/cuda_rasterizer/rasterizer_impl.h DELETED
@@ -1,74 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #pragma once
13
-
14
- #include <iostream>
15
- #include <vector>
16
- #include "rasterizer.h"
17
- #include <cuda_runtime_api.h>
18
-
19
- namespace CudaRasterizer
20
- {
21
- template <typename T>
22
- static void obtain(char*& chunk, T*& ptr, std::size_t count, std::size_t alignment)
23
- {
24
- std::size_t offset = (reinterpret_cast<std::uintptr_t>(chunk) + alignment - 1) & ~(alignment - 1);
25
- ptr = reinterpret_cast<T*>(offset);
26
- chunk = reinterpret_cast<char*>(ptr + count);
27
- }
28
-
29
- struct GeometryState
30
- {
31
- size_t scan_size;
32
- float* depths;
33
- char* scanning_space;
34
- bool* clamped;
35
- int* internal_radii;
36
- float2* means2D;
37
- float* cov3D;
38
- float4* conic_opacity;
39
- float* rgb;
40
- uint32_t* point_offsets;
41
- uint32_t* tiles_touched;
42
-
43
- static GeometryState fromChunk(char*& chunk, size_t P);
44
- };
45
-
46
- struct ImageState
47
- {
48
- uint2* ranges;
49
- uint32_t* n_contrib;
50
- float* accum_alpha;
51
-
52
- static ImageState fromChunk(char*& chunk, size_t N);
53
- };
54
-
55
- struct BinningState
56
- {
57
- size_t sorting_size;
58
- uint64_t* point_list_keys_unsorted;
59
- uint64_t* point_list_keys;
60
- uint32_t* point_list_unsorted;
61
- uint32_t* point_list;
62
- char* list_sorting_space;
63
-
64
- static BinningState fromChunk(char*& chunk, size_t P);
65
- };
66
-
67
- template<typename T>
68
- size_t required(size_t P)
69
- {
70
- char* size = nullptr;
71
- T::fromChunk(size, P);
72
- return ((size_t)size) + 128;
73
- }
74
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/_C.cpython-39-x86_64-linux-gnu.so DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:521a1bcd74f39a7ee157dd390de342561d189241559fed7bd376b39ca4a9a7ce
3
- size 2063192
 
 
 
 
submodules/diff-gaussian-rasterization/diff_gaussian_rasterization/__init__.py DELETED
@@ -1,221 +0,0 @@
1
- #
2
- # Copyright (C) 2023, Inria
3
- # GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- # All rights reserved.
5
- #
6
- # This software is free for non-commercial, research and evaluation use
7
- # under the terms of the LICENSE.md file.
8
- #
9
- # For inquiries contact george.drettakis@inria.fr
10
- #
11
-
12
- from typing import NamedTuple
13
- import torch.nn as nn
14
- import torch
15
- from . import _C
16
-
17
- def cpu_deep_copy_tuple(input_tuple):
18
- copied_tensors = [item.cpu().clone() if isinstance(item, torch.Tensor) else item for item in input_tuple]
19
- return tuple(copied_tensors)
20
-
21
- def rasterize_gaussians(
22
- means3D,
23
- means2D,
24
- sh,
25
- colors_precomp,
26
- opacities,
27
- scales,
28
- rotations,
29
- cov3Ds_precomp,
30
- raster_settings,
31
- ):
32
- return _RasterizeGaussians.apply(
33
- means3D,
34
- means2D,
35
- sh,
36
- colors_precomp,
37
- opacities,
38
- scales,
39
- rotations,
40
- cov3Ds_precomp,
41
- raster_settings,
42
- )
43
-
44
- class _RasterizeGaussians(torch.autograd.Function):
45
- @staticmethod
46
- def forward(
47
- ctx,
48
- means3D,
49
- means2D,
50
- sh,
51
- colors_precomp,
52
- opacities,
53
- scales,
54
- rotations,
55
- cov3Ds_precomp,
56
- raster_settings,
57
- ):
58
-
59
- # Restructure arguments the way that the C++ lib expects them
60
- args = (
61
- raster_settings.bg,
62
- means3D,
63
- colors_precomp,
64
- opacities,
65
- scales,
66
- rotations,
67
- raster_settings.scale_modifier,
68
- cov3Ds_precomp,
69
- raster_settings.viewmatrix,
70
- raster_settings.projmatrix,
71
- raster_settings.tanfovx,
72
- raster_settings.tanfovy,
73
- raster_settings.image_height,
74
- raster_settings.image_width,
75
- sh,
76
- raster_settings.sh_degree,
77
- raster_settings.campos,
78
- raster_settings.prefiltered,
79
- raster_settings.debug
80
- )
81
-
82
- # Invoke C++/CUDA rasterizer
83
- if raster_settings.debug:
84
- cpu_args = cpu_deep_copy_tuple(args) # Copy them before they can be corrupted
85
- try:
86
- num_rendered, color, radii, geomBuffer, binningBuffer, imgBuffer = _C.rasterize_gaussians(*args)
87
- except Exception as ex:
88
- torch.save(cpu_args, "snapshot_fw.dump")
89
- print("\nAn error occured in forward. Please forward snapshot_fw.dump for debugging.")
90
- raise ex
91
- else:
92
- num_rendered, color, radii, geomBuffer, binningBuffer, imgBuffer = _C.rasterize_gaussians(*args)
93
-
94
- # Keep relevant tensors for backward
95
- ctx.raster_settings = raster_settings
96
- ctx.num_rendered = num_rendered
97
- ctx.save_for_backward(colors_precomp, means3D, scales, rotations, cov3Ds_precomp, radii, sh, geomBuffer, binningBuffer, imgBuffer)
98
- return color, radii
99
-
100
- @staticmethod
101
- def backward(ctx, grad_out_color, _):
102
-
103
- # Restore necessary values from context
104
- num_rendered = ctx.num_rendered
105
- raster_settings = ctx.raster_settings
106
- colors_precomp, means3D, scales, rotations, cov3Ds_precomp, radii, sh, geomBuffer, binningBuffer, imgBuffer = ctx.saved_tensors
107
-
108
- # Restructure args as C++ method expects them
109
- args = (raster_settings.bg,
110
- means3D,
111
- radii,
112
- colors_precomp,
113
- scales,
114
- rotations,
115
- raster_settings.scale_modifier,
116
- cov3Ds_precomp,
117
- raster_settings.viewmatrix,
118
- raster_settings.projmatrix,
119
- raster_settings.tanfovx,
120
- raster_settings.tanfovy,
121
- grad_out_color,
122
- sh,
123
- raster_settings.sh_degree,
124
- raster_settings.campos,
125
- geomBuffer,
126
- num_rendered,
127
- binningBuffer,
128
- imgBuffer,
129
- raster_settings.debug)
130
-
131
- # Compute gradients for relevant tensors by invoking backward method
132
- if raster_settings.debug:
133
- cpu_args = cpu_deep_copy_tuple(args) # Copy them before they can be corrupted
134
- try:
135
- grad_means2D, grad_colors_precomp, grad_opacities, grad_means3D, grad_cov3Ds_precomp, grad_sh, grad_scales, grad_rotations = _C.rasterize_gaussians_backward(*args)
136
- except Exception as ex:
137
- torch.save(cpu_args, "snapshot_bw.dump")
138
- print("\nAn error occured in backward. Writing snapshot_bw.dump for debugging.\n")
139
- raise ex
140
- else:
141
- grad_means2D, grad_colors_precomp, grad_opacities, grad_means3D, grad_cov3Ds_precomp, grad_sh, grad_scales, grad_rotations = _C.rasterize_gaussians_backward(*args)
142
-
143
- grads = (
144
- grad_means3D,
145
- grad_means2D,
146
- grad_sh,
147
- grad_colors_precomp,
148
- grad_opacities,
149
- grad_scales,
150
- grad_rotations,
151
- grad_cov3Ds_precomp,
152
- None,
153
- )
154
-
155
- return grads
156
-
157
- class GaussianRasterizationSettings(NamedTuple):
158
- image_height: int
159
- image_width: int
160
- tanfovx : float
161
- tanfovy : float
162
- bg : torch.Tensor
163
- scale_modifier : float
164
- viewmatrix : torch.Tensor
165
- projmatrix : torch.Tensor
166
- sh_degree : int
167
- campos : torch.Tensor
168
- prefiltered : bool
169
- debug : bool
170
-
171
- class GaussianRasterizer(nn.Module):
172
- def __init__(self, raster_settings):
173
- super().__init__()
174
- self.raster_settings = raster_settings
175
-
176
- def markVisible(self, positions):
177
- # Mark visible points (based on frustum culling for camera) with a boolean
178
- with torch.no_grad():
179
- raster_settings = self.raster_settings
180
- visible = _C.mark_visible(
181
- positions,
182
- raster_settings.viewmatrix,
183
- raster_settings.projmatrix)
184
-
185
- return visible
186
-
187
- def forward(self, means3D, means2D, opacities, shs = None, colors_precomp = None, scales = None, rotations = None, cov3D_precomp = None):
188
-
189
- raster_settings = self.raster_settings
190
-
191
- if (shs is None and colors_precomp is None) or (shs is not None and colors_precomp is not None):
192
- raise Exception('Please provide excatly one of either SHs or precomputed colors!')
193
-
194
- if ((scales is None or rotations is None) and cov3D_precomp is None) or ((scales is not None or rotations is not None) and cov3D_precomp is not None):
195
- raise Exception('Please provide exactly one of either scale/rotation pair or precomputed 3D covariance!')
196
-
197
- if shs is None:
198
- shs = torch.Tensor([])
199
- if colors_precomp is None:
200
- colors_precomp = torch.Tensor([])
201
-
202
- if scales is None:
203
- scales = torch.Tensor([])
204
- if rotations is None:
205
- rotations = torch.Tensor([])
206
- if cov3D_precomp is None:
207
- cov3D_precomp = torch.Tensor([])
208
-
209
- # Invoke C++/CUDA rasterization routine
210
- return rasterize_gaussians(
211
- means3D,
212
- means2D,
213
- shs,
214
- colors_precomp,
215
- opacities,
216
- scales,
217
- rotations,
218
- cov3D_precomp,
219
- raster_settings,
220
- )
221
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/ext.cpp DELETED
@@ -1,19 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #include <torch/extension.h>
13
- #include "rasterize_points.h"
14
-
15
- PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) {
16
- m.def("rasterize_gaussians", &RasterizeGaussiansCUDA);
17
- m.def("rasterize_gaussians_backward", &RasterizeGaussiansBackwardCUDA);
18
- m.def("mark_visible", &markVisible);
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/rasterize_points.cu DELETED
@@ -1,217 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #include <math.h>
13
- #include <torch/extension.h>
14
- #include <cstdio>
15
- #include <sstream>
16
- #include <iostream>
17
- #include <tuple>
18
- #include <stdio.h>
19
- #include <cuda_runtime_api.h>
20
- #include <memory>
21
- #include "cuda_rasterizer/config.h"
22
- #include "cuda_rasterizer/rasterizer.h"
23
- #include <fstream>
24
- #include <string>
25
- #include <functional>
26
-
27
- std::function<char*(size_t N)> resizeFunctional(torch::Tensor& t) {
28
- auto lambda = [&t](size_t N) {
29
- t.resize_({(long long)N});
30
- return reinterpret_cast<char*>(t.contiguous().data_ptr());
31
- };
32
- return lambda;
33
- }
34
-
35
- std::tuple<int, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
36
- RasterizeGaussiansCUDA(
37
- const torch::Tensor& background,
38
- const torch::Tensor& means3D,
39
- const torch::Tensor& colors,
40
- const torch::Tensor& opacity,
41
- const torch::Tensor& scales,
42
- const torch::Tensor& rotations,
43
- const float scale_modifier,
44
- const torch::Tensor& cov3D_precomp,
45
- const torch::Tensor& viewmatrix,
46
- const torch::Tensor& projmatrix,
47
- const float tan_fovx,
48
- const float tan_fovy,
49
- const int image_height,
50
- const int image_width,
51
- const torch::Tensor& sh,
52
- const int degree,
53
- const torch::Tensor& campos,
54
- const bool prefiltered,
55
- const bool debug)
56
- {
57
- if (means3D.ndimension() != 2 || means3D.size(1) != 3) {
58
- AT_ERROR("means3D must have dimensions (num_points, 3)");
59
- }
60
-
61
- const int P = means3D.size(0);
62
- const int H = image_height;
63
- const int W = image_width;
64
-
65
- auto int_opts = means3D.options().dtype(torch::kInt32);
66
- auto float_opts = means3D.options().dtype(torch::kFloat32);
67
-
68
- torch::Tensor out_color = torch::full({NUM_CHANNELS, H, W}, 0.0, float_opts);
69
- torch::Tensor radii = torch::full({P}, 0, means3D.options().dtype(torch::kInt32));
70
-
71
- torch::Device device(torch::kCUDA);
72
- torch::TensorOptions options(torch::kByte);
73
- torch::Tensor geomBuffer = torch::empty({0}, options.device(device));
74
- torch::Tensor binningBuffer = torch::empty({0}, options.device(device));
75
- torch::Tensor imgBuffer = torch::empty({0}, options.device(device));
76
- std::function<char*(size_t)> geomFunc = resizeFunctional(geomBuffer);
77
- std::function<char*(size_t)> binningFunc = resizeFunctional(binningBuffer);
78
- std::function<char*(size_t)> imgFunc = resizeFunctional(imgBuffer);
79
-
80
- int rendered = 0;
81
- if(P != 0)
82
- {
83
- int M = 0;
84
- if(sh.size(0) != 0)
85
- {
86
- M = sh.size(1);
87
- }
88
-
89
- rendered = CudaRasterizer::Rasterizer::forward(
90
- geomFunc,
91
- binningFunc,
92
- imgFunc,
93
- P, degree, M,
94
- background.contiguous().data<float>(),
95
- W, H,
96
- means3D.contiguous().data<float>(),
97
- sh.contiguous().data_ptr<float>(),
98
- colors.contiguous().data<float>(),
99
- opacity.contiguous().data<float>(),
100
- scales.contiguous().data_ptr<float>(),
101
- scale_modifier,
102
- rotations.contiguous().data_ptr<float>(),
103
- cov3D_precomp.contiguous().data<float>(),
104
- viewmatrix.contiguous().data<float>(),
105
- projmatrix.contiguous().data<float>(),
106
- campos.contiguous().data<float>(),
107
- tan_fovx,
108
- tan_fovy,
109
- prefiltered,
110
- out_color.contiguous().data<float>(),
111
- radii.contiguous().data<int>(),
112
- debug);
113
- }
114
- return std::make_tuple(rendered, out_color, radii, geomBuffer, binningBuffer, imgBuffer);
115
- }
116
-
117
- std::tuple<torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
118
- RasterizeGaussiansBackwardCUDA(
119
- const torch::Tensor& background,
120
- const torch::Tensor& means3D,
121
- const torch::Tensor& radii,
122
- const torch::Tensor& colors,
123
- const torch::Tensor& scales,
124
- const torch::Tensor& rotations,
125
- const float scale_modifier,
126
- const torch::Tensor& cov3D_precomp,
127
- const torch::Tensor& viewmatrix,
128
- const torch::Tensor& projmatrix,
129
- const float tan_fovx,
130
- const float tan_fovy,
131
- const torch::Tensor& dL_dout_color,
132
- const torch::Tensor& sh,
133
- const int degree,
134
- const torch::Tensor& campos,
135
- const torch::Tensor& geomBuffer,
136
- const int R,
137
- const torch::Tensor& binningBuffer,
138
- const torch::Tensor& imageBuffer,
139
- const bool debug)
140
- {
141
- const int P = means3D.size(0);
142
- const int H = dL_dout_color.size(1);
143
- const int W = dL_dout_color.size(2);
144
-
145
- int M = 0;
146
- if(sh.size(0) != 0)
147
- {
148
- M = sh.size(1);
149
- }
150
-
151
- torch::Tensor dL_dmeans3D = torch::zeros({P, 3}, means3D.options());
152
- torch::Tensor dL_dmeans2D = torch::zeros({P, 3}, means3D.options());
153
- torch::Tensor dL_dcolors = torch::zeros({P, NUM_CHANNELS}, means3D.options());
154
- torch::Tensor dL_dconic = torch::zeros({P, 2, 2}, means3D.options());
155
- torch::Tensor dL_dopacity = torch::zeros({P, 1}, means3D.options());
156
- torch::Tensor dL_dcov3D = torch::zeros({P, 6}, means3D.options());
157
- torch::Tensor dL_dsh = torch::zeros({P, M, 3}, means3D.options());
158
- torch::Tensor dL_dscales = torch::zeros({P, 3}, means3D.options());
159
- torch::Tensor dL_drotations = torch::zeros({P, 4}, means3D.options());
160
-
161
- if(P != 0)
162
- {
163
- CudaRasterizer::Rasterizer::backward(P, degree, M, R,
164
- background.contiguous().data<float>(),
165
- W, H,
166
- means3D.contiguous().data<float>(),
167
- sh.contiguous().data<float>(),
168
- colors.contiguous().data<float>(),
169
- scales.data_ptr<float>(),
170
- scale_modifier,
171
- rotations.data_ptr<float>(),
172
- cov3D_precomp.contiguous().data<float>(),
173
- viewmatrix.contiguous().data<float>(),
174
- projmatrix.contiguous().data<float>(),
175
- campos.contiguous().data<float>(),
176
- tan_fovx,
177
- tan_fovy,
178
- radii.contiguous().data<int>(),
179
- reinterpret_cast<char*>(geomBuffer.contiguous().data_ptr()),
180
- reinterpret_cast<char*>(binningBuffer.contiguous().data_ptr()),
181
- reinterpret_cast<char*>(imageBuffer.contiguous().data_ptr()),
182
- dL_dout_color.contiguous().data<float>(),
183
- dL_dmeans2D.contiguous().data<float>(),
184
- dL_dconic.contiguous().data<float>(),
185
- dL_dopacity.contiguous().data<float>(),
186
- dL_dcolors.contiguous().data<float>(),
187
- dL_dmeans3D.contiguous().data<float>(),
188
- dL_dcov3D.contiguous().data<float>(),
189
- dL_dsh.contiguous().data<float>(),
190
- dL_dscales.contiguous().data<float>(),
191
- dL_drotations.contiguous().data<float>(),
192
- debug);
193
- }
194
-
195
- return std::make_tuple(dL_dmeans2D, dL_dcolors, dL_dopacity, dL_dmeans3D, dL_dcov3D, dL_dsh, dL_dscales, dL_drotations);
196
- }
197
-
198
- torch::Tensor markVisible(
199
- torch::Tensor& means3D,
200
- torch::Tensor& viewmatrix,
201
- torch::Tensor& projmatrix)
202
- {
203
- const int P = means3D.size(0);
204
-
205
- torch::Tensor present = torch::full({P}, false, means3D.options().dtype(at::kBool));
206
-
207
- if(P != 0)
208
- {
209
- CudaRasterizer::Rasterizer::markVisible(P,
210
- means3D.contiguous().data<float>(),
211
- viewmatrix.contiguous().data<float>(),
212
- projmatrix.contiguous().data<float>(),
213
- present.contiguous().data<bool>());
214
- }
215
-
216
- return present;
217
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/rasterize_points.h DELETED
@@ -1,67 +0,0 @@
1
- /*
2
- * Copyright (C) 2023, Inria
3
- * GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- * All rights reserved.
5
- *
6
- * This software is free for non-commercial, research and evaluation use
7
- * under the terms of the LICENSE.md file.
8
- *
9
- * For inquiries contact george.drettakis@inria.fr
10
- */
11
-
12
- #pragma once
13
- #include <torch/extension.h>
14
- #include <cstdio>
15
- #include <tuple>
16
- #include <string>
17
-
18
- std::tuple<int, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
19
- RasterizeGaussiansCUDA(
20
- const torch::Tensor& background,
21
- const torch::Tensor& means3D,
22
- const torch::Tensor& colors,
23
- const torch::Tensor& opacity,
24
- const torch::Tensor& scales,
25
- const torch::Tensor& rotations,
26
- const float scale_modifier,
27
- const torch::Tensor& cov3D_precomp,
28
- const torch::Tensor& viewmatrix,
29
- const torch::Tensor& projmatrix,
30
- const float tan_fovx,
31
- const float tan_fovy,
32
- const int image_height,
33
- const int image_width,
34
- const torch::Tensor& sh,
35
- const int degree,
36
- const torch::Tensor& campos,
37
- const bool prefiltered,
38
- const bool debug);
39
-
40
- std::tuple<torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
41
- RasterizeGaussiansBackwardCUDA(
42
- const torch::Tensor& background,
43
- const torch::Tensor& means3D,
44
- const torch::Tensor& radii,
45
- const torch::Tensor& colors,
46
- const torch::Tensor& scales,
47
- const torch::Tensor& rotations,
48
- const float scale_modifier,
49
- const torch::Tensor& cov3D_precomp,
50
- const torch::Tensor& viewmatrix,
51
- const torch::Tensor& projmatrix,
52
- const float tan_fovx,
53
- const float tan_fovy,
54
- const torch::Tensor& dL_dout_color,
55
- const torch::Tensor& sh,
56
- const int degree,
57
- const torch::Tensor& campos,
58
- const torch::Tensor& geomBuffer,
59
- const int R,
60
- const torch::Tensor& binningBuffer,
61
- const torch::Tensor& imageBuffer,
62
- const bool debug);
63
-
64
- torch::Tensor markVisible(
65
- torch::Tensor& means3D,
66
- torch::Tensor& viewmatrix,
67
- torch::Tensor& projmatrix);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/setup.py DELETED
@@ -1,34 +0,0 @@
1
- #
2
- # Copyright (C) 2023, Inria
3
- # GRAPHDECO research group, https://team.inria.fr/graphdeco
4
- # All rights reserved.
5
- #
6
- # This software is free for non-commercial, research and evaluation use
7
- # under the terms of the LICENSE.md file.
8
- #
9
- # For inquiries contact george.drettakis@inria.fr
10
- #
11
-
12
- from setuptools import setup
13
- from torch.utils.cpp_extension import CUDAExtension, BuildExtension
14
- import os
15
- os.path.dirname(os.path.abspath(__file__))
16
-
17
- setup(
18
- name="diff_gaussian_rasterization",
19
- packages=['diff_gaussian_rasterization'],
20
- ext_modules=[
21
- CUDAExtension(
22
- name="diff_gaussian_rasterization._C",
23
- sources=[
24
- "cuda_rasterizer/rasterizer_impl.cu",
25
- "cuda_rasterizer/forward.cu",
26
- "cuda_rasterizer/backward.cu",
27
- "rasterize_points.cu",
28
- "ext.cpp"],
29
- extra_compile_args={"nvcc": ["-I" + os.path.join(os.path.dirname(os.path.abspath(__file__)), "third_party/glm/")]})
30
- ],
31
- cmdclass={
32
- 'build_ext': BuildExtension
33
- }
34
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/.appveyor.yml DELETED
@@ -1,92 +0,0 @@
1
- shallow_clone: true
2
-
3
- platform:
4
- - x86
5
- - x64
6
-
7
- configuration:
8
- - Debug
9
- - Release
10
-
11
- image:
12
- - Visual Studio 2013
13
- - Visual Studio 2015
14
- - Visual Studio 2017
15
- - Visual Studio 2019
16
-
17
- environment:
18
- matrix:
19
- - GLM_ARGUMENTS: -DGLM_TEST_FORCE_PURE=ON
20
- - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON
21
- - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON
22
- - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
23
- - GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
24
-
25
- matrix:
26
- exclude:
27
- - image: Visual Studio 2013
28
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON
29
- - image: Visual Studio 2013
30
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
31
- - image: Visual Studio 2013
32
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
33
- - image: Visual Studio 2013
34
- configuration: Debug
35
- - image: Visual Studio 2015
36
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_SSE2=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON
37
- - image: Visual Studio 2015
38
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_14=ON
39
- - image: Visual Studio 2015
40
- GLM_ARGUMENTS: -DGLM_TEST_ENABLE_SIMD_AVX=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_CXX_17=ON
41
- - image: Visual Studio 2015
42
- platform: x86
43
- - image: Visual Studio 2015
44
- configuration: Debug
45
- - image: Visual Studio 2017
46
- platform: x86
47
- - image: Visual Studio 2017
48
- configuration: Debug
49
- - image: Visual Studio 2019
50
- platform: x64
51
-
52
- branches:
53
- only:
54
- - master
55
-
56
- before_build:
57
- - ps: |
58
- mkdir build
59
- cd build
60
-
61
- if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2013") {
62
- $env:generator="Visual Studio 12 2013"
63
- }
64
- if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2015") {
65
- $env:generator="Visual Studio 14 2015"
66
- }
67
- if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2017") {
68
- $env:generator="Visual Studio 15 2017"
69
- }
70
- if ("$env:APPVEYOR_JOB_NAME" -match "Image: Visual Studio 2019") {
71
- $env:generator="Visual Studio 16 2019"
72
- }
73
- if ($env:PLATFORM -eq "x64") {
74
- $env:generator="$env:generator Win64"
75
- }
76
- echo generator="$env:generator"
77
- cmake .. -G "$env:generator" -DCMAKE_INSTALL_PREFIX="$env:APPVEYOR_BUILD_FOLDER/install" -DGLM_QUIET=ON -DGLM_TEST_ENABLE=ON "$env:GLM_ARGUMENTS"
78
-
79
- build_script:
80
- - cmake --build . --parallel --config %CONFIGURATION% -- /m /v:minimal
81
- - cmake --build . --target install --parallel --config %CONFIGURATION% -- /m /v:minimal
82
-
83
- test_script:
84
- - ctest --parallel 4 --verbose -C %CONFIGURATION%
85
- - cd ..
86
- - ps: |
87
- mkdir build_test_cmake
88
- cd build_test_cmake
89
- cmake ..\test\cmake\ -G "$env:generator" -DCMAKE_PREFIX_PATH="$env:APPVEYOR_BUILD_FOLDER/install"
90
- - cmake --build . --parallel --config %CONFIGURATION% -- /m /v:minimal
91
-
92
- deploy: off
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/.gitignore DELETED
@@ -1,61 +0,0 @@
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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/.travis.yml DELETED
@@ -1,388 +0,0 @@
1
- language: cpp
2
-
3
- branches:
4
- only:
5
- - master
6
- - stable
7
-
8
- jobs:
9
- include:
10
- - name: "Xcode 7.3 C++98 pure release"
11
- os: osx
12
- osx_image: xcode7.3
13
- env:
14
- - MATRIX_EVAL=""
15
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON"
16
-
17
- - name: "Xcode 7.3 C++98 sse2 release"
18
- os: osx
19
- osx_image: xcode7.3
20
- env:
21
- - MATRIX_EVAL=""
22
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
23
-
24
- - name: "Xcode 7.3 C++98 ms release"
25
- os: osx
26
- osx_image: xcode7.3
27
- env:
28
- - MATRIX_EVAL=""
29
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON"
30
-
31
- - name: "XCode 7.3 C++11 pure release"
32
- os: osx
33
- osx_image: xcode7.3
34
- env:
35
- - MATRIX_EVAL=""
36
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON"
37
-
38
- - name: "XCode 7.3 C++11 sse2 release"
39
- os: osx
40
- osx_image: xcode7.3
41
- env:
42
- - MATRIX_EVAL=""
43
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON"
44
-
45
- - name: "XCode 10.3 C++11 sse2 release"
46
- os: osx
47
- osx_image: xcode10.3
48
- env:
49
- - MATRIX_EVAL=""
50
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON"
51
-
52
- - name: "XCode 12.2 C++11 sse2 release"
53
- os: osx
54
- osx_image: xcode12.2
55
- env:
56
- - MATRIX_EVAL=""
57
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON"
58
- - CTEST_ENV="--parallel 4 --output-on-failure"
59
- - CMAKE_ENV="--parallel"
60
-
61
- - name: "XCode 12.2 C++11 sse2 debug"
62
- os: osx
63
- osx_image: xcode12.2
64
- env:
65
- - MATRIX_EVAL=""
66
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON"
67
- - CTEST_ENV="--parallel 4 --output-on-failure"
68
- - CMAKE_ENV="--parallel"
69
-
70
- - name: "XCode 12.2 C++11 avx debug"
71
- os: osx
72
- osx_image: xcode12.2
73
- env:
74
- - MATRIX_EVAL=""
75
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON"
76
- - CTEST_ENV="--parallel 4 --output-on-failure"
77
- - CMAKE_ENV="--parallel"
78
-
79
- - name: "XCode 12.2 C++14 avx debug"
80
- os: osx
81
- osx_image: xcode12.2
82
- env:
83
- - MATRIX_EVAL=""
84
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON"
85
- - CTEST_ENV="--parallel 4 --output-on-failure"
86
- - CMAKE_ENV="--parallel"
87
-
88
- - name: "XCode 12.2 C++14 pure debug"
89
- os: osx
90
- osx_image: xcode12.2
91
- env:
92
- - MATRIX_EVAL=""
93
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON"
94
- - CTEST_ENV="--parallel 4 --output-on-failure"
95
- - CMAKE_ENV="--parallel"
96
-
97
- - name: "XCode 12.2 C++17 pure debug"
98
- os: osx
99
- osx_image: xcode12.2
100
- env:
101
- - MATRIX_EVAL=""
102
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON"
103
- - CTEST_ENV="--parallel 4 --output-on-failure"
104
- - CMAKE_ENV="--parallel"
105
-
106
- - name: "XCode 12.2 C++17 sse2 debug"
107
- os: osx
108
- osx_image: xcode12.2
109
- env:
110
- - MATRIX_EVAL=""
111
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
112
- - CTEST_ENV="--parallel 4 --output-on-failure"
113
- - CMAKE_ENV="--parallel"
114
-
115
- - name: "XCode 12.2 C++17 sse2 release"
116
- os: osx
117
- osx_image: xcode12.2
118
- env:
119
- - MATRIX_EVAL=""
120
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
121
- - CTEST_ENV="--parallel 4 --output-on-failure"
122
- - CMAKE_ENV="--parallel"
123
-
124
- - name: "XCode 12.2 C++17 avx release"
125
- os: osx
126
- osx_image: xcode12.2
127
- env:
128
- - MATRIX_EVAL=""
129
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON"
130
- - CTEST_ENV="--parallel 4 --output-on-failure"
131
- - CMAKE_ENV="--parallel"
132
-
133
- - name: "GCC 4.9 C++98 pure release"
134
- os: linux
135
- dist: Xenial
136
- addons:
137
- apt:
138
- sources:
139
- - ubuntu-toolchain-r-test
140
- packages:
141
- - g++-4.9
142
- env:
143
- - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
144
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON"
145
- - CTEST_ENV="--parallel 4 --output-on-failure"
146
- - CMAKE_ENV="--parallel"
147
-
148
- - name: "GCC 4.9 C++98 pure debug"
149
- os: linux
150
- dist: Xenial
151
- addons:
152
- apt:
153
- sources:
154
- - ubuntu-toolchain-r-test
155
- packages:
156
- - g++-4.9
157
- env:
158
- - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
159
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON"
160
- - CTEST_ENV="--parallel 4 --output-on-failure"
161
- - CMAKE_ENV="--parallel"
162
-
163
- - name: "GCC 4.9 C++98 ms debug"
164
- os: linux
165
- dist: Xenial
166
- addons:
167
- apt:
168
- sources:
169
- - ubuntu-toolchain-r-test
170
- packages:
171
- - g++-4.9
172
- env:
173
- - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
174
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON"
175
- - CTEST_ENV="--parallel 4 --output-on-failure"
176
- - CMAKE_ENV="--parallel"
177
-
178
- - name: "GCC 4.9 C++11 ms debug"
179
- os: linux
180
- dist: Xenial
181
- addons:
182
- apt:
183
- sources:
184
- - ubuntu-toolchain-r-test
185
- packages:
186
- - g++-4.9
187
- env:
188
- - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
189
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON"
190
- - CTEST_ENV="--parallel 4 --output-on-failure"
191
- - CMAKE_ENV="--parallel"
192
-
193
- - name: "GCC 4.9 C++11 pure debug"
194
- os: linux
195
- dist: Xenial
196
- addons:
197
- apt:
198
- sources:
199
- - ubuntu-toolchain-r-test
200
- packages:
201
- - g++-4.9
202
- env:
203
- - MATRIX_EVAL="CC=gcc-4.9 && CXX=g++-4.9"
204
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON"
205
- - CTEST_ENV="--parallel 4 --output-on-failure"
206
- - CMAKE_ENV="--parallel"
207
-
208
- - name: "GCC 6 C++14 pure debug"
209
- os: linux
210
- dist: bionic
211
- addons:
212
- apt:
213
- sources:
214
- - ubuntu-toolchain-r-test
215
- packages:
216
- - g++-6
217
- env:
218
- - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
219
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON"
220
- - CTEST_ENV="--parallel 4 --output-on-failure"
221
- - CMAKE_ENV="--parallel"
222
-
223
- - name: "GCC 6 C++14 ms debug"
224
- os: linux
225
- dist: bionic
226
- addons:
227
- apt:
228
- sources:
229
- - ubuntu-toolchain-r-test
230
- packages:
231
- - g++-6
232
- env:
233
- - MATRIX_EVAL="CC=gcc-6 && CXX=g++-6"
234
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON"
235
- - CTEST_ENV="--parallel 4 --output-on-failure"
236
- - CMAKE_ENV="--parallel"
237
-
238
- - name: "GCC 7 C++17 ms debug"
239
- os: linux
240
- dist: bionic
241
- addons:
242
- apt:
243
- sources:
244
- - ubuntu-toolchain-r-test
245
- packages:
246
- - g++-7
247
- env:
248
- - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
249
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON"
250
- - CTEST_ENV="--parallel 4 --output-on-failure"
251
- - CMAKE_ENV="--parallel"
252
-
253
- - name: "GCC 7 C++17 pure debug"
254
- os: linux
255
- dist: bionic
256
- addons:
257
- apt:
258
- sources:
259
- - ubuntu-toolchain-r-test
260
- packages:
261
- - g++-7
262
- env:
263
- - MATRIX_EVAL="CC=gcc-7 && CXX=g++-7"
264
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON"
265
- - CTEST_ENV="--parallel 4 --output-on-failure"
266
- - CMAKE_ENV="--parallel"
267
-
268
- - name: "GCC 10 C++17 pure debug"
269
- os: linux
270
- dist: bionic
271
- addons:
272
- apt:
273
- sources:
274
- - ubuntu-toolchain-r-test
275
- packages:
276
- - g++-10
277
- env:
278
- - MATRIX_EVAL="CC=gcc-10 && CXX=g++-10"
279
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON"
280
- - CTEST_ENV="--parallel 4 --output-on-failure"
281
- - CMAKE_ENV="--parallel"
282
-
283
- - name: "GCC 10 C++17 pure release"
284
- os: linux
285
- dist: bionic
286
- addons:
287
- apt:
288
- sources:
289
- - ubuntu-toolchain-r-test
290
- packages:
291
- - g++-10
292
- env:
293
- - MATRIX_EVAL="CC=gcc-10 && CXX=g++-10"
294
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON"
295
- - CTEST_ENV="--parallel 4 --output-on-failure"
296
- - CMAKE_ENV="--parallel"
297
-
298
- - name: "Clang C++14 pure release"
299
- os: linux
300
- dist: Xenial
301
- env:
302
- - MATRIX_EVAL="CC=clang && CXX=clang++"
303
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON"
304
- - CTEST_ENV="--parallel 4 --output-on-failure"
305
- - CMAKE_ENV="--parallel"
306
-
307
- - name: "Clang C++14 pure debug"
308
- os: linux
309
- dist: Xenial
310
- env:
311
- - MATRIX_EVAL="CC=clang && CXX=clang++"
312
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_FORCE_PURE=ON"
313
- - CTEST_ENV="--parallel 4 --output-on-failure"
314
- - CMAKE_ENV="--parallel"
315
-
316
- - name: "Clang C++14 sse2 debug"
317
- os: linux
318
- dist: Xenial
319
- env:
320
- - MATRIX_EVAL="CC=clang && CXX=clang++"
321
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
322
- - CTEST_ENV="--parallel 4 --output-on-failure"
323
- - CMAKE_ENV="--parallel"
324
-
325
- - name: "Clang C++14 sse2 debug"
326
- os: linux
327
- dist: focal
328
- env:
329
- - MATRIX_EVAL="CC=clang && CXX=clang++"
330
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_14=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
331
- - CTEST_ENV="--parallel 4 --output-on-failure"
332
- - CMAKE_ENV="--parallel"
333
-
334
- - name: "Clang C++17 sse2 debug"
335
- os: linux
336
- dist: focal
337
- env:
338
- - MATRIX_EVAL="CC=clang && CXX=clang++"
339
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_SSE2=ON"
340
- - CTEST_ENV="--parallel 4 --output-on-failure"
341
- - CMAKE_ENV="--parallel"
342
-
343
- - name: "Clang C++17 avx2 debug"
344
- os: linux
345
- dist: focal
346
- env:
347
- - MATRIX_EVAL="CC=clang && CXX=clang++"
348
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_ENABLE_SIMD_AVX2=ON"
349
- - CTEST_ENV="--parallel 4 --output-on-failure"
350
- - CMAKE_ENV="--parallel"
351
-
352
- - name: "Clang C++17 pure debug"
353
- os: linux
354
- dist: focal
355
- env:
356
- - MATRIX_EVAL="CC=clang && CXX=clang++"
357
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON"
358
- - CTEST_ENV="--parallel 4 --output-on-failure"
359
- - CMAKE_ENV="--parallel"
360
-
361
- - name: "Clang C++17 pure release"
362
- os: linux
363
- dist: focal
364
- env:
365
- - MATRIX_EVAL="CC=clang && CXX=clang++"
366
- - CMAKE_BUILD_ENV="-DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_17=ON -DGLM_TEST_FORCE_PURE=ON"
367
- - CTEST_ENV="--parallel 4 --output-on-failure"
368
- - CMAKE_ENV="--parallel"
369
-
370
- before_script:
371
- - cmake --version
372
- - eval "${MATRIX_EVAL}"
373
-
374
- script:
375
- - ${CC} --version
376
- - mkdir ./build
377
- - cd ./build
378
- - cmake -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/install -DCMAKE_CXX_COMPILER=$COMPILER ${CMAKE_BUILD_ENV} ..
379
- - cmake --build . ${CMAKE_ENV}
380
- - ctest ${CTEST_ENV}
381
- - cmake --build . --target install ${CMAKE_ENV}
382
- - cd $TRAVIS_BUILD_DIR
383
- - mkdir ./build_test_cmake
384
- - cd ./build_test_cmake
385
- - cmake -DCMAKE_CXX_COMPILER=$COMPILER $TRAVIS_BUILD_DIR/test/cmake/ -DCMAKE_PREFIX_PATH=$TRAVIS_BUILD_DIR/install
386
- - cmake --build .
387
-
388
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/CMakeLists.txt DELETED
@@ -1,45 +0,0 @@
1
- cmake_minimum_required(VERSION 3.2 FATAL_ERROR)
2
- cmake_policy(VERSION 3.2)
3
-
4
-
5
- file(READ "glm/detail/setup.hpp" GLM_SETUP_FILE)
6
- string(REGEX MATCH "#define[ ]+GLM_VERSION_MAJOR[ ]+([0-9]+)" _ ${GLM_SETUP_FILE})
7
- set(GLM_VERSION_MAJOR "${CMAKE_MATCH_1}")
8
- string(REGEX MATCH "#define[ ]+GLM_VERSION_MINOR[ ]+([0-9]+)" _ ${GLM_SETUP_FILE})
9
- set(GLM_VERSION_MINOR "${CMAKE_MATCH_1}")
10
- string(REGEX MATCH "#define[ ]+GLM_VERSION_PATCH[ ]+([0-9]+)" _ ${GLM_SETUP_FILE})
11
- set(GLM_VERSION_PATCH "${CMAKE_MATCH_1}")
12
- string(REGEX MATCH "#define[ ]+GLM_VERSION_REVISION[ ]+([0-9]+)" _ ${GLM_SETUP_FILE})
13
- set(GLM_VERSION_REVISION "${CMAKE_MATCH_1}")
14
-
15
- set(GLM_VERSION ${GLM_VERSION_MAJOR}.${GLM_VERSION_MINOR}.${GLM_VERSION_PATCH}.${GLM_VERSION_REVISION})
16
- project(glm VERSION ${GLM_VERSION} LANGUAGES CXX)
17
- message(STATUS "GLM: Version " ${GLM_VERSION})
18
-
19
- add_subdirectory(glm)
20
- add_library(glm::glm ALIAS glm)
21
-
22
- if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
23
-
24
- include(CPack)
25
- install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PATTERN "CMakeLists.txt" EXCLUDE)
26
- install(EXPORT glm FILE glmConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glm NAMESPACE glm::)
27
- include(CMakePackageConfigHelpers)
28
- write_basic_package_version_file("glmConfigVersion.cmake" COMPATIBILITY AnyNewerVersion)
29
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/glm)
30
-
31
- include(CTest)
32
- if(BUILD_TESTING)
33
- add_subdirectory(test)
34
- endif()
35
-
36
- endif(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
37
-
38
- if (NOT TARGET uninstall)
39
- configure_file(cmake/cmake_uninstall.cmake.in
40
- cmake_uninstall.cmake IMMEDIATE @ONLY)
41
-
42
- add_custom_target(uninstall
43
- "${CMAKE_COMMAND}" -P
44
- "${CMAKE_BINARY_DIR}/cmake_uninstall.cmake")
45
- endif()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/cmake/cmake_uninstall.cmake.in DELETED
@@ -1,21 +0,0 @@
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()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/copying.txt DELETED
@@ -1,54 +0,0 @@
1
- ================================================================================
2
- OpenGL Mathematics (GLM)
3
- --------------------------------------------------------------------------------
4
- GLM is licensed under The Happy Bunny License or MIT License
5
-
6
- ================================================================================
7
- The Happy Bunny License (Modified MIT License)
8
- --------------------------------------------------------------------------------
9
- Copyright (c) 2005 - G-Truc Creation
10
-
11
- Permission is hereby granted, free of charge, to any person obtaining a copy
12
- of this software and associated documentation files (the "Software"), to deal
13
- in the Software without restriction, including without limitation the rights
14
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
- copies of the Software, and to permit persons to whom the Software is
16
- furnished to do so, subject to the following conditions:
17
-
18
- The above copyright notice and this permission notice shall be included in
19
- all copies or substantial portions of the Software.
20
-
21
- Restrictions:
22
- By making use of the Software for military purposes, you choose to make a
23
- Bunny unhappy.
24
-
25
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
31
- THE SOFTWARE.
32
-
33
- ================================================================================
34
- The MIT License
35
- --------------------------------------------------------------------------------
36
- Copyright (c) 2005 - G-Truc Creation
37
-
38
- Permission is hereby granted, free of charge, to any person obtaining a copy
39
- of this software and associated documentation files (the "Software"), to deal
40
- in the Software without restriction, including without limitation the rights
41
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
42
- copies of the Software, and to permit persons to whom the Software is
43
- furnished to do so, subject to the following conditions:
44
-
45
- The above copyright notice and this permission notice shall be included in
46
- all copies or substantial portions of the Software.
47
-
48
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
49
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
50
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
51
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
52
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
53
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
54
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00001_source.html DELETED
@@ -1,493 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: _features.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_033f5edb0915b828d2c46ed4804e5503.html">detail</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">_features.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
92
- <div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
93
- <div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// #define GLM_CXX98_EXCEPTIONS</span></div>
94
- <div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// #define GLM_CXX98_RTTI</span></div>
95
- <div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
96
- <div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// #define GLM_CXX11_RVALUE_REFERENCES</span></div>
97
- <div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// Rvalue references - GCC 4.3</span></div>
98
- <div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html</span></div>
99
- <div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;</div>
100
- <div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// GLM_CXX11_TRAILING_RETURN</span></div>
101
- <div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// Rvalue references for *this - GCC not supported</span></div>
102
- <div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm</span></div>
103
- <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
104
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
105
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Initialization of class objects by rvalues - GCC any</span></div>
106
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html</span></div>
107
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
108
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
109
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// Non-static data member initializers - GCC 4.7</span></div>
110
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm</span></div>
111
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
112
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// #define GLM_CXX11_VARIADIC_TEMPLATE</span></div>
113
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// Variadic templates - GCC 4.3</span></div>
114
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf</span></div>
115
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
116
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">//</span></div>
117
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// Extending variadic template template parameters - GCC 4.4</span></div>
118
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf</span></div>
119
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
120
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// #define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
121
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// Initializer lists - GCC 4.4</span></div>
122
- <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm</span></div>
123
- <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
124
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// #define GLM_CXX11_STATIC_ASSERT</span></div>
125
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">// Static assertions - GCC 4.3</span></div>
126
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html</span></div>
127
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
128
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
129
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// auto-typed variables - GCC 4.4</span></div>
130
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf</span></div>
131
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
132
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
133
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// Multi-declarator auto - GCC 4.4</span></div>
134
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf</span></div>
135
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
136
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
137
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// Removal of auto as a storage-class specifier - GCC 4.4</span></div>
138
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm</span></div>
139
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
140
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
141
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// New function declarator syntax - GCC 4.4</span></div>
142
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm</span></div>
143
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
144
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// #define GLM_CXX11_LAMBDAS</span></div>
145
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// New wording for C++0x lambdas - GCC 4.5</span></div>
146
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf</span></div>
147
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
148
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">// #define GLM_CXX11_DECLTYPE</span></div>
149
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// Declared type of an expression - GCC 4.3</span></div>
150
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf</span></div>
151
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
152
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">//</span></div>
153
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">// Right angle brackets - GCC 4.3</span></div>
154
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html</span></div>
155
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
156
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">//</span></div>
157
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// Default template arguments for function templates DR226 GCC 4.3</span></div>
158
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226</span></div>
159
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;</div>
160
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">//</span></div>
161
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// Solving the SFINAE problem for expressions DR339 GCC 4.4</span></div>
162
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html</span></div>
163
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
164
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// #define GLM_CXX11_ALIAS_TEMPLATE</span></div>
165
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// Template aliases N2258 GCC 4.7</span></div>
166
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf</span></div>
167
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
168
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">//</span></div>
169
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// Extern templates N1987 Yes</span></div>
170
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm</span></div>
171
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
172
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// #define GLM_CXX11_NULLPTR</span></div>
173
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// Null pointer constant N2431 GCC 4.6</span></div>
174
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf</span></div>
175
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
176
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">// #define GLM_CXX11_STRONG_ENUMS</span></div>
177
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">// Strongly-typed enums N2347 GCC 4.4</span></div>
178
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf</span></div>
179
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
180
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">//</span></div>
181
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">// Forward declarations for enums N2764 GCC 4.6</span></div>
182
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf</span></div>
183
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div>
184
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">//</span></div>
185
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">// Generalized attributes N2761 GCC 4.8</span></div>
186
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf</span></div>
187
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;</div>
188
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">//</span></div>
189
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// Generalized constant expressions N2235 GCC 4.6</span></div>
190
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf</span></div>
191
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;</div>
192
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">//</span></div>
193
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">// Alignment support N2341 GCC 4.8</span></div>
194
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf</span></div>
195
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
196
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">// #define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
197
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">// Delegating constructors N1986 GCC 4.7</span></div>
198
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf</span></div>
199
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
200
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">//</span></div>
201
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">// Inheriting constructors N2540 GCC 4.8</span></div>
202
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm</span></div>
203
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
204
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// #define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
205
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// Explicit conversion operators N2437 GCC 4.5</span></div>
206
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf</span></div>
207
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;</div>
208
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">//</span></div>
209
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment">// New character types N2249 GCC 4.4</span></div>
210
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html</span></div>
211
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
212
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">//</span></div>
213
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// Unicode string literals N2442 GCC 4.5</span></div>
214
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
215
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
216
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">//</span></div>
217
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">// Raw string literals N2442 GCC 4.5</span></div>
218
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
219
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
220
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">//</span></div>
221
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">// Universal character name literals N2170 GCC 4.5</span></div>
222
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html</span></div>
223
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
224
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// #define GLM_CXX11_USER_LITERALS</span></div>
225
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// User-defined literals N2765 GCC 4.7</span></div>
226
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf</span></div>
227
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div>
228
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">//</span></div>
229
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// Standard Layout Types N2342 GCC 4.5</span></div>
230
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm</span></div>
231
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;</div>
232
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">// #define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
233
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">// #define GLM_CXX11_DELETED_FUNCTIONS</span></div>
234
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="comment">// Defaulted and deleted functions N2346 GCC 4.4</span></div>
235
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm</span></div>
236
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
237
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">//</span></div>
238
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">// Extended friend declarations N1791 GCC 4.7</span></div>
239
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf</span></div>
240
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
241
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">//</span></div>
242
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// Extending sizeof N2253 GCC 4.4</span></div>
243
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html</span></div>
244
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
245
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment">// #define GLM_CXX11_INLINE_NAMESPACES</span></div>
246
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">// Inline namespaces N2535 GCC 4.4</span></div>
247
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm</span></div>
248
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;</div>
249
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">// #define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
250
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// Unrestricted unions N2544 GCC 4.6</span></div>
251
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf</span></div>
252
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
253
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
254
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// Local and unnamed types as template arguments N2657 GCC 4.5</span></div>
255
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm</span></div>
256
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
257
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// #define GLM_CXX11_RANGE_FOR</span></div>
258
- <div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">// Range-based for N2930 GCC 4.6</span></div>
259
- <div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html</span></div>
260
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;</div>
261
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// #define GLM_CXX11_OVERRIDE_CONTROL</span></div>
262
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7</span></div>
263
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm</span></div>
264
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm</span></div>
265
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm</span></div>
266
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
267
- <div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">//</span></div>
268
- <div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment">// Minimal support for garbage collection and reachability-based leak detection N2670 No</span></div>
269
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm</span></div>
270
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
271
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// #define GLM_CXX11_NOEXCEPT</span></div>
272
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)</span></div>
273
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html</span></div>
274
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;</div>
275
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">//</span></div>
276
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">// Defining move special member functions N3053 GCC 4.6</span></div>
277
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html</span></div>
278
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div>
279
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">//</span></div>
280
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">// Sequence points N2239 Yes</span></div>
281
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
282
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
283
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">//</span></div>
284
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">// Atomic operations N2427 GCC 4.4</span></div>
285
- <div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
286
- <div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
287
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">//</span></div>
288
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">// Strong Compare and Exchange N2748 GCC 4.5</span></div>
289
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html</span></div>
290
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;</div>
291
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">//</span></div>
292
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment">// Bidirectional Fences N2752 GCC 4.8</span></div>
293
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm</span></div>
294
- <div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;</div>
295
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">//</span></div>
296
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">// Memory model N2429 GCC 4.8</span></div>
297
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm</span></div>
298
- <div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
299
- <div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment">//</span></div>
300
- <div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">// Data-dependency ordering: atomics and memory model N2664 GCC 4.4</span></div>
301
- <div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm</span></div>
302
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
303
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">//</span></div>
304
- <div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">// Propagating exceptions N2179 GCC 4.4</span></div>
305
- <div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html</span></div>
306
- <div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;</div>
307
- <div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">//</span></div>
308
- <div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">// Abandoning a process and at_quick_exit N2440 GCC 4.8</span></div>
309
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm</span></div>
310
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div>
311
- <div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">//</span></div>
312
- <div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment">// Allow atomics use in signal handlers N2547 Yes</span></div>
313
- <div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm</span></div>
314
- <div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div>
315
- <div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment">//</span></div>
316
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment">// Thread-local storage N2659 GCC 4.8</span></div>
317
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm</span></div>
318
- <div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;</div>
319
- <div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">//</span></div>
320
- <div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// Dynamic initialization and destruction with concurrency N2660 GCC 4.3</span></div>
321
- <div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm</span></div>
322
- <div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div>
323
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">//</span></div>
324
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// __func__ predefined identifier N2340 GCC 4.3</span></div>
325
- <div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm</span></div>
326
- <div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div>
327
- <div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">//</span></div>
328
- <div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">// C99 preprocessor N1653 GCC 4.3</span></div>
329
- <div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm</span></div>
330
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div>
331
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">//</span></div>
332
- <div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// long long N1811 GCC 4.3</span></div>
333
- <div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf</span></div>
334
- <div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div>
335
- <div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">//</span></div>
336
- <div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">// Extended integral types N1988 Yes</span></div>
337
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf</span></div>
338
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
339
- <div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#if(GLM_COMPILER &amp; GLM_COMPILER_GCC)</span></div>
340
- <div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;</div>
341
- <div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
342
- <div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;</div>
343
- <div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor">#elif(GLM_COMPILER &amp; GLM_COMPILER_CLANG)</span></div>
344
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_exceptions))</span></div>
345
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"># define GLM_CXX98_EXCEPTIONS</span></div>
346
- <div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor"># endif</span></div>
347
- <div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
348
- <div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_rtti))</span></div>
349
- <div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor"># define GLM_CXX98_RTTI</span></div>
350
- <div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor"># endif</span></div>
351
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;</div>
352
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_access_control_sfinae))</span></div>
353
- <div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor"># define GLM_CXX11_ACCESS_CONTROL_SFINAE</span></div>
354
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor"># endif</span></div>
355
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
356
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_alias_templates))</span></div>
357
- <div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor"># define GLM_CXX11_ALIAS_TEMPLATE</span></div>
358
- <div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"># endif</span></div>
359
- <div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div>
360
- <div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_alignas))</span></div>
361
- <div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"># define GLM_CXX11_ALIGNAS</span></div>
362
- <div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"># endif</span></div>
363
- <div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;</div>
364
- <div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_attributes))</span></div>
365
- <div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor"># define GLM_CXX11_ATTRIBUTES</span></div>
366
- <div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor"># endif</span></div>
367
- <div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
368
- <div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_constexpr))</span></div>
369
- <div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor"># define GLM_CXX11_CONSTEXPR</span></div>
370
- <div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor"># endif</span></div>
371
- <div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div>
372
- <div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_decltype))</span></div>
373
- <div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor"># define GLM_CXX11_DECLTYPE</span></div>
374
- <div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor"># endif</span></div>
375
- <div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div>
376
- <div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_default_function_template_args))</span></div>
377
- <div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"># define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS</span></div>
378
- <div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor"># endif</span></div>
379
- <div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div>
380
- <div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_defaulted_functions))</span></div>
381
- <div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"># define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
382
- <div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor"># endif</span></div>
383
- <div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
384
- <div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_delegating_constructors))</span></div>
385
- <div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"># define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
386
- <div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor"># endif</span></div>
387
- <div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;</div>
388
- <div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_deleted_functions))</span></div>
389
- <div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor"># define GLM_CXX11_DELETED_FUNCTIONS</span></div>
390
- <div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="preprocessor"># endif</span></div>
391
- <div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div>
392
- <div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_explicit_conversions))</span></div>
393
- <div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor"># define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
394
- <div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor"># endif</span></div>
395
- <div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
396
- <div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_generalized_initializers))</span></div>
397
- <div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"># define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
398
- <div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"># endif</span></div>
399
- <div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div>
400
- <div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_implicit_moves))</span></div>
401
- <div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"># define GLM_CXX11_IMPLICIT_MOVES</span></div>
402
- <div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"># endif</span></div>
403
- <div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div>
404
- <div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_inheriting_constructors))</span></div>
405
- <div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor"># define GLM_CXX11_INHERITING_CONSTRUCTORS</span></div>
406
- <div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor"># endif</span></div>
407
- <div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;</div>
408
- <div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_inline_namespaces))</span></div>
409
- <div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"># define GLM_CXX11_INLINE_NAMESPACES</span></div>
410
- <div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor"># endif</span></div>
411
- <div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;</div>
412
- <div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_lambdas))</span></div>
413
- <div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor"># define GLM_CXX11_LAMBDAS</span></div>
414
- <div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"># endif</span></div>
415
- <div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div>
416
- <div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_local_type_template_args))</span></div>
417
- <div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"># define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
418
- <div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor"># endif</span></div>
419
- <div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;</div>
420
- <div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_noexcept))</span></div>
421
- <div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor"># define GLM_CXX11_NOEXCEPT</span></div>
422
- <div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor"># endif</span></div>
423
- <div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div>
424
- <div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_nonstatic_member_init))</span></div>
425
- <div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor"># define GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
426
- <div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="preprocessor"># endif</span></div>
427
- <div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;</div>
428
- <div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_nullptr))</span></div>
429
- <div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor"># define GLM_CXX11_NULLPTR</span></div>
430
- <div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"># endif</span></div>
431
- <div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div>
432
- <div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_override_control))</span></div>
433
- <div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor"># define GLM_CXX11_OVERRIDE_CONTROL</span></div>
434
- <div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor"># endif</span></div>
435
- <div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;</div>
436
- <div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_reference_qualified_functions))</span></div>
437
- <div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="preprocessor"># define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS</span></div>
438
- <div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor"># endif</span></div>
439
- <div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div>
440
- <div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_range_for))</span></div>
441
- <div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor"># define GLM_CXX11_RANGE_FOR</span></div>
442
- <div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"># endif</span></div>
443
- <div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div>
444
- <div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_raw_string_literals))</span></div>
445
- <div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor"># define GLM_CXX11_RAW_STRING_LITERALS</span></div>
446
- <div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor"># endif</span></div>
447
- <div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div>
448
- <div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_rvalue_references))</span></div>
449
- <div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor"># define GLM_CXX11_RVALUE_REFERENCES</span></div>
450
- <div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor"># endif</span></div>
451
- <div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
452
- <div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_static_assert))</span></div>
453
- <div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
454
- <div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor"># endif</span></div>
455
- <div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;</div>
456
- <div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_auto_type))</span></div>
457
- <div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"># define GLM_CXX11_AUTO_TYPE</span></div>
458
- <div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor"># endif</span></div>
459
- <div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;</div>
460
- <div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_strong_enums))</span></div>
461
- <div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor"># define GLM_CXX11_STRONG_ENUMS</span></div>
462
- <div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor"># endif</span></div>
463
- <div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
464
- <div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_trailing_return))</span></div>
465
- <div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor"># define GLM_CXX11_TRAILING_RETURN</span></div>
466
- <div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="preprocessor"># endif</span></div>
467
- <div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;</div>
468
- <div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_unicode_literals))</span></div>
469
- <div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor"># define GLM_CXX11_UNICODE_LITERALS</span></div>
470
- <div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"># endif</span></div>
471
- <div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;</div>
472
- <div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_unrestricted_unions))</span></div>
473
- <div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"># define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
474
- <div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"># endif</span></div>
475
- <div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div>
476
- <div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_user_literals))</span></div>
477
- <div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"># define GLM_CXX11_USER_LITERALS</span></div>
478
- <div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"># endif</span></div>
479
- <div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div>
480
- <div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_variadic_templates))</span></div>
481
- <div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"># define GLM_CXX11_VARIADIC_TEMPLATES</span></div>
482
- <div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor"># endif</span></div>
483
- <div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;</div>
484
- <div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor">#endif//(GLM_COMPILER &amp; GLM_COMPILER_CLANG)</span></div>
485
- </div><!-- fragment --></div><!-- contents -->
486
- <!-- start footer part -->
487
- <hr class="footer"/><address class="footer"><small>
488
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
489
- <img class="footer" src="doxygen.png" alt="doxygen"/>
490
- </a> 1.8.10
491
- </small></address>
492
- </body>
493
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00002_source.html DELETED
@@ -1,121 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: _fixes.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_033f5edb0915b828d2c46ed4804e5503.html">detail</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">_fixes.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
92
- <div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
93
- <div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#ifdef max</span></div>
94
- <div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#undef max</span></div>
95
- <div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#endif</span></div>
96
- <div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;</div>
97
- <div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#ifdef min</span></div>
98
- <div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#undef min</span></div>
99
- <div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#endif</span></div>
100
- <div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
101
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#ifdef isnan</span></div>
102
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#undef isnan</span></div>
103
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#endif</span></div>
104
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
105
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#ifdef isinf</span></div>
106
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#undef isinf</span></div>
107
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif</span></div>
108
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
109
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#ifdef log2</span></div>
110
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#undef log2</span></div>
111
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
112
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
113
- </div><!-- fragment --></div><!-- contents -->
114
- <!-- start footer part -->
115
- <hr class="footer"/><address class="footer"><small>
116
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
117
- <img class="footer" src="doxygen.png" alt="doxygen"/>
118
- </a> 1.8.10
119
- </small></address>
120
- </body>
121
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00003_source.html DELETED
@@ -1,182 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: _noise.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_033f5edb0915b828d2c46ed4804e5503.html">detail</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">_noise.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
92
- <div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
93
- <div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;../common.hpp&quot;</span></div>
94
- <div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;</div>
95
- <div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a>{</div>
96
- <div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span>detail</div>
97
- <div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;{</div>
98
- <div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
99
- <div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; GLM_FUNC_QUALIFIER T mod289(T <span class="keyword">const</span>&amp; x)</div>
100
- <div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; {</div>
101
- <div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keywordflow">return</span> x - <a class="code" href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a>(x * (static_cast&lt;T&gt;(1.0) / static_cast&lt;T&gt;(289.0))) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(289.0);</div>
102
- <div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; }</div>
103
- <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;</div>
104
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
105
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; GLM_FUNC_QUALIFIER T permute(T <span class="keyword">const</span>&amp; x)</div>
106
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div>
107
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
108
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; }</div>
109
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
110
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
111
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; GLM_FUNC_QUALIFIER vec&lt;2, T, Q&gt; permute(vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; x)</div>
112
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div>
113
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
114
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
115
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
116
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
117
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; GLM_FUNC_QUALIFIER vec&lt;3, T, Q&gt; permute(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; x)</div>
118
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div>
119
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
120
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div>
121
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
122
- <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
123
- <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; GLM_FUNC_QUALIFIER vec&lt;4, T, Q&gt; permute(vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; x)</div>
124
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
125
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
126
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div>
127
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
128
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T&gt;</div>
129
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; GLM_FUNC_QUALIFIER T taylorInvSqrt(T <span class="keyword">const</span>&amp; r)</div>
130
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div>
131
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1.79284291400159) - <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0.85373472095314) * r;</div>
132
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
133
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
134
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
135
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; GLM_FUNC_QUALIFIER vec&lt;2, T, Q&gt; taylorInvSqrt(vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; r)</div>
136
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
137
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1.79284291400159) - <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0.85373472095314) * r;</div>
138
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; }</div>
139
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
140
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
141
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_FUNC_QUALIFIER vec&lt;3, T, Q&gt; taylorInvSqrt(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; r)</div>
142
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
143
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1.79284291400159) - <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0.85373472095314) * r;</div>
144
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
145
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
146
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
147
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; GLM_FUNC_QUALIFIER vec&lt;4, T, Q&gt; taylorInvSqrt(vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; r)</div>
148
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
149
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(1.79284291400159) - <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(0.85373472095314) * r;</div>
150
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
151
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
152
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
153
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; GLM_FUNC_QUALIFIER vec&lt;2, T, Q&gt; fade(vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; t)</div>
154
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
155
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(6) - static_cast&lt;T&gt;(15)) + static_cast&lt;T&gt;(10));</div>
156
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
157
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
158
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
159
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GLM_FUNC_QUALIFIER vec&lt;3, T, Q&gt; fade(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; t)</div>
160
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
161
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(6) - static_cast&lt;T&gt;(15)) + static_cast&lt;T&gt;(10));</div>
162
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
163
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
164
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
165
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; GLM_FUNC_QUALIFIER vec&lt;4, T, Q&gt; fade(vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; t)</div>
166
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
167
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(6) - static_cast&lt;T&gt;(15)) + static_cast&lt;T&gt;(10));</div>
168
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; }</div>
169
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;}<span class="comment">//namespace detail</span></div>
170
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;}<span class="comment">//namespace glm</span></div>
171
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
172
- <div class="ttc" id="a00241_html_gaa9d0742639e85b29c7c5de11cfd6840d"><div class="ttname"><a href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">glm::floor</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; floor(vec&lt; L, T, Q &gt; const &amp;x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is less then or equal to x. </div></div>
173
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
174
- </div><!-- fragment --></div><!-- contents -->
175
- <!-- start footer part -->
176
- <hr class="footer"/><address class="footer"><small>
177
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
178
- <img class="footer" src="doxygen.png" alt="doxygen"/>
179
- </a> 1.8.10
180
- </small></address>
181
- </body>
182
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00004_source.html DELETED
The diff for this file is too large to render. See raw diff
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00005_source.html DELETED
The diff for this file is too large to render. See raw diff
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00006_source.html DELETED
@@ -1,262 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: _vectorize.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_033f5edb0915b828d2c46ed4804e5503.html">detail</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">_vectorize.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
92
- <div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;</div>
93
- <div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a>{</div>
94
- <div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="keyword">namespace </span>detail</div>
95
- <div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;{</div>
96
- <div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
97
- <div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; <span class="keyword">struct </span>functor1{};</div>
98
- <div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
99
- <div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
100
- <div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keyword">struct </span>functor1&lt;vec, 1, R, T, Q&gt;</div>
101
- <div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; {</div>
102
- <div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec&lt;1, R, Q&gt; call(R (*Func) (T x), vec&lt;1, T, Q&gt; <span class="keyword">const</span>&amp; v)</div>
103
- <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; {</div>
104
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keywordflow">return</span> vec&lt;1, R, Q&gt;(Func(v.x));</div>
105
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; }</div>
106
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; };</div>
107
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
108
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
109
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">struct </span>functor1&lt;vec, 2, R, T, Q&gt;</div>
110
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div>
111
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec&lt;2, R, Q&gt; call(R (*Func) (T x), vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; v)</div>
112
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div>
113
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> vec&lt;2, R, Q&gt;(Func(v.x), Func(v.y));</div>
114
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
115
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; };</div>
116
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
117
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
118
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">struct </span>functor1&lt;vec, 3, R, T, Q&gt;</div>
119
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; {</div>
120
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec&lt;3, R, Q&gt; call(R (*Func) (T x), vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; v)</div>
121
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; {</div>
122
- <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keywordflow">return</span> vec&lt;3, R, Q&gt;(Func(v.x), Func(v.y), Func(v.z));</div>
123
- <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; }</div>
124
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; };</div>
125
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
126
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
127
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; <span class="keyword">struct </span>functor1&lt;vec, 4, R, T, Q&gt;</div>
128
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; {</div>
129
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec&lt;4, R, Q&gt; call(R (*Func) (T x), vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; v)</div>
130
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div>
131
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> vec&lt;4, R, Q&gt;(Func(v.x), Func(v.y), Func(v.z), Func(v.w));</div>
132
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
133
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; };</div>
134
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
135
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
136
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">struct </span>functor2{};</div>
137
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
138
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
139
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">struct </span>functor2&lt;vec, 1, T, Q&gt;</div>
140
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; {</div>
141
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;1, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;1, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;1, T, Q&gt; <span class="keyword">const</span>&amp; b)</div>
142
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
143
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> vec&lt;1, T, Q&gt;(Func(a.x, b.x));</div>
144
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
145
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; };</div>
146
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
147
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
148
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">struct </span>functor2&lt;vec, 2, T, Q&gt;</div>
149
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; {</div>
150
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;2, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; b)</div>
151
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; {</div>
152
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordflow">return</span> vec&lt;2, T, Q&gt;(Func(a.x, b.x), Func(a.y, b.y));</div>
153
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; }</div>
154
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; };</div>
155
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
156
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
157
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keyword">struct </span>functor2&lt;vec, 3, T, Q&gt;</div>
158
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; {</div>
159
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;3, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; b)</div>
160
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
161
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> vec&lt;3, T, Q&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));</div>
162
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
163
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; };</div>
164
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div>
165
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
166
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">struct </span>functor2&lt;vec, 4, T, Q&gt;</div>
167
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; {</div>
168
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;4, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; b)</div>
169
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div>
170
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keywordflow">return</span> vec&lt;4, T, Q&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));</div>
171
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; }</div>
172
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; };</div>
173
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
174
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
175
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">struct </span>functor2_vec_sca{};</div>
176
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
177
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
178
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;vec, 1, T, Q&gt;</div>
179
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
180
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;1, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;1, T, Q&gt; <span class="keyword">const</span>&amp; a, T b)</div>
181
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; {</div>
182
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keywordflow">return</span> vec&lt;1, T, Q&gt;(Func(a.x, b));</div>
183
- <div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
184
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; };</div>
185
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
186
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
187
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;vec, 2, T, Q&gt;</div>
188
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; {</div>
189
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;2, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; a, T b)</div>
190
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; {</div>
191
- <div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keywordflow">return</span> vec&lt;2, T, Q&gt;(Func(a.x, b), Func(a.y, b));</div>
192
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; }</div>
193
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; };</div>
194
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
195
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
196
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;vec, 3, T, Q&gt;</div>
197
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; {</div>
198
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;3, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; a, T b)</div>
199
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; {</div>
200
- <div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="keywordflow">return</span> vec&lt;3, T, Q&gt;(Func(a.x, b), Func(a.y, b), Func(a.z, b));</div>
201
- <div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; }</div>
202
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; };</div>
203
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div>
204
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt; <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
205
- <div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;vec, 4, T, Q&gt;</div>
206
- <div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; {</div>
207
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;4, T, Q&gt; call(T (*Func) (T x, T y), vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; a, T b)</div>
208
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; {</div>
209
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">return</span> vec&lt;4, T, Q&gt;(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));</div>
210
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; }</div>
211
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; };</div>
212
- <div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;</div>
213
- <div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
214
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">struct </span>functor2_vec_int {};</div>
215
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div>
216
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
217
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keyword">struct </span>functor2_vec_int&lt;1, T, Q&gt;</div>
218
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; {</div>
219
- <div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;1, int, Q&gt; call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec&lt;1, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;1, int, Q&gt; <span class="keyword">const</span>&amp; b)</div>
220
- <div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; {</div>
221
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">return</span> vec&lt;1, int, Q&gt;(Func(a.x, b.x));</div>
222
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
223
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; };</div>
224
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
225
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
226
- <div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">struct </span>functor2_vec_int&lt;2, T, Q&gt;</div>
227
- <div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; {</div>
228
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;2, int, Q&gt; call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;2, int, Q&gt; <span class="keyword">const</span>&amp; b)</div>
229
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; {</div>
230
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; <span class="keywordflow">return</span> vec&lt;2, int, Q&gt;(Func(a.x, b.x), Func(a.y, b.y));</div>
231
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; }</div>
232
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; };</div>
233
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
234
- <div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
235
- <div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">struct </span>functor2_vec_int&lt;3, T, Q&gt;</div>
236
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div>
237
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;3, int, Q&gt; call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;3, int, Q&gt; <span class="keyword">const</span>&amp; b)</div>
238
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; {</div>
239
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keywordflow">return</span> vec&lt;3, int, Q&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));</div>
240
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; }</div>
241
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; };</div>
242
- <div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div>
243
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
244
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">struct </span>functor2_vec_int&lt;4, T, Q&gt;</div>
245
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
246
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec&lt;4, int, Q&gt; call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec&lt;4, T, Q&gt; <span class="keyword">const</span>&amp; a, vec&lt;4, int, Q&gt; <span class="keyword">const</span>&amp; b)</div>
247
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {</div>
248
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keywordflow">return</span> vec&lt;4, int, Q&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));</div>
249
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; }</div>
250
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; };</div>
251
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;}<span class="comment">//namespace detail</span></div>
252
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;}<span class="comment">//namespace glm</span></div>
253
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
254
- </div><!-- fragment --></div><!-- contents -->
255
- <!-- start footer part -->
256
- <hr class="footer"/><address class="footer"><small>
257
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
258
- <img class="footer" src="doxygen.png" alt="doxygen"/>
259
- </a> 1.8.10
260
- </small></address>
261
- </body>
262
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00007.html DELETED
@@ -1,205 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: associated_min_max.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">associated_min_max.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00308.html">GLM_GTX_associated_min_max</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00007_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
102
- <tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45">associatedMax</a> (T x, U a, T y, U b)</td></tr>
103
- <tr class="memdesc:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#ga7d9c8785230c8db60f72ec8975f1ba45">More...</a><br /></td></tr>
104
- <tr class="separator:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
- <tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
106
- <tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 2, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga5c6758bc50aa7fbe700f87123a045aad">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b)</td></tr>
107
- <tr class="memdesc:ga5c6758bc50aa7fbe700f87123a045aad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#ga5c6758bc50aa7fbe700f87123a045aad">More...</a><br /></td></tr>
108
- <tr class="separator:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
- <tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
110
- <tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga0d169d6ce26b03248df175f39005d77f">associatedMax</a> (T x, vec&lt; L, U, Q &gt; const &amp;a, T y, vec&lt; L, U, Q &gt; const &amp;b)</td></tr>
111
- <tr class="memdesc:ga0d169d6ce26b03248df175f39005d77f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#ga0d169d6ce26b03248df175f39005d77f">More...</a><br /></td></tr>
112
- <tr class="separator:ga0d169d6ce26b03248df175f39005d77f"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
- <tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
114
- <tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga4086269afabcb81dd7ded33cb3448653">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b)</td></tr>
115
- <tr class="memdesc:ga4086269afabcb81dd7ded33cb3448653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#ga4086269afabcb81dd7ded33cb3448653">More...</a><br /></td></tr>
116
- <tr class="separator:ga4086269afabcb81dd7ded33cb3448653"><td class="memSeparator" colspan="2">&#160;</td></tr>
117
- <tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
118
- <tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gaec891e363d91abbf3a4443cf2f652209">associatedMax</a> (T x, U a, T y, U b, T z, U c)</td></tr>
119
- <tr class="memdesc:gaec891e363d91abbf3a4443cf2f652209"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#gaec891e363d91abbf3a4443cf2f652209">More...</a><br /></td></tr>
120
- <tr class="separator:gaec891e363d91abbf3a4443cf2f652209"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
- <tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
122
- <tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b, vec&lt; L, T, Q &gt; const &amp;z, vec&lt; L, U, Q &gt; const &amp;c)</td></tr>
123
- <tr class="memdesc:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c">More...</a><br /></td></tr>
124
- <tr class="separator:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
125
- <tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
126
- <tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba">associatedMax</a> (T x, vec&lt; L, U, Q &gt; const &amp;a, T y, vec&lt; L, U, Q &gt; const &amp;b, T z, vec&lt; L, U, Q &gt; const &amp;c)</td></tr>
127
- <tr class="memdesc:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba">More...</a><br /></td></tr>
128
- <tr class="separator:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
- <tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
130
- <tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga19f59d1141a51a3b2108a9807af78f7f">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b, vec&lt; L, T, Q &gt; const &amp;z, U c)</td></tr>
131
- <tr class="memdesc:ga19f59d1141a51a3b2108a9807af78f7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#ga19f59d1141a51a3b2108a9807af78f7f">More...</a><br /></td></tr>
132
- <tr class="separator:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
133
- <tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
134
- <tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc">associatedMax</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
135
- <tr class="memdesc:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga3038ffcb43eaa6af75897a99a5047ccc">More...</a><br /></td></tr>
136
- <tr class="separator:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
137
- <tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
138
- <tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b, vec&lt; L, T, Q &gt; const &amp;z, vec&lt; L, U, Q &gt; const &amp;c, vec&lt; L, T, Q &gt; const &amp;w, vec&lt; L, U, Q &gt; const &amp;d)</td></tr>
139
- <tr class="memdesc:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6">More...</a><br /></td></tr>
140
- <tr class="separator:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
141
- <tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
142
- <tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d">associatedMax</a> (T x, vec&lt; L, U, Q &gt; const &amp;a, T y, vec&lt; L, U, Q &gt; const &amp;b, T z, vec&lt; L, U, Q &gt; const &amp;c, T w, vec&lt; L, U, Q &gt; const &amp;d)</td></tr>
143
- <tr class="memdesc:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d">More...</a><br /></td></tr>
144
- <tr class="separator:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memSeparator" colspan="2">&#160;</td></tr>
145
- <tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
146
- <tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a> (vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b, vec&lt; L, T, Q &gt; const &amp;z, U c, vec&lt; L, T, Q &gt; const &amp;w, U d)</td></tr>
147
- <tr class="memdesc:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">More...</a><br /></td></tr>
148
- <tr class="separator:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
149
- <tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , qualifier Q&gt; </td></tr>
150
- <tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gacc01bd272359572fc28437ae214a02df">associatedMin</a> (T x, U a, T y, U b)</td></tr>
151
- <tr class="memdesc:gacc01bd272359572fc28437ae214a02df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#gacc01bd272359572fc28437ae214a02df">More...</a><br /></td></tr>
152
- <tr class="separator:gacc01bd272359572fc28437ae214a02df"><td class="memSeparator" colspan="2">&#160;</td></tr>
153
- <tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
154
- <tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 2, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gac2f0dff90948f2e44386a5eafd941d1c">associatedMin</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b)</td></tr>
155
- <tr class="memdesc:gac2f0dff90948f2e44386a5eafd941d1c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#gac2f0dff90948f2e44386a5eafd941d1c">More...</a><br /></td></tr>
156
- <tr class="separator:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
157
- <tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
158
- <tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gacfec519c820331d023ef53a511749319">associatedMin</a> (T x, const vec&lt; L, U, Q &gt; &amp;a, T y, const vec&lt; L, U, Q &gt; &amp;b)</td></tr>
159
- <tr class="memdesc:gacfec519c820331d023ef53a511749319"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#gacfec519c820331d023ef53a511749319">More...</a><br /></td></tr>
160
- <tr class="separator:gacfec519c820331d023ef53a511749319"><td class="memSeparator" colspan="2">&#160;</td></tr>
161
- <tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
162
- <tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga4757c7cab2d809124a8525d0a9deeb37">associatedMin</a> (vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b)</td></tr>
163
- <tr class="memdesc:ga4757c7cab2d809124a8525d0a9deeb37"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 2 variables and returns 2 associated variable values. <a href="a00308.html#ga4757c7cab2d809124a8525d0a9deeb37">More...</a><br /></td></tr>
164
- <tr class="separator:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memSeparator" colspan="2">&#160;</td></tr>
165
- <tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
166
- <tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gad0aa8f86259a26d839d34a3577a923fc">associatedMin</a> (T x, U a, T y, U b, T z, U c)</td></tr>
167
- <tr class="memdesc:gad0aa8f86259a26d839d34a3577a923fc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#gad0aa8f86259a26d839d34a3577a923fc">More...</a><br /></td></tr>
168
- <tr class="separator:gad0aa8f86259a26d839d34a3577a923fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
169
- <tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
170
- <tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d">associatedMin</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b, vec&lt; L, T, Q &gt; const &amp;z, vec&lt; L, U, Q &gt; const &amp;c)</td></tr>
171
- <tr class="memdesc:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 3 variables and returns 3 associated variable values. <a href="a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d">More...</a><br /></td></tr>
172
- <tr class="separator:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memSeparator" colspan="2">&#160;</td></tr>
173
- <tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
174
- <tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6">associatedMin</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
175
- <tr class="memdesc:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga432224ebe2085eaa2b63a077ecbbbff6">More...</a><br /></td></tr>
176
- <tr class="separator:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
- <tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
178
- <tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga66b08118bc88f0494bcacb7cdb940556">associatedMin</a> (vec&lt; L, T, Q &gt; const &amp;x, vec&lt; L, U, Q &gt; const &amp;a, vec&lt; L, T, Q &gt; const &amp;y, vec&lt; L, U, Q &gt; const &amp;b, vec&lt; L, T, Q &gt; const &amp;z, vec&lt; L, U, Q &gt; const &amp;c, vec&lt; L, T, Q &gt; const &amp;w, vec&lt; L, U, Q &gt; const &amp;d)</td></tr>
179
- <tr class="memdesc:ga66b08118bc88f0494bcacb7cdb940556"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga66b08118bc88f0494bcacb7cdb940556">More...</a><br /></td></tr>
180
- <tr class="separator:ga66b08118bc88f0494bcacb7cdb940556"><td class="memSeparator" colspan="2">&#160;</td></tr>
181
- <tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
182
- <tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68">associatedMin</a> (T x, vec&lt; L, U, Q &gt; const &amp;a, T y, vec&lt; L, U, Q &gt; const &amp;b, T z, vec&lt; L, U, Q &gt; const &amp;c, T w, vec&lt; L, U, Q &gt; const &amp;d)</td></tr>
183
- <tr class="memdesc:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68">More...</a><br /></td></tr>
184
- <tr class="separator:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
185
- <tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , typename U , qualifier Q&gt; </td></tr>
186
- <tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, U, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a> (vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b, vec&lt; L, T, Q &gt; const &amp;z, U c, vec&lt; L, T, Q &gt; const &amp;w, U d)</td></tr>
187
- <tr class="memdesc:ga2db7e351994baee78540a562d4bb6d3b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minimum comparison between 4 variables and returns 4 associated variable values. <a href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">More...</a><br /></td></tr>
188
- <tr class="separator:ga2db7e351994baee78540a562d4bb6d3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
189
- </table>
190
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
191
- <div class="textblock"><p><a class="el" href="a00308.html">GLM_GTX_associated_min_max</a> </p>
192
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
193
- <dd>
194
- gtx_extented_min_max (dependence) </dd></dl>
195
-
196
- <p>Definition in file <a class="el" href="a00007_source.html">associated_min_max.hpp</a>.</p>
197
- </div></div><!-- contents -->
198
- <!-- start footer part -->
199
- <hr class="footer"/><address class="footer"><small>
200
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
201
- <img class="footer" src="doxygen.png" alt="doxygen"/>
202
- </a> 1.8.10
203
- </small></address>
204
- </body>
205
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00007_source.html DELETED
@@ -1,250 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: associated_min_max.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">associated_min_max.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00007.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
93
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
94
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependency:</span></div>
95
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
96
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
97
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
98
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
99
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_associated_min_max is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.&quot;)</span></div>
100
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"># else</span></div>
101
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_associated_min_max extension included&quot;)</span></div>
102
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"># endif</span></div>
103
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#endif</span></div>
104
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
105
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
106
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div>
107
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
108
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
109
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(T x, U a, T y, U b);</div>
110
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
111
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
112
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; GLM_FUNC_DECL vec&lt;2, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
113
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
114
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b);</div>
115
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
116
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
117
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
118
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; T x, <span class="keyword">const</span> vec&lt;L, U, Q&gt;&amp; a,</div>
119
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; T y, <span class="keyword">const</span> vec&lt;L, U, Q&gt;&amp; b);</div>
120
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
121
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
122
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
123
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, U a,</div>
124
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, U b);</div>
125
- <div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
126
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
127
- <div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
128
- <div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; T x, U a,</div>
129
- <div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; T y, U b,</div>
130
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; T z, U c);</div>
131
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
132
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
133
- <div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
134
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
135
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
136
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c);</div>
137
- <div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
138
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
139
- <div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
140
- <div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; T x, U a,</div>
141
- <div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; T y, U b,</div>
142
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; T z, U c,</div>
143
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; T w, U d);</div>
144
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
145
- <div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
146
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
147
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
148
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
149
- <div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c,</div>
150
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; w, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; d);</div>
151
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
152
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
153
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
154
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; T x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
155
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; T y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
156
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; T z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c,</div>
157
- <div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; T w, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; d);</div>
158
- <div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
159
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
160
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
161
- <div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, U a,</div>
162
- <div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, U b,</div>
163
- <div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, U c,</div>
164
- <div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; w, U d);</div>
165
- <div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
166
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
167
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(T x, U a, T y, U b);</div>
168
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
169
- <div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
170
- <div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; GLM_FUNC_DECL vec&lt;2, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
171
- <div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
172
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b);</div>
173
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
174
- <div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
175
- <div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
176
- <div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; T x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
177
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; T y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b);</div>
178
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
179
- <div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
180
- <div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
181
- <div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, U a,</div>
182
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, U b);</div>
183
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
184
- <div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
185
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
186
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; T x, U a,</div>
187
- <div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; T y, U b,</div>
188
- <div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; T z, U c);</div>
189
- <div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;</div>
190
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
191
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
192
- <div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
193
- <div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
194
- <div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c);</div>
195
- <div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div>
196
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
197
- <div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
198
- <div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; T x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
199
- <div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; T y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
200
- <div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; T z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c);</div>
201
- <div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
202
- <div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
203
- <div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
204
- <div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, U a,</div>
205
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, U b,</div>
206
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, U c);</div>
207
- <div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
208
- <div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
209
- <div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
210
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; T x, U a,</div>
211
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; T y, U b,</div>
212
- <div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; T z, U c,</div>
213
- <div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; T w, U d);</div>
214
- <div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div>
215
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
216
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
217
- <div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
218
- <div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
219
- <div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c,</div>
220
- <div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; w, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; d);</div>
221
- <div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div>
222
- <div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
223
- <div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
224
- <div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; T x, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; a,</div>
225
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; T y, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; b,</div>
226
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; T z, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; c,</div>
227
- <div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; T w, vec&lt;L, U, Q&gt; <span class="keyword">const</span>&amp; d);</div>
228
- <div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;</div>
229
- <div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q&gt;</div>
230
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; GLM_FUNC_DECL vec&lt;L, U, Q&gt; <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
231
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; x, U a,</div>
232
- <div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; y, U b,</div>
233
- <div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; z, U c,</div>
234
- <div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; w, U d);</div>
235
- <div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
236
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;} <span class="comment">//namespace glm</span></div>
237
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
238
- <div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#include &quot;associated_min_max.inl&quot;</span></div>
239
- <div class="ttc" id="a00308_html_gab9c3dd74cac899d2c625b5767ea3b3fb"><div class="ttname"><a href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">glm::associatedMax</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, U, Q &gt; associatedMax(vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b, vec&lt; L, T, Q &gt; const &amp;z, U c, vec&lt; L, T, Q &gt; const &amp;w, U d)</div><div class="ttdoc">Maximum comparison between 4 variables and returns 4 associated variable values. </div></div>
240
- <div class="ttc" id="a00308_html_ga2db7e351994baee78540a562d4bb6d3b"><div class="ttname"><a href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">glm::associatedMin</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, U, Q &gt; associatedMin(vec&lt; L, T, Q &gt; const &amp;x, U a, vec&lt; L, T, Q &gt; const &amp;y, U b, vec&lt; L, T, Q &gt; const &amp;z, U c, vec&lt; L, T, Q &gt; const &amp;w, U d)</div><div class="ttdoc">Minimum comparison between 4 variables and returns 4 associated variable values. </div></div>
241
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
242
- </div><!-- fragment --></div><!-- contents -->
243
- <!-- start footer part -->
244
- <hr class="footer"/><address class="footer"><small>
245
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
246
- <img class="footer" src="doxygen.png" alt="doxygen"/>
247
- </a> 1.8.10
248
- </small></address>
249
- </body>
250
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00008.html DELETED
@@ -1,149 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: bit.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">bit.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00309.html">GLM_GTX_bit</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00008_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
102
- <tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga0dcc8fe7c3d3ad60dea409281efa3d05">highestBitValue</a> (genIUType Value)</td></tr>
103
- <tr class="separator:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
104
- <tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
105
- <tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a> (vec&lt; L, T, Q &gt; const &amp;value)</td></tr>
106
- <tr class="memdesc:ga898ef075ccf809a1e480faab48fe96bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the highest bit set to 1 in a integer variable and return its value. <a href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">More...</a><br /></td></tr>
107
- <tr class="separator:ga898ef075ccf809a1e480faab48fe96bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
108
- <tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
109
- <tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a> (genIUType Value)</td></tr>
110
- <tr class="separator:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
- <tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
112
- <tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga8cda2459871f574a0aecbe702ac93291">powerOfTwoAbove</a> (genIUType Value)</td></tr>
113
- <tr class="memdesc:ga8cda2459871f574a0aecbe702ac93291"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is just higher the input value. <a href="a00309.html#ga8cda2459871f574a0aecbe702ac93291">More...</a><br /></td></tr>
114
- <tr class="separator:ga8cda2459871f574a0aecbe702ac93291"><td class="memSeparator" colspan="2">&#160;</td></tr>
115
- <tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
116
- <tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a> (vec&lt; L, T, Q &gt; const &amp;value)</td></tr>
117
- <tr class="memdesc:ga2bbded187c5febfefc1e524ba31b3fab"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is just higher the input value. <a href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">More...</a><br /></td></tr>
118
- <tr class="separator:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memSeparator" colspan="2">&#160;</td></tr>
119
- <tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
120
- <tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga3de7df63c589325101a2817a56f8e29d">powerOfTwoBelow</a> (genIUType Value)</td></tr>
121
- <tr class="memdesc:ga3de7df63c589325101a2817a56f8e29d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is just lower the input value. <a href="a00309.html#ga3de7df63c589325101a2817a56f8e29d">More...</a><br /></td></tr>
122
- <tr class="separator:ga3de7df63c589325101a2817a56f8e29d"><td class="memSeparator" colspan="2">&#160;</td></tr>
123
- <tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
124
- <tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a> (vec&lt; L, T, Q &gt; const &amp;value)</td></tr>
125
- <tr class="memdesc:gaf78ddcc4152c051b2a21e68fecb10980"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is just lower the input value. <a href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">More...</a><br /></td></tr>
126
- <tr class="separator:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memSeparator" colspan="2">&#160;</td></tr>
127
- <tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
128
- <tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga5f65973a5d2ea38c719e6a663149ead9">powerOfTwoNearest</a> (genIUType Value)</td></tr>
129
- <tr class="memdesc:ga5f65973a5d2ea38c719e6a663149ead9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is the closet to the input value. <a href="a00309.html#ga5f65973a5d2ea38c719e6a663149ead9">More...</a><br /></td></tr>
130
- <tr class="separator:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memSeparator" colspan="2">&#160;</td></tr>
131
- <tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
132
- <tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a> (vec&lt; L, T, Q &gt; const &amp;value)</td></tr>
133
- <tr class="memdesc:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the power of two number which value is the closet to the input value. <a href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">More...</a><br /></td></tr>
134
- <tr class="separator:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
135
- </table>
136
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
137
- <div class="textblock"><p><a class="el" href="a00309.html">GLM_GTX_bit</a> </p>
138
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
139
-
140
- <p>Definition in file <a class="el" href="a00008_source.html">bit.hpp</a>.</p>
141
- </div></div><!-- contents -->
142
- <!-- start footer part -->
143
- <hr class="footer"/><address class="footer"><small>
144
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
145
- <img class="footer" src="doxygen.png" alt="doxygen"/>
146
- </a> 1.8.10
147
- </small></address>
148
- </body>
149
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00008_source.html DELETED
@@ -1,154 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: bit.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">bit.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00008.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
93
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
94
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependencies</span></div>
95
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../gtc/bitfield.hpp&quot;</span></div>
96
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
97
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
98
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
99
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_bit is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.&quot;)</span></div>
100
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"># else</span></div>
101
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_bit extension included&quot;)</span></div>
102
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># endif</span></div>
103
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
104
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
105
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
106
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
107
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
108
- <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
109
- <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a>(genIUType Value);</div>
110
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
111
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
112
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a>(genIUType Value);</div>
113
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
114
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
115
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; value);</div>
116
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
117
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
118
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a>(genIUType Value);</div>
119
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
120
- <div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
121
- <div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; value);</div>
122
- <div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
123
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
124
- <div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a>(genIUType Value);</div>
125
- <div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
126
- <div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
127
- <div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; value);</div>
128
- <div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
129
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
130
- <div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a>(genIUType Value);</div>
131
- <div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
132
- <div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
133
- <div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; value);</div>
134
- <div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
135
- <div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;} <span class="comment">//namespace glm</span></div>
136
- <div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
137
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
138
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor">#include &quot;bit.inl&quot;</span></div>
139
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
140
- <div class="ttc" id="a00309_html_ga898ef075ccf809a1e480faab48fe96bf"><div class="ttname"><a href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">glm::highestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; highestBitValue(vec&lt; L, T, Q &gt; const &amp;value)</div><div class="ttdoc">Find the highest bit set to 1 in a integer variable and return its value. </div></div>
141
- <div class="ttc" id="a00309_html_gaf78ddcc4152c051b2a21e68fecb10980"><div class="ttname"><a href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">glm::powerOfTwoBelow</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt; powerOfTwoBelow(vec&lt; L, T, Q &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is just lower the input value. </div></div>
142
- <div class="ttc" id="a00309_html_ga2bbded187c5febfefc1e524ba31b3fab"><div class="ttname"><a href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">glm::powerOfTwoAbove</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt; powerOfTwoAbove(vec&lt; L, T, Q &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is just higher the input value. </div></div>
143
- <div class="ttc" id="a00309_html_gac87e65d11e16c3d6b91c3bcfaef7da0b"><div class="ttname"><a href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">glm::powerOfTwoNearest</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vec&lt; L, T, Q &gt; powerOfTwoNearest(vec&lt; L, T, Q &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is the closet to the input value. </div></div>
144
- <div class="ttc" id="a00309_html_ga2ff6568089f3a9b67f5c30918855fc6f"><div class="ttname"><a href="a00309.html#ga2ff6568089f3a9b67f5c30918855fc6f">glm::lowestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value)</div></div>
145
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
146
- </div><!-- fragment --></div><!-- contents -->
147
- <!-- start footer part -->
148
- <hr class="footer"/><address class="footer"><small>
149
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
150
- <img class="footer" src="doxygen.png" alt="doxygen"/>
151
- </a> 1.8.10
152
- </small></address>
153
- </body>
154
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00009.html DELETED
@@ -1,223 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: bitfield.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_4c6bd29c73fa4e5a2509e1c15f846751.html">gtc</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">bitfield.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00288.html">GLM_GTC_bitfield</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00009_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:ga091d934233a2e121df91b8c7230357c8"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL <a class="el" href="a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611">glm::u8vec2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga091d934233a2e121df91b8c7230357c8">bitfieldDeinterleave</a> (<a class="el" href="a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e">glm::uint16</a> x)</td></tr>
102
- <tr class="memdesc:ga091d934233a2e121df91b8c7230357c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinterleaves the bits of x. <a href="a00288.html#ga091d934233a2e121df91b8c7230357c8">More...</a><br /></td></tr>
103
- <tr class="separator:ga091d934233a2e121df91b8c7230357c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
104
- <tr class="memitem:ga7d1cc24dfbcdd932c3a2abbb76235f98"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL <a class="el" href="a00304.html#ga2a78447eb9d66a114b193f4a25899c16">glm::u16vec2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98">bitfieldDeinterleave</a> (<a class="el" href="a00263.html#ga1134b580f8da4de94ca6b1de4d37975e">glm::uint32</a> x)</td></tr>
105
- <tr class="memdesc:ga7d1cc24dfbcdd932c3a2abbb76235f98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinterleaves the bits of x. <a href="a00288.html#ga7d1cc24dfbcdd932c3a2abbb76235f98">More...</a><br /></td></tr>
106
- <tr class="separator:ga7d1cc24dfbcdd932c3a2abbb76235f98"><td class="memSeparator" colspan="2">&#160;</td></tr>
107
- <tr class="memitem:ga8dbb8c87092f33bd815dd8a840be5d60"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL <a class="el" href="a00304.html#ga2a266e46ee218d0c680f12b35c500cc0">glm::u32vec2</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">bitfieldDeinterleave</a> (<a class="el" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">glm::uint64</a> x)</td></tr>
108
- <tr class="memdesc:ga8dbb8c87092f33bd815dd8a840be5d60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deinterleaves the bits of x. <a href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">More...</a><br /></td></tr>
109
- <tr class="separator:ga8dbb8c87092f33bd815dd8a840be5d60"><td class="memSeparator" colspan="2">&#160;</td></tr>
110
- <tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
111
- <tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a">bitfieldFillOne</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
112
- <tr class="memdesc:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to 1 a range of bits. <a href="a00288.html#ga46f9295abe3b5c7658f5b13c7f819f0a">More...</a><br /></td></tr>
113
- <tr class="separator:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
114
- <tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
115
- <tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a> (vec&lt; L, T, Q &gt; const &amp;Value, int FirstBit, int BitCount)</td></tr>
116
- <tr class="memdesc:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to 1 a range of bits. <a href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">More...</a><br /></td></tr>
117
- <tr class="separator:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
118
- <tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
119
- <tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee">bitfieldFillZero</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
120
- <tr class="memdesc:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to 0 a range of bits. <a href="a00288.html#ga697b86998b7d74ee0a69d8e9f8819fee">More...</a><br /></td></tr>
121
- <tr class="separator:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
122
- <tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
123
- <tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a> (vec&lt; L, T, Q &gt; const &amp;Value, int FirstBit, int BitCount)</td></tr>
124
- <tr class="memdesc:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to 0 a range of bits. <a href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">More...</a><br /></td></tr>
125
- <tr class="separator:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
126
- <tr class="memitem:ga24cad0069f9a0450abd80b3e89501adf"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga24cad0069f9a0450abd80b3e89501adf">bitfieldInterleave</a> (int8 x, int8 y)</td></tr>
127
- <tr class="memdesc:ga24cad0069f9a0450abd80b3e89501adf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga24cad0069f9a0450abd80b3e89501adf">More...</a><br /></td></tr>
128
- <tr class="separator:ga24cad0069f9a0450abd80b3e89501adf"><td class="memSeparator" colspan="2">&#160;</td></tr>
129
- <tr class="memitem:ga9a4976a529aec2cee56525e1165da484"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga9a4976a529aec2cee56525e1165da484">bitfieldInterleave</a> (uint8 x, uint8 y)</td></tr>
130
- <tr class="memdesc:ga9a4976a529aec2cee56525e1165da484"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga9a4976a529aec2cee56525e1165da484">More...</a><br /></td></tr>
131
- <tr class="separator:ga9a4976a529aec2cee56525e1165da484"><td class="memSeparator" colspan="2">&#160;</td></tr>
132
- <tr class="memitem:ga4a76bbca39c40153f3203d0a1926e142"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga4a76bbca39c40153f3203d0a1926e142">bitfieldInterleave</a> (u8vec2 const &amp;v)</td></tr>
133
- <tr class="memdesc:ga4a76bbca39c40153f3203d0a1926e142"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga4a76bbca39c40153f3203d0a1926e142">More...</a><br /></td></tr>
134
- <tr class="separator:ga4a76bbca39c40153f3203d0a1926e142"><td class="memSeparator" colspan="2">&#160;</td></tr>
135
- <tr class="memitem:gac51c33a394593f0631fa3aa5bb778809"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gac51c33a394593f0631fa3aa5bb778809">bitfieldInterleave</a> (int16 x, int16 y)</td></tr>
136
- <tr class="memdesc:gac51c33a394593f0631fa3aa5bb778809"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#gac51c33a394593f0631fa3aa5bb778809">More...</a><br /></td></tr>
137
- <tr class="separator:gac51c33a394593f0631fa3aa5bb778809"><td class="memSeparator" colspan="2">&#160;</td></tr>
138
- <tr class="memitem:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga94f3646a5667f4be56f8dcf3310e963f">bitfieldInterleave</a> (uint16 x, uint16 y)</td></tr>
139
- <tr class="memdesc:ga94f3646a5667f4be56f8dcf3310e963f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga94f3646a5667f4be56f8dcf3310e963f">More...</a><br /></td></tr>
140
- <tr class="separator:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memSeparator" colspan="2">&#160;</td></tr>
141
- <tr class="memitem:ga406c4ee56af4ca37a73f449f154eca3e"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga406c4ee56af4ca37a73f449f154eca3e">bitfieldInterleave</a> (u16vec2 const &amp;v)</td></tr>
142
- <tr class="memdesc:ga406c4ee56af4ca37a73f449f154eca3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga406c4ee56af4ca37a73f449f154eca3e">More...</a><br /></td></tr>
143
- <tr class="separator:ga406c4ee56af4ca37a73f449f154eca3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
144
- <tr class="memitem:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a">bitfieldInterleave</a> (int32 x, int32 y)</td></tr>
145
- <tr class="memdesc:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#gaebb756a24a0784e3d6fba8bd011ab77a">More...</a><br /></td></tr>
146
- <tr class="separator:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memSeparator" colspan="2">&#160;</td></tr>
147
- <tr class="memitem:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd">bitfieldInterleave</a> (uint32 x, uint32 y)</td></tr>
148
- <tr class="memdesc:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd">More...</a><br /></td></tr>
149
- <tr class="separator:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
150
- <tr class="memitem:ga8cb17574d60abd6ade84bc57c10e8f78"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78">bitfieldInterleave</a> (u32vec2 const &amp;v)</td></tr>
151
- <tr class="memdesc:ga8cb17574d60abd6ade84bc57c10e8f78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x and y. <a href="a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78">More...</a><br /></td></tr>
152
- <tr class="separator:ga8cb17574d60abd6ade84bc57c10e8f78"><td class="memSeparator" colspan="2">&#160;</td></tr>
153
- <tr class="memitem:ga8fdb724dccd4a07d57efc01147102137"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8fdb724dccd4a07d57efc01147102137">bitfieldInterleave</a> (int8 x, int8 y, int8 z)</td></tr>
154
- <tr class="memdesc:ga8fdb724dccd4a07d57efc01147102137"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#ga8fdb724dccd4a07d57efc01147102137">More...</a><br /></td></tr>
155
- <tr class="separator:ga8fdb724dccd4a07d57efc01147102137"><td class="memSeparator" colspan="2">&#160;</td></tr>
156
- <tr class="memitem:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z)</td></tr>
157
- <tr class="memdesc:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#ga9fc2a0dd5dcf8b00e113f272a5feca93">More...</a><br /></td></tr>
158
- <tr class="separator:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memSeparator" colspan="2">&#160;</td></tr>
159
- <tr class="memitem:gaa901c36a842fa5d126ea650549f17b24"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gaa901c36a842fa5d126ea650549f17b24">bitfieldInterleave</a> (int16 x, int16 y, int16 z)</td></tr>
160
- <tr class="memdesc:gaa901c36a842fa5d126ea650549f17b24"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#gaa901c36a842fa5d126ea650549f17b24">More...</a><br /></td></tr>
161
- <tr class="separator:gaa901c36a842fa5d126ea650549f17b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
162
- <tr class="memitem:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga3afd6d38881fe3948c53d4214d2197fd">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z)</td></tr>
163
- <tr class="memdesc:ga3afd6d38881fe3948c53d4214d2197fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#ga3afd6d38881fe3948c53d4214d2197fd">More...</a><br /></td></tr>
164
- <tr class="separator:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
165
- <tr class="memitem:gad2075d96a6640121edaa98ea534102ca"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gad2075d96a6640121edaa98ea534102ca">bitfieldInterleave</a> (int32 x, int32 y, int32 z)</td></tr>
166
- <tr class="memdesc:gad2075d96a6640121edaa98ea534102ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#gad2075d96a6640121edaa98ea534102ca">More...</a><br /></td></tr>
167
- <tr class="separator:gad2075d96a6640121edaa98ea534102ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
168
- <tr class="memitem:gab19fbc739fc0cf7247978602c36f7da8"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gab19fbc739fc0cf7247978602c36f7da8">bitfieldInterleave</a> (uint32 x, uint32 y, uint32 z)</td></tr>
169
- <tr class="memdesc:gab19fbc739fc0cf7247978602c36f7da8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y and z. <a href="a00288.html#gab19fbc739fc0cf7247978602c36f7da8">More...</a><br /></td></tr>
170
- <tr class="separator:gab19fbc739fc0cf7247978602c36f7da8"><td class="memSeparator" colspan="2">&#160;</td></tr>
171
- <tr class="memitem:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d">bitfieldInterleave</a> (int8 x, int8 y, int8 z, int8 w)</td></tr>
172
- <tr class="memdesc:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00288.html#ga8a44ae22f5c953b296c42d067dccbe6d">More...</a><br /></td></tr>
173
- <tr class="separator:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
174
- <tr class="memitem:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z, uint8 w)</td></tr>
175
- <tr class="memdesc:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00288.html#ga14bb274d54a3c26f4919dd7ed0dd0c36">More...</a><br /></td></tr>
176
- <tr class="separator:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
177
- <tr class="memitem:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga180a63161e1319fbd5a53c84d0429c7a">bitfieldInterleave</a> (int16 x, int16 y, int16 z, int16 w)</td></tr>
178
- <tr class="memdesc:ga180a63161e1319fbd5a53c84d0429c7a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00288.html#ga180a63161e1319fbd5a53c84d0429c7a">More...</a><br /></td></tr>
179
- <tr class="separator:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
180
- <tr class="memitem:gafca8768671a14c8016facccb66a89f26"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z, uint16 w)</td></tr>
181
- <tr class="memdesc:gafca8768671a14c8016facccb66a89f26"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interleaves the bits of x, y, z and w. <a href="a00288.html#gafca8768671a14c8016facccb66a89f26">More...</a><br /></td></tr>
182
- <tr class="separator:gafca8768671a14c8016facccb66a89f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
183
- <tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
184
- <tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga2eb49678a344ce1495bdb5586d9896b9">bitfieldRotateLeft</a> (genIUType In, int Shift)</td></tr>
185
- <tr class="memdesc:ga2eb49678a344ce1495bdb5586d9896b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate all bits to the left. <a href="a00288.html#ga2eb49678a344ce1495bdb5586d9896b9">More...</a><br /></td></tr>
186
- <tr class="separator:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
187
- <tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
188
- <tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a> (vec&lt; L, T, Q &gt; const &amp;In, int Shift)</td></tr>
189
- <tr class="memdesc:gae186317091b1a39214ebf79008d44a1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate all bits to the left. <a href="a00288.html#gae186317091b1a39214ebf79008d44a1e">More...</a><br /></td></tr>
190
- <tr class="separator:gae186317091b1a39214ebf79008d44a1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
191
- <tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
192
- <tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca">bitfieldRotateRight</a> (genIUType In, int Shift)</td></tr>
193
- <tr class="memdesc:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate all bits to the right. <a href="a00288.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca">More...</a><br /></td></tr>
194
- <tr class="separator:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
195
- <tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
196
- <tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a> (vec&lt; L, T, Q &gt; const &amp;In, int Shift)</td></tr>
197
- <tr class="memdesc:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rotate all bits to the right. <a href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">More...</a><br /></td></tr>
198
- <tr class="separator:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memSeparator" colspan="2">&#160;</td></tr>
199
- <tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
200
- <tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#gad7eba518a0b71662114571ee76939f8a">mask</a> (genIUType Bits)</td></tr>
201
- <tr class="memdesc:gad7eba518a0b71662114571ee76939f8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a mask of 'count' bits. <a href="a00288.html#gad7eba518a0b71662114571ee76939f8a">More...</a><br /></td></tr>
202
- <tr class="separator:gad7eba518a0b71662114571ee76939f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
203
- <tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
204
- <tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a> (vec&lt; L, T, Q &gt; const &amp;v)</td></tr>
205
- <tr class="memdesc:ga2e64e3b922a296033b825311e7f5fff1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Build a mask of 'count' bits. <a href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">More...</a><br /></td></tr>
206
- <tr class="separator:ga2e64e3b922a296033b825311e7f5fff1"><td class="memSeparator" colspan="2">&#160;</td></tr>
207
- </table>
208
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
209
- <div class="textblock"><p><a class="el" href="a00288.html">GLM_GTC_bitfield</a> </p>
210
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
211
- <dd>
212
- <a class="el" href="a00288.html" title="Include <glm/gtc/bitfield.hpp> to use the features of this extension. ">GLM_GTC_bitfield</a> (dependence) </dd></dl>
213
-
214
- <p>Definition in file <a class="el" href="a00009_source.html">bitfield.hpp</a>.</p>
215
- </div></div><!-- contents -->
216
- <!-- start footer part -->
217
- <hr class="footer"/><address class="footer"><small>
218
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
219
- <img class="footer" src="doxygen.png" alt="doxygen"/>
220
- </a> 1.8.10
221
- </small></address>
222
- </body>
223
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00009_source.html DELETED
@@ -1,212 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: bitfield.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_4c6bd29c73fa4e5a2509e1c15f846751.html">gtc</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">bitfield.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00009.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;../detail/setup.hpp&quot;</span></div>
93
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
94
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#pragma once</span></div>
95
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
96
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// Dependencies</span></div>
97
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../ext/scalar_int_sized.hpp&quot;</span></div>
98
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;../ext/scalar_uint_sized.hpp&quot;</span></div>
99
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;../detail/qualifier.hpp&quot;</span></div>
100
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;../detail/_vectorize.hpp&quot;</span></div>
101
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00174.html">type_precision.hpp</a>&quot;</span></div>
102
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
103
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
104
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
105
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_bitfield extension included&quot;)</span></div>
106
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
107
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
108
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
109
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
110
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
111
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
112
- <div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a>(genIUType Bits);</div>
113
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
114
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
115
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; v);</div>
116
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
117
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
118
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
119
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
120
- <div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
121
- <div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; In, <span class="keywordtype">int</span> Shift);</div>
122
- <div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div>
123
- <div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
124
- <div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00288.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
125
- <div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
126
- <div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
127
- <div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00288.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; In, <span class="keywordtype">int</span> Shift);</div>
128
- <div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
129
- <div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
130
- <div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
131
- <div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
132
- <div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
133
- <div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
134
- <div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
135
- <div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> genIUType&gt;</div>
136
- <div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
137
- <div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
138
- <div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
139
- <div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
140
- <div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
141
- <div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; GLM_FUNC_DECL int16 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y);</div>
142
- <div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
143
- <div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; GLM_FUNC_DECL uint16 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y);</div>
144
- <div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
145
- <div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; GLM_FUNC_DECL uint16 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(<a class="code" href="a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611">u8vec2</a> <span class="keyword">const</span>&amp; v);</div>
146
- <div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;</div>
147
- <div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; GLM_FUNC_DECL <a class="code" href="a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611">glm::u8vec2</a> <a class="code" href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">bitfieldDeinterleave</a>(<a class="code" href="a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e">glm::uint16</a> x);</div>
148
- <div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
149
- <div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y);</div>
150
- <div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
151
- <div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y);</div>
152
- <div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
153
- <div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(<a class="code" href="a00304.html#ga2a78447eb9d66a114b193f4a25899c16">u16vec2</a> <span class="keyword">const</span>&amp; v);</div>
154
- <div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
155
- <div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; GLM_FUNC_DECL <a class="code" href="a00304.html#ga2a78447eb9d66a114b193f4a25899c16">glm::u16vec2</a> <a class="code" href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">bitfieldDeinterleave</a>(<a class="code" href="a00263.html#ga1134b580f8da4de94ca6b1de4d37975e">glm::uint32</a> x);</div>
156
- <div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div>
157
- <div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; GLM_FUNC_DECL <a class="code" href="a00260.html#gaff5189f97f9e842d9636a0f240001b2e">int64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y);</div>
158
- <div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
159
- <div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; GLM_FUNC_DECL <a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">uint64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y);</div>
160
- <div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
161
- <div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; GLM_FUNC_DECL <a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">uint64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(<a class="code" href="a00304.html#ga2a266e46ee218d0c680f12b35c500cc0">u32vec2</a> <span class="keyword">const</span>&amp; v);</div>
162
- <div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
163
- <div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; GLM_FUNC_DECL <a class="code" href="a00304.html#ga2a266e46ee218d0c680f12b35c500cc0">glm::u32vec2</a> <a class="code" href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">bitfieldDeinterleave</a>(<a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">glm::uint64</a> x);</div>
164
- <div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;</div>
165
- <div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z);</div>
166
- <div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
167
- <div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z);</div>
168
- <div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
169
- <div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; GLM_FUNC_DECL <a class="code" href="a00260.html#gaff5189f97f9e842d9636a0f240001b2e">int64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z);</div>
170
- <div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;</div>
171
- <div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; GLM_FUNC_DECL <a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">uint64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z);</div>
172
- <div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;</div>
173
- <div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; GLM_FUNC_DECL <a class="code" href="a00260.html#gaff5189f97f9e842d9636a0f240001b2e">int64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y, int32 z);</div>
174
- <div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
175
- <div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; GLM_FUNC_DECL <a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">uint64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y, uint32 z);</div>
176
- <div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div>
177
- <div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z, int8 w);</div>
178
- <div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div>
179
- <div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z, uint8 w);</div>
180
- <div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
181
- <div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; GLM_FUNC_DECL <a class="code" href="a00260.html#gaff5189f97f9e842d9636a0f240001b2e">int64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z, int16 w);</div>
182
- <div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div>
183
- <div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; GLM_FUNC_DECL <a class="code" href="a00263.html#gab630f76c26b50298187f7889104d4b9c">uint64</a> <a class="code" href="a00288.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z, uint16 w);</div>
184
- <div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
185
- <div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;} <span class="comment">//namespace glm</span></div>
186
- <div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
187
- <div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor">#include &quot;bitfield.inl&quot;</span></div>
188
- <div class="ttc" id="a00263_html_ga1134b580f8da4de94ca6b1de4d37975e"><div class="ttname"><a href="a00263.html#ga1134b580f8da4de94ca6b1de4d37975e">glm::uint32</a></div><div class="ttdeci">detail::uint32 uint32</div><div class="ttdoc">32 bit unsigned integer type. </div><div class="ttdef"><b>Definition:</b> <a href="a00151_source.html#l00064">scalar_uint_sized.hpp:64</a></div></div>
189
- <div class="ttc" id="a00288_html_gafca8768671a14c8016facccb66a89f26"><div class="ttname"><a href="a00288.html#gafca8768671a14c8016facccb66a89f26">glm::bitfieldInterleave</a></div><div class="ttdeci">GLM_FUNC_DECL uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)</div><div class="ttdoc">Interleaves the bits of x, y, z and w. </div></div>
190
- <div class="ttc" id="a00288_html_ga8dbb8c87092f33bd815dd8a840be5d60"><div class="ttname"><a href="a00288.html#ga8dbb8c87092f33bd815dd8a840be5d60">glm::bitfieldDeinterleave</a></div><div class="ttdeci">GLM_FUNC_DECL glm::u32vec2 bitfieldDeinterleave(glm::uint64 x)</div><div class="ttdoc">Deinterleaves the bits of x. </div></div>
191
- <div class="ttc" id="a00288_html_ga0d16c9acef4be79ea9b47c082a0cf7c2"><div class="ttname"><a href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">glm::bitfieldFillZero</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; bitfieldFillZero(vec&lt; L, T, Q &gt; const &amp;Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 0 a range of bits. </div></div>
192
- <div class="ttc" id="a00263_html_ga05f6b0ae8f6a6e135b0e290c25fe0e4e"><div class="ttname"><a href="a00263.html#ga05f6b0ae8f6a6e135b0e290c25fe0e4e">glm::uint16</a></div><div class="ttdeci">detail::uint16 uint16</div><div class="ttdoc">16 bit unsigned integer type. </div><div class="ttdef"><b>Definition:</b> <a href="a00151_source.html#l00061">scalar_uint_sized.hpp:61</a></div></div>
193
- <div class="ttc" id="a00304_html_ga518b8d948a6b4ddb72f84d5c3b7b6611"><div class="ttname"><a href="a00304.html#ga518b8d948a6b4ddb72f84d5c3b7b6611">glm::u8vec2</a></div><div class="ttdeci">vec&lt; 2, u8, defaultp &gt; u8vec2</div><div class="ttdoc">Default qualifier 8 bit unsigned integer vector of 2 components type. </div><div class="ttdef"><b>Definition:</b> <a href="a00035_source.html#l00340">fwd.hpp:340</a></div></div>
194
- <div class="ttc" id="a00288_html_gae186317091b1a39214ebf79008d44a1e"><div class="ttname"><a href="a00288.html#gae186317091b1a39214ebf79008d44a1e">glm::bitfieldRotateLeft</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; bitfieldRotateLeft(vec&lt; L, T, Q &gt; const &amp;In, int Shift)</div><div class="ttdoc">Rotate all bits to the left. </div></div>
195
- <div class="ttc" id="a00288_html_ga2e64e3b922a296033b825311e7f5fff1"><div class="ttname"><a href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">glm::mask</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; mask(vec&lt; L, T, Q &gt; const &amp;v)</div><div class="ttdoc">Build a mask of &#39;count&#39; bits. </div></div>
196
- <div class="ttc" id="a00263_html_gab630f76c26b50298187f7889104d4b9c"><div class="ttname"><a href="a00263.html#gab630f76c26b50298187f7889104d4b9c">glm::uint64</a></div><div class="ttdeci">detail::uint64 uint64</div><div class="ttdoc">64 bit unsigned integer type. </div><div class="ttdef"><b>Definition:</b> <a href="a00151_source.html#l00067">scalar_uint_sized.hpp:67</a></div></div>
197
- <div class="ttc" id="a00288_html_ga3e96dd1f0a4bc892f063251ed118c0c1"><div class="ttname"><a href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">glm::bitfieldFillOne</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; bitfieldFillOne(vec&lt; L, T, Q &gt; const &amp;Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 1 a range of bits. </div></div>
198
- <div class="ttc" id="a00174_html"><div class="ttname"><a href="a00174.html">type_precision.hpp</a></div><div class="ttdoc">GLM_GTC_type_precision </div></div>
199
- <div class="ttc" id="a00260_html_gaff5189f97f9e842d9636a0f240001b2e"><div class="ttname"><a href="a00260.html#gaff5189f97f9e842d9636a0f240001b2e">glm::int64</a></div><div class="ttdeci">detail::int64 int64</div><div class="ttdoc">64 bit signed integer type. </div><div class="ttdef"><b>Definition:</b> <a href="a00146_source.html#l00067">scalar_int_sized.hpp:67</a></div></div>
200
- <div class="ttc" id="a00304_html_ga2a266e46ee218d0c680f12b35c500cc0"><div class="ttname"><a href="a00304.html#ga2a266e46ee218d0c680f12b35c500cc0">glm::u32vec2</a></div><div class="ttdeci">vec&lt; 2, u32, defaultp &gt; u32vec2</div><div class="ttdoc">Default qualifier 32 bit unsigned integer vector of 2 components type. </div><div class="ttdef"><b>Definition:</b> <a href="a00035_source.html#l00380">fwd.hpp:380</a></div></div>
201
- <div class="ttc" id="a00288_html_ga590488e1fc00a6cfe5d3bcaf93fbfe88"><div class="ttname"><a href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">glm::bitfieldRotateRight</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; bitfieldRotateRight(vec&lt; L, T, Q &gt; const &amp;In, int Shift)</div><div class="ttdoc">Rotate all bits to the right. </div></div>
202
- <div class="ttc" id="a00304_html_ga2a78447eb9d66a114b193f4a25899c16"><div class="ttname"><a href="a00304.html#ga2a78447eb9d66a114b193f4a25899c16">glm::u16vec2</a></div><div class="ttdeci">vec&lt; 2, u16, defaultp &gt; u16vec2</div><div class="ttdoc">Default qualifier 16 bit unsigned integer vector of 2 components type. </div><div class="ttdef"><b>Definition:</b> <a href="a00035_source.html#l00360">fwd.hpp:360</a></div></div>
203
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
204
- </div><!-- fragment --></div><!-- contents -->
205
- <!-- start footer part -->
206
- <hr class="footer"/><address class="footer"><small>
207
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
208
- <img class="footer" src="doxygen.png" alt="doxygen"/>
209
- </a> 1.8.10
210
- </small></address>
211
- </body>
212
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00010.html DELETED
@@ -1,124 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: closest_point.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">closest_point.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00310.html">GLM_GTX_closest_point</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00010_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:ga36529c278ef716986151d58d151d697d"><td class="memTemplParams" colspan="2">template&lt;typename T , qualifier Q&gt; </td></tr>
102
- <tr class="memitem:ga36529c278ef716986151d58d151d697d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 3, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00310.html#ga36529c278ef716986151d58d151d697d">closestPointOnLine</a> (vec&lt; 3, T, Q &gt; const &amp;point, vec&lt; 3, T, Q &gt; const &amp;a, vec&lt; 3, T, Q &gt; const &amp;b)</td></tr>
103
- <tr class="memdesc:ga36529c278ef716986151d58d151d697d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the point on a straight line which is the closet of a point. <a href="a00310.html#ga36529c278ef716986151d58d151d697d">More...</a><br /></td></tr>
104
- <tr class="separator:ga36529c278ef716986151d58d151d697d"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
- <tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"></a>
106
- template&lt;typename T , qualifier Q&gt; </td></tr>
107
- <tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 2, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a> (vec&lt; 2, T, Q &gt; const &amp;point, vec&lt; 2, T, Q &gt; const &amp;a, vec&lt; 2, T, Q &gt; const &amp;b)</td></tr>
108
- <tr class="memdesc:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="mdescLeft">&#160;</td><td class="mdescRight">2d lines work as well <br /></td></tr>
109
- <tr class="separator:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memSeparator" colspan="2">&#160;</td></tr>
110
- </table>
111
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
112
- <div class="textblock"><p><a class="el" href="a00310.html">GLM_GTX_closest_point</a> </p>
113
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd></dl>
114
-
115
- <p>Definition in file <a class="el" href="a00010_source.html">closest_point.hpp</a>.</p>
116
- </div></div><!-- contents -->
117
- <!-- start footer part -->
118
- <hr class="footer"/><address class="footer"><small>
119
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
120
- <img class="footer" src="doxygen.png" alt="doxygen"/>
121
- </a> 1.8.10
122
- </small></address>
123
- </body>
124
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00010_source.html DELETED
@@ -1,133 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: closest_point.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">closest_point.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00010.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
93
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
94
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependency:</span></div>
95
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
96
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
97
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
98
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
99
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_closest_point is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.&quot;)</span></div>
100
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"># else</span></div>
101
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_closest_point extension included&quot;)</span></div>
102
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># endif</span></div>
103
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
104
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
105
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
106
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
107
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
108
- <div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
109
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; GLM_FUNC_DECL vec&lt;3, T, Q&gt; <a class="code" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
110
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; point,</div>
111
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; a,</div>
112
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; b);</div>
113
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
114
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
115
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; GLM_FUNC_DECL vec&lt;2, T, Q&gt; <a class="code" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
116
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; point,</div>
117
- <div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; a,</div>
118
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; vec&lt;2, T, Q&gt; <span class="keyword">const</span>&amp; b);</div>
119
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
120
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;}<span class="comment">// namespace glm</span></div>
121
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
122
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor">#include &quot;closest_point.inl&quot;</span></div>
123
- <div class="ttc" id="a00310_html_ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><div class="ttname"><a href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">glm::closestPointOnLine</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; 2, T, Q &gt; closestPointOnLine(vec&lt; 2, T, Q &gt; const &amp;point, vec&lt; 2, T, Q &gt; const &amp;a, vec&lt; 2, T, Q &gt; const &amp;b)</div><div class="ttdoc">2d lines work as well </div></div>
124
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
125
- </div><!-- fragment --></div><!-- contents -->
126
- <!-- start footer part -->
127
- <hr class="footer"/><address class="footer"><small>
128
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
129
- <img class="footer" src="doxygen.png" alt="doxygen"/>
130
- </a> 1.8.10
131
- </small></address>
132
- </body>
133
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00011.html DELETED
@@ -1,137 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: color_encoding.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">color_encoding.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00311.html">GLM_GTX_color_encoding</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00011_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad12f4f65022b2c80e33fcba2ced0dc48"></a>
102
- template&lt;typename T , qualifier Q&gt; </td></tr>
103
- <tr class="memitem:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 3, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a> (vec&lt; 3, T, Q &gt; const &amp;ColorD65XYZ)</td></tr>
104
- <tr class="memdesc:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a D65 YUV color to D50 YUV. <br /></td></tr>
105
- <tr class="separator:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memSeparator" colspan="2">&#160;</td></tr>
106
- <tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5265386fc3ac29e4c580d37ed470859c"></a>
107
- template&lt;typename T , qualifier Q&gt; </td></tr>
108
- <tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 3, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a> (vec&lt; 3, T, Q &gt; const &amp;ColorD65XYZ)</td></tr>
109
- <tr class="memdesc:ga5265386fc3ac29e4c580d37ed470859c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a D65 YUV color to linear sRGB. <br /></td></tr>
110
- <tr class="separator:ga5265386fc3ac29e4c580d37ed470859c"><td class="memSeparator" colspan="2">&#160;</td></tr>
111
- <tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1522ba180e3d83d554a734056da031f9"></a>
112
- template&lt;typename T , qualifier Q&gt; </td></tr>
113
- <tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 3, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a> (vec&lt; 3, T, Q &gt; const &amp;ColorLinearSRGB)</td></tr>
114
- <tr class="memdesc:ga1522ba180e3d83d554a734056da031f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a linear sRGB color to D50 YUV. <br /></td></tr>
115
- <tr class="separator:ga1522ba180e3d83d554a734056da031f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
116
- <tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf9e130d9d4ccf51cc99317de7449f369"></a>
117
- template&lt;typename T , qualifier Q&gt; </td></tr>
118
- <tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; 3, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a> (vec&lt; 3, T, Q &gt; const &amp;ColorLinearSRGB)</td></tr>
119
- <tr class="memdesc:gaf9e130d9d4ccf51cc99317de7449f369"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a linear sRGB color to D65 YUV. <br /></td></tr>
120
- <tr class="separator:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memSeparator" colspan="2">&#160;</td></tr>
121
- </table>
122
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
123
- <div class="textblock"><p><a class="el" href="a00311.html">GLM_GTX_color_encoding</a> </p>
124
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
125
- <dd>
126
- <a class="el" href="a00311.html" title="Include <glm/gtx/color_encoding.hpp> to use the features of this extension. ">GLM_GTX_color_encoding</a> (dependence) </dd></dl>
127
-
128
- <p>Definition in file <a class="el" href="a00011_source.html">color_encoding.hpp</a>.</p>
129
- </div></div><!-- contents -->
130
- <!-- start footer part -->
131
- <hr class="footer"/><address class="footer"><small>
132
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
133
- <img class="footer" src="doxygen.png" alt="doxygen"/>
134
- </a> 1.8.10
135
- </small></address>
136
- </body>
137
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00011_source.html DELETED
@@ -1,139 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: color_encoding.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_f35778ec600a1b9bbc4524e62e226aa2.html">gtx</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">color_encoding.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00011.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
93
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
94
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies</span></div>
95
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../detail/setup.hpp&quot;</span></div>
96
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../detail/qualifier.hpp&quot;</span></div>
97
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../vec3.hpp&quot;</span></div>
98
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
99
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
100
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
101
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
102
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_color_encoding is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.&quot;)</span></div>
103
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"># else</span></div>
104
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_color_encoding extension included&quot;)</span></div>
105
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"># endif</span></div>
106
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#endif</span></div>
107
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;</div>
108
- <div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
109
- <div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;{</div>
110
- <div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
111
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
112
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; GLM_FUNC_DECL vec&lt;3, T, Q&gt; <a class="code" href="a00311.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a>(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; ColorLinearSRGB);</div>
113
- <div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
114
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
115
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; GLM_FUNC_DECL vec&lt;3, T, Q&gt; <a class="code" href="a00311.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a>(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; ColorLinearSRGB);</div>
116
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
117
- <div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
118
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; GLM_FUNC_DECL vec&lt;3, T, Q&gt; <a class="code" href="a00311.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a>(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; ColorD65XYZ);</div>
119
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
120
- <div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, qualifier Q&gt;</div>
121
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GLM_FUNC_DECL vec&lt;3, T, Q&gt; <a class="code" href="a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a>(vec&lt;3, T, Q&gt; <span class="keyword">const</span>&amp; ColorD65XYZ);</div>
122
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
123
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;} <span class="comment">//namespace glm</span></div>
124
- <div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;</div>
125
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#include &quot;color_encoding.inl&quot;</span></div>
126
- <div class="ttc" id="a00311_html_ga5265386fc3ac29e4c580d37ed470859c"><div class="ttname"><a href="a00311.html#ga5265386fc3ac29e4c580d37ed470859c">glm::convertD65XYZToLinearSRGB</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; 3, T, Q &gt; convertD65XYZToLinearSRGB(vec&lt; 3, T, Q &gt; const &amp;ColorD65XYZ)</div><div class="ttdoc">Convert a D65 YUV color to linear sRGB. </div></div>
127
- <div class="ttc" id="a00311_html_ga1522ba180e3d83d554a734056da031f9"><div class="ttname"><a href="a00311.html#ga1522ba180e3d83d554a734056da031f9">glm::convertLinearSRGBToD50XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; 3, T, Q &gt; convertLinearSRGBToD50XYZ(vec&lt; 3, T, Q &gt; const &amp;ColorLinearSRGB)</div><div class="ttdoc">Convert a linear sRGB color to D50 YUV. </div></div>
128
- <div class="ttc" id="a00311_html_gaf9e130d9d4ccf51cc99317de7449f369"><div class="ttname"><a href="a00311.html#gaf9e130d9d4ccf51cc99317de7449f369">glm::convertLinearSRGBToD65XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; 3, T, Q &gt; convertLinearSRGBToD65XYZ(vec&lt; 3, T, Q &gt; const &amp;ColorLinearSRGB)</div><div class="ttdoc">Convert a linear sRGB color to D65 YUV. </div></div>
129
- <div class="ttc" id="a00311_html_gad12f4f65022b2c80e33fcba2ced0dc48"><div class="ttname"><a href="a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48">glm::convertD65XYZToD50XYZ</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; 3, T, Q &gt; convertD65XYZToD50XYZ(vec&lt; 3, T, Q &gt; const &amp;ColorD65XYZ)</div><div class="ttdoc">Convert a D65 YUV color to D50 YUV. </div></div>
130
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
131
- </div><!-- fragment --></div><!-- contents -->
132
- <!-- start footer part -->
133
- <hr class="footer"/><address class="footer"><small>
134
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
135
- <img class="footer" src="doxygen.png" alt="doxygen"/>
136
- </a> 1.8.10
137
- </small></address>
138
- </body>
139
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00012.html DELETED
@@ -1,134 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: color_space.hpp File Reference</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_4c6bd29c73fa4e5a2509e1c15f846751.html">gtc</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="summary">
88
- <a href="#func-members">Functions</a> </div>
89
- <div class="headertitle">
90
- <div class="title">gtc/color_space.hpp File Reference</div> </div>
91
- </div><!--header-->
92
- <div class="contents">
93
-
94
- <p><a class="el" href="a00289.html">GLM_GTC_color_space</a>
95
- <a href="#details">More...</a></p>
96
-
97
- <p><a href="a00012_source.html">Go to the source code of this file.</a></p>
98
- <table class="memberdecls">
99
- <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
100
- Functions</h2></td></tr>
101
- <tr class="memitem:ga42239e7b3da900f7ef37cec7e2476579"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
102
- <tr class="memitem:ga42239e7b3da900f7ef37cec7e2476579"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#ga42239e7b3da900f7ef37cec7e2476579">convertLinearToSRGB</a> (vec&lt; L, T, Q &gt; const &amp;ColorLinear)</td></tr>
103
- <tr class="memdesc:ga42239e7b3da900f7ef37cec7e2476579"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a linear color to sRGB color using a standard gamma correction. <a href="a00289.html#ga42239e7b3da900f7ef37cec7e2476579">More...</a><br /></td></tr>
104
- <tr class="separator:ga42239e7b3da900f7ef37cec7e2476579"><td class="memSeparator" colspan="2">&#160;</td></tr>
105
- <tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
106
- <tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a> (vec&lt; L, T, Q &gt; const &amp;ColorLinear, T Gamma)</td></tr>
107
- <tr class="memdesc:gaace0a21167d13d26116c283009af57f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a linear color to sRGB color using a custom gamma correction. <a href="a00289.html#gaace0a21167d13d26116c283009af57f6">More...</a><br /></td></tr>
108
- <tr class="separator:gaace0a21167d13d26116c283009af57f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
109
- <tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplParams" colspan="2">template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
110
- <tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#ga16c798b7a226b2c3079dedc55083d187">convertSRGBToLinear</a> (vec&lt; L, T, Q &gt; const &amp;ColorSRGB)</td></tr>
111
- <tr class="memdesc:ga16c798b7a226b2c3079dedc55083d187"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a sRGB color to linear color using a standard gamma correction. <a href="a00289.html#ga16c798b7a226b2c3079dedc55083d187">More...</a><br /></td></tr>
112
- <tr class="separator:ga16c798b7a226b2c3079dedc55083d187"><td class="memSeparator" colspan="2">&#160;</td></tr>
113
- <tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad1b91f27a9726c9cb403f9fee6e2e200"></a>
114
- template&lt;length_t L, typename T , qualifier Q&gt; </td></tr>
115
- <tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec&lt; L, T, Q &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a> (vec&lt; L, T, Q &gt; const &amp;ColorSRGB, T Gamma)</td></tr>
116
- <tr class="memdesc:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert a sRGB color to linear color using a custom gamma correction. <br /></td></tr>
117
- <tr class="separator:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memSeparator" colspan="2">&#160;</td></tr>
118
- </table>
119
- <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
120
- <div class="textblock"><p><a class="el" href="a00289.html">GLM_GTC_color_space</a> </p>
121
- <dl class="section see"><dt>See also</dt><dd><a class="el" href="a00280.html" title="Features that implement in C++ the GLSL specification as closely as possible. ">Core features</a> (dependence) </dd>
122
- <dd>
123
- <a class="el" href="a00289.html" title="Include <glm/gtc/color_space.hpp> to use the features of this extension. ">GLM_GTC_color_space</a> (dependence) </dd></dl>
124
-
125
- <p>Definition in file <a class="el" href="a00012_source.html">gtc/color_space.hpp</a>.</p>
126
- </div></div><!-- contents -->
127
- <!-- start footer part -->
128
- <hr class="footer"/><address class="footer"><small>
129
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
130
- <img class="footer" src="doxygen.png" alt="doxygen"/>
131
- </a> 1.8.10
132
- </small></address>
133
- </body>
134
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
submodules/diff-gaussian-rasterization/third_party/glm/doc/api/a00012_source.html DELETED
@@ -1,136 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5
- <meta http-equiv="X-UA-Compatible" content="IE=9"/>
6
- <meta name="generator" content="Doxygen 1.8.10"/>
7
- <title>0.9.9 API documentation: color_space.hpp Source File</title>
8
- <link href="tabs.css" rel="stylesheet" type="text/css"/>
9
- <script type="text/javascript" src="jquery.js"></script>
10
- <script type="text/javascript" src="dynsections.js"></script>
11
- <link href="search/search.css" rel="stylesheet" type="text/css"/>
12
- <script type="text/javascript" src="search/searchdata.js"></script>
13
- <script type="text/javascript" src="search/search.js"></script>
14
- <script type="text/javascript">
15
- $(document).ready(function() { init_search(); });
16
- </script>
17
- <link href="doxygen.css" rel="stylesheet" type="text/css" />
18
- </head>
19
- <body>
20
- <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
21
- <div id="titlearea">
22
- <table cellspacing="0" cellpadding="0">
23
- <tbody>
24
- <tr style="height: 56px;">
25
- <td id="projectlogo"><img alt="Logo" src="logo-mini.png"/></td>
26
- <td id="projectalign" style="padding-left: 0.5em;">
27
- <div id="projectname">0.9.9 API documentation
28
- </div>
29
- </td>
30
- </tr>
31
- </tbody>
32
- </table>
33
- </div>
34
- <!-- end header part -->
35
- <!-- Generated by Doxygen 1.8.10 -->
36
- <script type="text/javascript">
37
- var searchBox = new SearchBox("searchBox", "search",false,'Search');
38
- </script>
39
- <div id="navrow1" class="tabs">
40
- <ul class="tablist">
41
- <li><a href="index.html"><span>Main&#160;Page</span></a></li>
42
- <li><a href="modules.html"><span>Modules</span></a></li>
43
- <li class="current"><a href="files.html"><span>Files</span></a></li>
44
- <li>
45
- <div id="MSearchBox" class="MSearchBoxInactive">
46
- <span class="left">
47
- <img id="MSearchSelect" src="search/mag_sel.png"
48
- onmouseover="return searchBox.OnSearchSelectShow()"
49
- onmouseout="return searchBox.OnSearchSelectHide()"
50
- alt=""/>
51
- <input type="text" id="MSearchField" value="Search" accesskey="S"
52
- onfocus="searchBox.OnSearchFieldFocus(true)"
53
- onblur="searchBox.OnSearchFieldFocus(false)"
54
- onkeyup="searchBox.OnSearchFieldChange(event)"/>
55
- </span><span class="right">
56
- <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
57
- </span>
58
- </div>
59
- </li>
60
- </ul>
61
- </div>
62
- <div id="navrow2" class="tabs2">
63
- <ul class="tablist">
64
- <li><a href="files.html"><span>File&#160;List</span></a></li>
65
- </ul>
66
- </div>
67
- <!-- window showing the filter options -->
68
- <div id="MSearchSelectWindow"
69
- onmouseover="return searchBox.OnSearchSelectShow()"
70
- onmouseout="return searchBox.OnSearchSelectHide()"
71
- onkeydown="return searchBox.OnSearchSelectKey(event)">
72
- </div>
73
-
74
- <!-- iframe showing the search results (closed by default) -->
75
- <div id="MSearchResultsWindow">
76
- <iframe src="javascript:void(0)" frameborder="0"
77
- name="MSearchResults" id="MSearchResults">
78
- </iframe>
79
- </div>
80
-
81
- <div id="nav-path" class="navpath">
82
- <ul>
83
- <li class="navelem"><a class="el" href="dir_3a581ba30d25676e4b797b1f96d53b45.html">F:</a></li><li class="navelem"><a class="el" href="dir_9e5fe034a00e89334fd5186c3e7db156.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_d9496f0844b48bc7e53b5af8c99b9ab2.html">Source</a></li><li class="navelem"><a class="el" href="dir_a8bee7be44182a33f3820393ae0b105d.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_44e5e654415abd9ca6fdeaddaff8565e.html">glm</a></li><li class="navelem"><a class="el" href="dir_cef2d71d502cb69a9252bca2297d9549.html">glm</a></li><li class="navelem"><a class="el" href="dir_4c6bd29c73fa4e5a2509e1c15f846751.html">gtc</a></li> </ul>
84
- </div>
85
- </div><!-- top -->
86
- <div class="header">
87
- <div class="headertitle">
88
- <div class="title">gtc/color_space.hpp</div> </div>
89
- </div><!--header-->
90
- <div class="contents">
91
- <a href="a00012.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
92
- <div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
93
- <div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
94
- <div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies</span></div>
95
- <div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../detail/setup.hpp&quot;</span></div>
96
- <div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../detail/qualifier.hpp&quot;</span></div>
97
- <div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../exponential.hpp&quot;</span></div>
98
- <div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;../vec3.hpp&quot;</span></div>
99
- <div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;../vec4.hpp&quot;</span></div>
100
- <div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
101
- <div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
102
- <div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
103
- <div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_color_space extension included&quot;)</span></div>
104
- <div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
105
- <div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
106
- <div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
107
- <div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
108
- <div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
109
- <div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
110
- <div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; ColorLinear);</div>
111
- <div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
112
- <div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
113
- <div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; ColorLinear, T Gamma);</div>
114
- <div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
115
- <div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
116
- <div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; ColorSRGB);</div>
117
- <div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
118
- <div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// IEC 61966-2-1:1999 / Rec. 709 specification https://www.w3.org/Graphics/Color/srgb</span></div>
119
- <div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span>&lt;length_t L, <span class="keyword">typename</span> T, qualifier Q&gt;</div>
120
- <div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_FUNC_DECL vec&lt;L, T, Q&gt; <a class="code" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec&lt;L, T, Q&gt; <span class="keyword">const</span>&amp; ColorSRGB, T Gamma);</div>
121
- <div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
122
- <div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;} <span class="comment">//namespace glm</span></div>
123
- <div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
124
- <div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;color_space.inl&quot;</span></div>
125
- <div class="ttc" id="a00289_html_gaace0a21167d13d26116c283009af57f6"><div class="ttname"><a href="a00289.html#gaace0a21167d13d26116c283009af57f6">glm::convertLinearToSRGB</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; convertLinearToSRGB(vec&lt; L, T, Q &gt; const &amp;ColorLinear, T Gamma)</div><div class="ttdoc">Convert a linear color to sRGB color using a custom gamma correction. </div></div>
126
- <div class="ttc" id="a00289_html_gad1b91f27a9726c9cb403f9fee6e2e200"><div class="ttname"><a href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">glm::convertSRGBToLinear</a></div><div class="ttdeci">GLM_FUNC_DECL vec&lt; L, T, Q &gt; convertSRGBToLinear(vec&lt; L, T, Q &gt; const &amp;ColorSRGB, T Gamma)</div><div class="ttdoc">Convert a sRGB color to linear color using a custom gamma correction. </div></div>
127
- <div class="ttc" id="a00236_html"><div class="ttname"><a href="a00236.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00015_source.html#l00020">common.hpp:20</a></div></div>
128
- </div><!-- fragment --></div><!-- contents -->
129
- <!-- start footer part -->
130
- <hr class="footer"/><address class="footer"><small>
131
- Generated by &#160;<a href="http://www.doxygen.org/index.html">
132
- <img class="footer" src="doxygen.png" alt="doxygen"/>
133
- </a> 1.8.10
134
- </small></address>
135
- </body>
136
- </html>