Spaces:
Running
on
Zero
Running
on
Zero
update
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- requirements.txt +2 -1
- submodules/diff-surfel-rasterization/.gitignore +7 -0
- submodules/diff-surfel-rasterization/.gitmodules +3 -0
- submodules/diff-surfel-rasterization/CMakeLists.txt +36 -0
- submodules/diff-surfel-rasterization/LICENSE.md +83 -0
- submodules/diff-surfel-rasterization/README.md +33 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/auxiliary.h +305 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/backward.cu +734 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/backward.h +70 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/config.h +19 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/forward.cu +537 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/forward.h +72 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer.h +90 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer_impl.cu +448 -0
- submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer_impl.h +74 -0
- submodules/diff-surfel-rasterization/diff_surfel_rasterization/__init__.py +223 -0
- submodules/diff-surfel-rasterization/ext.cpp +19 -0
- submodules/diff-surfel-rasterization/rasterize_points.cu +254 -0
- submodules/diff-surfel-rasterization/rasterize_points.h +68 -0
- submodules/diff-surfel-rasterization/setup.py +35 -0
- submodules/diff-surfel-rasterization/third_party/glm/.appveyor.yml +92 -0
- submodules/diff-surfel-rasterization/third_party/glm/.gitignore +61 -0
- submodules/diff-surfel-rasterization/third_party/glm/.travis.yml +388 -0
- submodules/diff-surfel-rasterization/third_party/glm/CMakeLists.txt +45 -0
- submodules/diff-surfel-rasterization/third_party/glm/cmake/cmake_uninstall.cmake.in +21 -0
- submodules/diff-surfel-rasterization/third_party/glm/copying.txt +54 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00001_source.html +493 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00002_source.html +121 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00003_source.html +182 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00004_source.html +0 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00005_source.html +0 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00006_source.html +262 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00007.html +205 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00007_source.html +250 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00008.html +149 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00008_source.html +154 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00009.html +223 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00009_source.html +212 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00010.html +124 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00010_source.html +133 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00011.html +137 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00011_source.html +139 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00012.html +134 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00012_source.html +136 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00013.html +139 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00013_source.html +150 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00014.html +131 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00014_source.html +141 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00015.html +267 -0
- submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00015_source.html +276 -0
requirements.txt
CHANGED
@@ -44,4 +44,5 @@ OpenEXR
|
|
44 |
onnxscript
|
45 |
tritonclient
|
46 |
gradio==4.43.0
|
47 |
-
|
|
|
|
44 |
onnxscript
|
45 |
tritonclient
|
46 |
gradio==4.43.0
|
47 |
+
submodules/diff-surfel-rasterization
|
48 |
+
submodules/simple-knn
|
submodules/diff-surfel-rasterization/.gitignore
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
build/
|
2 |
+
diff_surfel_rasterization.egg-info/
|
3 |
+
dist/
|
4 |
+
*.so
|
5 |
+
.vscode
|
6 |
+
**__pycache__**
|
7 |
+
*.pyc
|
submodules/diff-surfel-rasterization/.gitmodules
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
[submodule "third_party/glm"]
|
2 |
+
path = third_party/glm
|
3 |
+
url = https://github.com/g-truc/glm.git
|
submodules/diff-surfel-rasterization/CMakeLists.txt
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/LICENSE.md
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Differential Surfel Rasterization
|
2 |
+
|
3 |
+
This is the rasterization engine for the paper "2D Gaussian Splatting for Geometrically Accurate 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>@inproceedings{Huang2DGS2024,
|
9 |
+
title={2D Gaussian Splatting for Geometrically Accurate Radiance Fields},
|
10 |
+
author={Huang, Binbin and Yu, Zehao and Chen, Anpei and Geiger, Andreas and Gao, Shenghua},
|
11 |
+
publisher = {Association for Computing Machinery},
|
12 |
+
booktitle = {SIGGRAPH 2024 Conference Papers},
|
13 |
+
year = {2024},
|
14 |
+
doi = {10.1145/3641519.3657428}
|
15 |
+
}</code></pre>
|
16 |
+
</div>
|
17 |
+
</section>
|
18 |
+
|
19 |
+
<section class="section" id="BibTeX">
|
20 |
+
<div class="container is-max-desktop content">
|
21 |
+
<h2 class="title">BibTeX</h2>
|
22 |
+
<pre><code>@Article{kerbl3Dgaussians,
|
23 |
+
author = {Kerbl, Bernhard and Kopanas, Georgios and Leimk{\"u}hler, Thomas and Drettakis, George},
|
24 |
+
title = {3D Gaussian Splatting for Real-Time Radiance Field Rendering},
|
25 |
+
journal = {ACM Transactions on Graphics},
|
26 |
+
number = {4},
|
27 |
+
volume = {42},
|
28 |
+
month = {July},
|
29 |
+
year = {2023},
|
30 |
+
url = {https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/}
|
31 |
+
}</code></pre>
|
32 |
+
</div>
|
33 |
+
</section>
|
submodules/diff-surfel-rasterization/cuda_rasterizer/auxiliary.h
ADDED
@@ -0,0 +1,305 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
#define TIGHTBBOX 0
|
22 |
+
#define RENDER_AXUTILITY 1
|
23 |
+
#define DEPTH_OFFSET 0
|
24 |
+
#define ALPHA_OFFSET 1
|
25 |
+
#define NORMAL_OFFSET 2
|
26 |
+
#define MIDDEPTH_OFFSET 5
|
27 |
+
#define DISTORTION_OFFSET 6
|
28 |
+
// #define MEDIAN_WEIGHT_OFFSET 7
|
29 |
+
|
30 |
+
// distortion helper macros
|
31 |
+
#define BACKFACE_CULL 1
|
32 |
+
#define DUAL_VISIABLE 1
|
33 |
+
// #define NEAR_PLANE 0.2
|
34 |
+
// #define FAR_PLANE 100.0
|
35 |
+
#define DETACH_WEIGHT 0
|
36 |
+
|
37 |
+
__device__ const float near_n = 0.2;
|
38 |
+
__device__ const float far_n = 100.0;
|
39 |
+
__device__ const float FilterSize = 0.707106; // sqrt(2) / 2
|
40 |
+
__device__ const float FilterInvSquare = 2.0f;
|
41 |
+
|
42 |
+
// Spherical harmonics coefficients
|
43 |
+
__device__ const float SH_C0 = 0.28209479177387814f;
|
44 |
+
__device__ const float SH_C1 = 0.4886025119029199f;
|
45 |
+
__device__ const float SH_C2[] = {
|
46 |
+
1.0925484305920792f,
|
47 |
+
-1.0925484305920792f,
|
48 |
+
0.31539156525252005f,
|
49 |
+
-1.0925484305920792f,
|
50 |
+
0.5462742152960396f
|
51 |
+
};
|
52 |
+
__device__ const float SH_C3[] = {
|
53 |
+
-0.5900435899266435f,
|
54 |
+
2.890611442640554f,
|
55 |
+
-0.4570457994644658f,
|
56 |
+
0.3731763325901154f,
|
57 |
+
-0.4570457994644658f,
|
58 |
+
1.445305721320277f,
|
59 |
+
-0.5900435899266435f
|
60 |
+
};
|
61 |
+
|
62 |
+
__forceinline__ __device__ float ndc2Pix(float v, int S)
|
63 |
+
{
|
64 |
+
return ((v + 1.0) * S - 1.0) * 0.5;
|
65 |
+
}
|
66 |
+
|
67 |
+
__forceinline__ __device__ void getRect(const float2 p, int max_radius, uint2& rect_min, uint2& rect_max, dim3 grid)
|
68 |
+
{
|
69 |
+
rect_min = {
|
70 |
+
min(grid.x, max((int)0, (int)((p.x - max_radius) / BLOCK_X))),
|
71 |
+
min(grid.y, max((int)0, (int)((p.y - max_radius) / BLOCK_Y)))
|
72 |
+
};
|
73 |
+
rect_max = {
|
74 |
+
min(grid.x, max((int)0, (int)((p.x + max_radius + BLOCK_X - 1) / BLOCK_X))),
|
75 |
+
min(grid.y, max((int)0, (int)((p.y + max_radius + BLOCK_Y - 1) / BLOCK_Y)))
|
76 |
+
};
|
77 |
+
}
|
78 |
+
|
79 |
+
__forceinline__ __device__ float3 transformPoint4x3(const float3& p, const float* matrix)
|
80 |
+
{
|
81 |
+
float3 transformed = {
|
82 |
+
matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z + matrix[12],
|
83 |
+
matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z + matrix[13],
|
84 |
+
matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z + matrix[14],
|
85 |
+
};
|
86 |
+
return transformed;
|
87 |
+
}
|
88 |
+
|
89 |
+
__forceinline__ __device__ float4 transformPoint4x4(const float3& p, const float* matrix)
|
90 |
+
{
|
91 |
+
float4 transformed = {
|
92 |
+
matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z + matrix[12],
|
93 |
+
matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z + matrix[13],
|
94 |
+
matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z + matrix[14],
|
95 |
+
matrix[3] * p.x + matrix[7] * p.y + matrix[11] * p.z + matrix[15]
|
96 |
+
};
|
97 |
+
return transformed;
|
98 |
+
}
|
99 |
+
|
100 |
+
__forceinline__ __device__ float3 transformVec4x3(const float3& p, const float* matrix)
|
101 |
+
{
|
102 |
+
float3 transformed = {
|
103 |
+
matrix[0] * p.x + matrix[4] * p.y + matrix[8] * p.z,
|
104 |
+
matrix[1] * p.x + matrix[5] * p.y + matrix[9] * p.z,
|
105 |
+
matrix[2] * p.x + matrix[6] * p.y + matrix[10] * p.z,
|
106 |
+
};
|
107 |
+
return transformed;
|
108 |
+
}
|
109 |
+
|
110 |
+
__forceinline__ __device__ float3 transformVec4x3Transpose(const float3& p, const float* matrix)
|
111 |
+
{
|
112 |
+
float3 transformed = {
|
113 |
+
matrix[0] * p.x + matrix[1] * p.y + matrix[2] * p.z,
|
114 |
+
matrix[4] * p.x + matrix[5] * p.y + matrix[6] * p.z,
|
115 |
+
matrix[8] * p.x + matrix[9] * p.y + matrix[10] * p.z,
|
116 |
+
};
|
117 |
+
return transformed;
|
118 |
+
}
|
119 |
+
|
120 |
+
__forceinline__ __device__ float dnormvdz(float3 v, float3 dv)
|
121 |
+
{
|
122 |
+
float sum2 = v.x * v.x + v.y * v.y + v.z * v.z;
|
123 |
+
float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
|
124 |
+
float dnormvdz = (-v.x * v.z * dv.x - v.y * v.z * dv.y + (sum2 - v.z * v.z) * dv.z) * invsum32;
|
125 |
+
return dnormvdz;
|
126 |
+
}
|
127 |
+
|
128 |
+
__forceinline__ __device__ float3 dnormvdv(float3 v, float3 dv)
|
129 |
+
{
|
130 |
+
float sum2 = v.x * v.x + v.y * v.y + v.z * v.z;
|
131 |
+
float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
|
132 |
+
|
133 |
+
float3 dnormvdv;
|
134 |
+
dnormvdv.x = ((+sum2 - v.x * v.x) * dv.x - v.y * v.x * dv.y - v.z * v.x * dv.z) * invsum32;
|
135 |
+
dnormvdv.y = (-v.x * v.y * dv.x + (sum2 - v.y * v.y) * dv.y - v.z * v.y * dv.z) * invsum32;
|
136 |
+
dnormvdv.z = (-v.x * v.z * dv.x - v.y * v.z * dv.y + (sum2 - v.z * v.z) * dv.z) * invsum32;
|
137 |
+
return dnormvdv;
|
138 |
+
}
|
139 |
+
|
140 |
+
__forceinline__ __device__ float4 dnormvdv(float4 v, float4 dv)
|
141 |
+
{
|
142 |
+
float sum2 = v.x * v.x + v.y * v.y + v.z * v.z + v.w * v.w;
|
143 |
+
float invsum32 = 1.0f / sqrt(sum2 * sum2 * sum2);
|
144 |
+
|
145 |
+
float4 vdv = { v.x * dv.x, v.y * dv.y, v.z * dv.z, v.w * dv.w };
|
146 |
+
float vdv_sum = vdv.x + vdv.y + vdv.z + vdv.w;
|
147 |
+
float4 dnormvdv;
|
148 |
+
dnormvdv.x = ((sum2 - v.x * v.x) * dv.x - v.x * (vdv_sum - vdv.x)) * invsum32;
|
149 |
+
dnormvdv.y = ((sum2 - v.y * v.y) * dv.y - v.y * (vdv_sum - vdv.y)) * invsum32;
|
150 |
+
dnormvdv.z = ((sum2 - v.z * v.z) * dv.z - v.z * (vdv_sum - vdv.z)) * invsum32;
|
151 |
+
dnormvdv.w = ((sum2 - v.w * v.w) * dv.w - v.w * (vdv_sum - vdv.w)) * invsum32;
|
152 |
+
return dnormvdv;
|
153 |
+
}
|
154 |
+
|
155 |
+
__forceinline__ __device__ float3 cross(float3 a, float3 b){return make_float3(a.y*b.z - a.z*b.y, a.z*b.x - a.x*b.z, a.x*b.y - a.y*b.x);}
|
156 |
+
|
157 |
+
__forceinline__ __device__ float3 operator*(float3 a, float3 b){return make_float3(a.x * b.x, a.y * b.y, a.z*b.z);}
|
158 |
+
|
159 |
+
__forceinline__ __device__ float2 operator*(float2 a, float2 b){return make_float2(a.x * b.x, a.y * b.y);}
|
160 |
+
|
161 |
+
__forceinline__ __device__ float3 operator*(float f, float3 a){return make_float3(f * a.x, f * a.y, f * a.z);}
|
162 |
+
|
163 |
+
__forceinline__ __device__ float2 operator*(float f, float2 a){return make_float2(f * a.x, f * a.y);}
|
164 |
+
|
165 |
+
__forceinline__ __device__ float3 operator-(float3 a, float3 b){return make_float3(a.x - b.x, a.y - b.y, a.z - b.z);}
|
166 |
+
|
167 |
+
__forceinline__ __device__ float2 operator-(float2 a, float2 b){return make_float2(a.x - b.x, a.y - b.y);}
|
168 |
+
|
169 |
+
__forceinline__ __device__ float sumf3(float3 a){return a.x + a.y + a.z;}
|
170 |
+
|
171 |
+
__forceinline__ __device__ float sumf2(float2 a){return a.x + a.y;}
|
172 |
+
|
173 |
+
__forceinline__ __device__ float3 sqrtf3(float3 a){return make_float3(sqrtf(a.x), sqrtf(a.y), sqrtf(a.z));}
|
174 |
+
|
175 |
+
__forceinline__ __device__ float2 sqrtf2(float2 a){return make_float2(sqrtf(a.x), sqrtf(a.y));}
|
176 |
+
|
177 |
+
__forceinline__ __device__ float3 minf3(float f, float3 a){return make_float3(min(f, a.x), min(f, a.y), min(f, a.z));}
|
178 |
+
|
179 |
+
__forceinline__ __device__ float2 minf2(float f, float2 a){return make_float2(min(f, a.x), min(f, a.y));}
|
180 |
+
|
181 |
+
__forceinline__ __device__ float3 maxf3(float f, float3 a){return make_float3(max(f, a.x), max(f, a.y), max(f, a.z));}
|
182 |
+
|
183 |
+
__forceinline__ __device__ float2 maxf2(float f, float2 a){return make_float2(max(f, a.x), max(f, a.y));}
|
184 |
+
|
185 |
+
__forceinline__ __device__ bool in_frustum(int idx,
|
186 |
+
const float* orig_points,
|
187 |
+
const float* viewmatrix,
|
188 |
+
const float* projmatrix,
|
189 |
+
bool prefiltered,
|
190 |
+
float3& p_view)
|
191 |
+
{
|
192 |
+
float3 p_orig = { orig_points[3 * idx], orig_points[3 * idx + 1], orig_points[3 * idx + 2] };
|
193 |
+
|
194 |
+
// Bring points to screen space
|
195 |
+
float4 p_hom = transformPoint4x4(p_orig, projmatrix);
|
196 |
+
float p_w = 1.0f / (p_hom.w + 0.0000001f);
|
197 |
+
float3 p_proj = { p_hom.x * p_w, p_hom.y * p_w, p_hom.z * p_w };
|
198 |
+
p_view = transformPoint4x3(p_orig, viewmatrix);
|
199 |
+
|
200 |
+
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)))
|
201 |
+
{
|
202 |
+
if (prefiltered)
|
203 |
+
{
|
204 |
+
printf("Point is filtered although prefiltered is set. This shouldn't happen!");
|
205 |
+
__trap();
|
206 |
+
}
|
207 |
+
return false;
|
208 |
+
}
|
209 |
+
return true;
|
210 |
+
}
|
211 |
+
|
212 |
+
// adopt from gsplat: https://github.com/nerfstudio-project/gsplat/blob/main/gsplat/cuda/csrc/forward.cu
|
213 |
+
inline __device__ glm::mat3 quat_to_rotmat(const glm::vec4 quat) {
|
214 |
+
// quat to rotation matrix
|
215 |
+
float s = rsqrtf(
|
216 |
+
quat.w * quat.w + quat.x * quat.x + quat.y * quat.y + quat.z * quat.z
|
217 |
+
);
|
218 |
+
float w = quat.x * s;
|
219 |
+
float x = quat.y * s;
|
220 |
+
float y = quat.z * s;
|
221 |
+
float z = quat.w * s;
|
222 |
+
|
223 |
+
// glm matrices are column-major
|
224 |
+
return glm::mat3(
|
225 |
+
1.f - 2.f * (y * y + z * z),
|
226 |
+
2.f * (x * y + w * z),
|
227 |
+
2.f * (x * z - w * y),
|
228 |
+
2.f * (x * y - w * z),
|
229 |
+
1.f - 2.f * (x * x + z * z),
|
230 |
+
2.f * (y * z + w * x),
|
231 |
+
2.f * (x * z + w * y),
|
232 |
+
2.f * (y * z - w * x),
|
233 |
+
1.f - 2.f * (x * x + y * y)
|
234 |
+
);
|
235 |
+
}
|
236 |
+
|
237 |
+
|
238 |
+
inline __device__ glm::vec4
|
239 |
+
quat_to_rotmat_vjp(const glm::vec4 quat, const glm::mat3 v_R) {
|
240 |
+
float s = rsqrtf(
|
241 |
+
quat.w * quat.w + quat.x * quat.x + quat.y * quat.y + quat.z * quat.z
|
242 |
+
);
|
243 |
+
float w = quat.x * s;
|
244 |
+
float x = quat.y * s;
|
245 |
+
float y = quat.z * s;
|
246 |
+
float z = quat.w * s;
|
247 |
+
|
248 |
+
glm::vec4 v_quat;
|
249 |
+
// v_R is COLUMN MAJOR
|
250 |
+
// w element stored in x field
|
251 |
+
v_quat.x =
|
252 |
+
2.f * (
|
253 |
+
// v_quat.w = 2.f * (
|
254 |
+
x * (v_R[1][2] - v_R[2][1]) + y * (v_R[2][0] - v_R[0][2]) +
|
255 |
+
z * (v_R[0][1] - v_R[1][0])
|
256 |
+
);
|
257 |
+
// x element in y field
|
258 |
+
v_quat.y =
|
259 |
+
2.f *
|
260 |
+
(
|
261 |
+
// v_quat.x = 2.f * (
|
262 |
+
-2.f * x * (v_R[1][1] + v_R[2][2]) + y * (v_R[0][1] + v_R[1][0]) +
|
263 |
+
z * (v_R[0][2] + v_R[2][0]) + w * (v_R[1][2] - v_R[2][1])
|
264 |
+
);
|
265 |
+
// y element in z field
|
266 |
+
v_quat.z =
|
267 |
+
2.f *
|
268 |
+
(
|
269 |
+
// v_quat.y = 2.f * (
|
270 |
+
x * (v_R[0][1] + v_R[1][0]) - 2.f * y * (v_R[0][0] + v_R[2][2]) +
|
271 |
+
z * (v_R[1][2] + v_R[2][1]) + w * (v_R[2][0] - v_R[0][2])
|
272 |
+
);
|
273 |
+
// z element in w field
|
274 |
+
v_quat.w =
|
275 |
+
2.f *
|
276 |
+
(
|
277 |
+
// v_quat.z = 2.f * (
|
278 |
+
x * (v_R[0][2] + v_R[2][0]) + y * (v_R[1][2] + v_R[2][1]) -
|
279 |
+
2.f * z * (v_R[0][0] + v_R[1][1]) + w * (v_R[0][1] - v_R[1][0])
|
280 |
+
);
|
281 |
+
return v_quat;
|
282 |
+
}
|
283 |
+
|
284 |
+
|
285 |
+
inline __device__ glm::mat3
|
286 |
+
scale_to_mat(const glm::vec2 scale, const float glob_scale) {
|
287 |
+
glm::mat3 S = glm::mat3(1.f);
|
288 |
+
S[0][0] = glob_scale * scale.x;
|
289 |
+
S[1][1] = glob_scale * scale.y;
|
290 |
+
// S[2][2] = glob_scale * scale.z;
|
291 |
+
return S;
|
292 |
+
}
|
293 |
+
|
294 |
+
|
295 |
+
|
296 |
+
#define CHECK_CUDA(A, debug) \
|
297 |
+
A; if(debug) { \
|
298 |
+
auto ret = cudaDeviceSynchronize(); \
|
299 |
+
if (ret != cudaSuccess) { \
|
300 |
+
std::cerr << "\n[CUDA ERROR] in " << __FILE__ << "\nLine " << __LINE__ << ": " << cudaGetErrorString(ret); \
|
301 |
+
throw std::runtime_error(cudaGetErrorString(ret)); \
|
302 |
+
} \
|
303 |
+
}
|
304 |
+
|
305 |
+
#endif
|
submodules/diff-surfel-rasterization/cuda_rasterizer/backward.cu
ADDED
@@ -0,0 +1,734 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
|
142 |
+
// Backward version of the rendering procedure.
|
143 |
+
template <uint32_t C>
|
144 |
+
__global__ void __launch_bounds__(BLOCK_X * BLOCK_Y)
|
145 |
+
renderCUDA(
|
146 |
+
const uint2* __restrict__ ranges,
|
147 |
+
const uint32_t* __restrict__ point_list,
|
148 |
+
int W, int H,
|
149 |
+
float focal_x, float focal_y,
|
150 |
+
const float* __restrict__ bg_color,
|
151 |
+
const float2* __restrict__ points_xy_image,
|
152 |
+
const float4* __restrict__ normal_opacity,
|
153 |
+
const float* __restrict__ transMats,
|
154 |
+
const float* __restrict__ colors,
|
155 |
+
const float* __restrict__ depths,
|
156 |
+
const float* __restrict__ final_Ts,
|
157 |
+
const uint32_t* __restrict__ n_contrib,
|
158 |
+
const float* __restrict__ dL_dpixels,
|
159 |
+
const float* __restrict__ dL_depths,
|
160 |
+
float * __restrict__ dL_dtransMat,
|
161 |
+
float3* __restrict__ dL_dmean2D,
|
162 |
+
float* __restrict__ dL_dnormal3D,
|
163 |
+
float* __restrict__ dL_dopacity,
|
164 |
+
float* __restrict__ dL_dcolors)
|
165 |
+
{
|
166 |
+
// We rasterize again. Compute necessary block info.
|
167 |
+
auto block = cg::this_thread_block();
|
168 |
+
const uint32_t horizontal_blocks = (W + BLOCK_X - 1) / BLOCK_X;
|
169 |
+
const uint2 pix_min = { block.group_index().x * BLOCK_X, block.group_index().y * BLOCK_Y };
|
170 |
+
const uint2 pix_max = { min(pix_min.x + BLOCK_X, W), min(pix_min.y + BLOCK_Y , H) };
|
171 |
+
const uint2 pix = { pix_min.x + block.thread_index().x, pix_min.y + block.thread_index().y };
|
172 |
+
const uint32_t pix_id = W * pix.y + pix.x;
|
173 |
+
const float2 pixf = {(float)pix.x, (float)pix.y};
|
174 |
+
|
175 |
+
const bool inside = pix.x < W&& pix.y < H;
|
176 |
+
const uint2 range = ranges[block.group_index().y * horizontal_blocks + block.group_index().x];
|
177 |
+
|
178 |
+
const int rounds = ((range.y - range.x + BLOCK_SIZE - 1) / BLOCK_SIZE);
|
179 |
+
|
180 |
+
bool done = !inside;
|
181 |
+
int toDo = range.y - range.x;
|
182 |
+
|
183 |
+
__shared__ int collected_id[BLOCK_SIZE];
|
184 |
+
__shared__ float2 collected_xy[BLOCK_SIZE];
|
185 |
+
__shared__ float4 collected_normal_opacity[BLOCK_SIZE];
|
186 |
+
__shared__ float collected_colors[C * BLOCK_SIZE];
|
187 |
+
__shared__ float3 collected_Tu[BLOCK_SIZE];
|
188 |
+
__shared__ float3 collected_Tv[BLOCK_SIZE];
|
189 |
+
__shared__ float3 collected_Tw[BLOCK_SIZE];
|
190 |
+
// __shared__ float collected_depths[BLOCK_SIZE];
|
191 |
+
|
192 |
+
// In the forward, we stored the final value for T, the
|
193 |
+
// product of all (1 - alpha) factors.
|
194 |
+
const float T_final = inside ? final_Ts[pix_id] : 0;
|
195 |
+
float T = T_final;
|
196 |
+
|
197 |
+
// We start from the back. The ID of the last contributing
|
198 |
+
// Gaussian is known from each pixel from the forward.
|
199 |
+
uint32_t contributor = toDo;
|
200 |
+
const int last_contributor = inside ? n_contrib[pix_id] : 0;
|
201 |
+
|
202 |
+
float accum_rec[C] = { 0 };
|
203 |
+
float dL_dpixel[C];
|
204 |
+
|
205 |
+
#if RENDER_AXUTILITY
|
206 |
+
float dL_dreg;
|
207 |
+
float dL_ddepth;
|
208 |
+
float dL_daccum;
|
209 |
+
float dL_dnormal2D[3];
|
210 |
+
const int median_contributor = inside ? n_contrib[pix_id + H * W] : 0;
|
211 |
+
float dL_dmedian_depth;
|
212 |
+
float dL_dmax_dweight;
|
213 |
+
|
214 |
+
if (inside) {
|
215 |
+
dL_ddepth = dL_depths[DEPTH_OFFSET * H * W + pix_id];
|
216 |
+
dL_daccum = dL_depths[ALPHA_OFFSET * H * W + pix_id];
|
217 |
+
dL_dreg = dL_depths[DISTORTION_OFFSET * H * W + pix_id];
|
218 |
+
for (int i = 0; i < 3; i++)
|
219 |
+
dL_dnormal2D[i] = dL_depths[(NORMAL_OFFSET + i) * H * W + pix_id];
|
220 |
+
|
221 |
+
dL_dmedian_depth = dL_depths[MIDDEPTH_OFFSET * H * W + pix_id];
|
222 |
+
// dL_dmax_dweight = dL_depths[MEDIAN_WEIGHT_OFFSET * H * W + pix_id];
|
223 |
+
}
|
224 |
+
|
225 |
+
// for compute gradient with respect to depth and normal
|
226 |
+
float last_depth = 0;
|
227 |
+
float last_normal[3] = { 0 };
|
228 |
+
float accum_depth_rec = 0;
|
229 |
+
float accum_alpha_rec = 0;
|
230 |
+
float accum_normal_rec[3] = {0};
|
231 |
+
// for compute gradient with respect to the distortion map
|
232 |
+
const float final_D = inside ? final_Ts[pix_id + H * W] : 0;
|
233 |
+
const float final_D2 = inside ? final_Ts[pix_id + 2 * H * W] : 0;
|
234 |
+
const float final_A = 1 - T_final;
|
235 |
+
float last_dL_dT = 0;
|
236 |
+
#endif
|
237 |
+
|
238 |
+
if (inside){
|
239 |
+
for (int i = 0; i < C; i++)
|
240 |
+
dL_dpixel[i] = dL_dpixels[i * H * W + pix_id];
|
241 |
+
}
|
242 |
+
|
243 |
+
float last_alpha = 0;
|
244 |
+
float last_color[C] = { 0 };
|
245 |
+
|
246 |
+
// Gradient of pixel coordinate w.r.t. normalized
|
247 |
+
// screen-space viewport corrdinates (-1 to 1)
|
248 |
+
const float ddelx_dx = 0.5 * W;
|
249 |
+
const float ddely_dy = 0.5 * H;
|
250 |
+
|
251 |
+
// Traverse all Gaussians
|
252 |
+
for (int i = 0; i < rounds; i++, toDo -= BLOCK_SIZE)
|
253 |
+
{
|
254 |
+
// Load auxiliary data into shared memory, start in the BACK
|
255 |
+
// and load them in revers order.
|
256 |
+
block.sync();
|
257 |
+
const int progress = i * BLOCK_SIZE + block.thread_rank();
|
258 |
+
if (range.x + progress < range.y)
|
259 |
+
{
|
260 |
+
const int coll_id = point_list[range.y - progress - 1];
|
261 |
+
collected_id[block.thread_rank()] = coll_id;
|
262 |
+
collected_xy[block.thread_rank()] = points_xy_image[coll_id];
|
263 |
+
collected_normal_opacity[block.thread_rank()] = normal_opacity[coll_id];
|
264 |
+
collected_Tu[block.thread_rank()] = {transMats[9 * coll_id+0], transMats[9 * coll_id+1], transMats[9 * coll_id+2]};
|
265 |
+
collected_Tv[block.thread_rank()] = {transMats[9 * coll_id+3], transMats[9 * coll_id+4], transMats[9 * coll_id+5]};
|
266 |
+
collected_Tw[block.thread_rank()] = {transMats[9 * coll_id+6], transMats[9 * coll_id+7], transMats[9 * coll_id+8]};
|
267 |
+
for (int i = 0; i < C; i++)
|
268 |
+
collected_colors[i * BLOCK_SIZE + block.thread_rank()] = colors[coll_id * C + i];
|
269 |
+
// collected_depths[block.thread_rank()] = depths[coll_id];
|
270 |
+
}
|
271 |
+
block.sync();
|
272 |
+
|
273 |
+
// Iterate over Gaussians
|
274 |
+
for (int j = 0; !done && j < min(BLOCK_SIZE, toDo); j++)
|
275 |
+
{
|
276 |
+
// Keep track of current Gaussian ID. Skip, if this one
|
277 |
+
// is behind the last contributor for this pixel.
|
278 |
+
contributor--;
|
279 |
+
if (contributor >= last_contributor)
|
280 |
+
continue;
|
281 |
+
|
282 |
+
// compute ray-splat intersection as before
|
283 |
+
// Fisrt compute two homogeneous planes, See Eq. (8)
|
284 |
+
const float2 xy = collected_xy[j];
|
285 |
+
const float3 Tu = collected_Tu[j];
|
286 |
+
const float3 Tv = collected_Tv[j];
|
287 |
+
const float3 Tw = collected_Tw[j];
|
288 |
+
float3 k = pix.x * Tw - Tu;
|
289 |
+
float3 l = pix.y * Tw - Tv;
|
290 |
+
float3 p = cross(k, l);
|
291 |
+
if (p.z == 0.0) continue;
|
292 |
+
float2 s = {p.x / p.z, p.y / p.z};
|
293 |
+
float rho3d = (s.x * s.x + s.y * s.y);
|
294 |
+
float2 d = {xy.x - pixf.x, xy.y - pixf.y};
|
295 |
+
float rho2d = FilterInvSquare * (d.x * d.x + d.y * d.y);
|
296 |
+
float rho = min(rho3d, rho2d);
|
297 |
+
|
298 |
+
// compute depth
|
299 |
+
float c_d = (s.x * Tw.x + s.y * Tw.y) + Tw.z; // Tw * [u,v,1]
|
300 |
+
// if a point is too small, its depth is not reliable?
|
301 |
+
// c_d = (rho3d <= rho2d) ? c_d : Tw.z;
|
302 |
+
if (c_d < near_n) continue;
|
303 |
+
|
304 |
+
float4 nor_o = collected_normal_opacity[j];
|
305 |
+
float normal[3] = {nor_o.x, nor_o.y, nor_o.z};
|
306 |
+
float opa = nor_o.w;
|
307 |
+
|
308 |
+
// accumulations
|
309 |
+
|
310 |
+
float power = -0.5f * rho;
|
311 |
+
if (power > 0.0f)
|
312 |
+
continue;
|
313 |
+
|
314 |
+
const float G = exp(power);
|
315 |
+
const float alpha = min(0.99f, opa * G);
|
316 |
+
if (alpha < 1.0f / 255.0f)
|
317 |
+
continue;
|
318 |
+
|
319 |
+
T = T / (1.f - alpha);
|
320 |
+
const float dchannel_dcolor = alpha * T;
|
321 |
+
const float w = alpha * T;
|
322 |
+
// Propagate gradients to per-Gaussian colors and keep
|
323 |
+
// gradients w.r.t. alpha (blending factor for a Gaussian/pixel
|
324 |
+
// pair).
|
325 |
+
float dL_dalpha = 0.0f;
|
326 |
+
const int global_id = collected_id[j];
|
327 |
+
for (int ch = 0; ch < C; ch++)
|
328 |
+
{
|
329 |
+
const float c = collected_colors[ch * BLOCK_SIZE + j];
|
330 |
+
// Update last color (to be used in the next iteration)
|
331 |
+
accum_rec[ch] = last_alpha * last_color[ch] + (1.f - last_alpha) * accum_rec[ch];
|
332 |
+
last_color[ch] = c;
|
333 |
+
|
334 |
+
const float dL_dchannel = dL_dpixel[ch];
|
335 |
+
dL_dalpha += (c - accum_rec[ch]) * dL_dchannel;
|
336 |
+
// Update the gradients w.r.t. color of the Gaussian.
|
337 |
+
// Atomic, since this pixel is just one of potentially
|
338 |
+
// many that were affected by this Gaussian.
|
339 |
+
atomicAdd(&(dL_dcolors[global_id * C + ch]), dchannel_dcolor * dL_dchannel);
|
340 |
+
}
|
341 |
+
|
342 |
+
float dL_dz = 0.0f;
|
343 |
+
float dL_dweight = 0;
|
344 |
+
#if RENDER_AXUTILITY
|
345 |
+
const float m_d = far_n / (far_n - near_n) * (1 - near_n / c_d);
|
346 |
+
const float dmd_dd = (far_n * near_n) / ((far_n - near_n) * c_d * c_d);
|
347 |
+
if (contributor == median_contributor-1) {
|
348 |
+
dL_dz += dL_dmedian_depth;
|
349 |
+
// dL_dweight += dL_dmax_dweight;
|
350 |
+
}
|
351 |
+
#if DETACH_WEIGHT
|
352 |
+
// if not detached weight, sometimes
|
353 |
+
// it will bia toward creating extragated 2D Gaussians near front
|
354 |
+
dL_dweight += 0;
|
355 |
+
#else
|
356 |
+
dL_dweight += (final_D2 + m_d * m_d * final_A - 2 * m_d * final_D) * dL_dreg;
|
357 |
+
#endif
|
358 |
+
dL_dalpha += dL_dweight - last_dL_dT;
|
359 |
+
// propagate the current weight W_{i} to next weight W_{i-1}
|
360 |
+
last_dL_dT = dL_dweight * alpha + (1 - alpha) * last_dL_dT;
|
361 |
+
const float dL_dmd = 2.0f * (T * alpha) * (m_d * final_A - final_D) * dL_dreg;
|
362 |
+
dL_dz += dL_dmd * dmd_dd;
|
363 |
+
|
364 |
+
// Propagate gradients w.r.t ray-splat depths
|
365 |
+
accum_depth_rec = last_alpha * last_depth + (1.f - last_alpha) * accum_depth_rec;
|
366 |
+
last_depth = c_d;
|
367 |
+
dL_dalpha += (c_d - accum_depth_rec) * dL_ddepth;
|
368 |
+
// Propagate gradients w.r.t. color ray-splat alphas
|
369 |
+
accum_alpha_rec = last_alpha * 1.0 + (1.f - last_alpha) * accum_alpha_rec;
|
370 |
+
dL_dalpha += (1 - accum_alpha_rec) * dL_daccum;
|
371 |
+
|
372 |
+
// Propagate gradients to per-Gaussian normals
|
373 |
+
for (int ch = 0; ch < 3; ch++) {
|
374 |
+
accum_normal_rec[ch] = last_alpha * last_normal[ch] + (1.f - last_alpha) * accum_normal_rec[ch];
|
375 |
+
last_normal[ch] = normal[ch];
|
376 |
+
dL_dalpha += (normal[ch] - accum_normal_rec[ch]) * dL_dnormal2D[ch];
|
377 |
+
atomicAdd((&dL_dnormal3D[global_id * 3 + ch]), alpha * T * dL_dnormal2D[ch]);
|
378 |
+
}
|
379 |
+
#endif
|
380 |
+
|
381 |
+
dL_dalpha *= T;
|
382 |
+
// Update last alpha (to be used in the next iteration)
|
383 |
+
last_alpha = alpha;
|
384 |
+
|
385 |
+
// Account for fact that alpha also influences how much of
|
386 |
+
// the background color is added if nothing left to blend
|
387 |
+
float bg_dot_dpixel = 0;
|
388 |
+
for (int i = 0; i < C; i++)
|
389 |
+
bg_dot_dpixel += bg_color[i] * dL_dpixel[i];
|
390 |
+
dL_dalpha += (-T_final / (1.f - alpha)) * bg_dot_dpixel;
|
391 |
+
|
392 |
+
|
393 |
+
// Helpful reusable temporary variables
|
394 |
+
const float dL_dG = nor_o.w * dL_dalpha;
|
395 |
+
#if RENDER_AXUTILITY
|
396 |
+
dL_dz += alpha * T * dL_ddepth;
|
397 |
+
#endif
|
398 |
+
|
399 |
+
if (rho3d <= rho2d) {
|
400 |
+
// Update gradients w.r.t. covariance of Gaussian 3x3 (T)
|
401 |
+
const float2 dL_ds = {
|
402 |
+
dL_dG * -G * s.x + dL_dz * Tw.x,
|
403 |
+
dL_dG * -G * s.y + dL_dz * Tw.y
|
404 |
+
};
|
405 |
+
const float3 dz_dTw = {s.x, s.y, 1.0};
|
406 |
+
const float dsx_pz = dL_ds.x / p.z;
|
407 |
+
const float dsy_pz = dL_ds.y / p.z;
|
408 |
+
const float3 dL_dp = {dsx_pz, dsy_pz, -(dsx_pz * s.x + dsy_pz * s.y)};
|
409 |
+
const float3 dL_dk = cross(l, dL_dp);
|
410 |
+
const float3 dL_dl = cross(dL_dp, k);
|
411 |
+
|
412 |
+
const float3 dL_dTu = {-dL_dk.x, -dL_dk.y, -dL_dk.z};
|
413 |
+
const float3 dL_dTv = {-dL_dl.x, -dL_dl.y, -dL_dl.z};
|
414 |
+
const float3 dL_dTw = {
|
415 |
+
pixf.x * dL_dk.x + pixf.y * dL_dl.x + dL_dz * dz_dTw.x,
|
416 |
+
pixf.x * dL_dk.y + pixf.y * dL_dl.y + dL_dz * dz_dTw.y,
|
417 |
+
pixf.x * dL_dk.z + pixf.y * dL_dl.z + dL_dz * dz_dTw.z};
|
418 |
+
|
419 |
+
|
420 |
+
// Update gradients w.r.t. 3D covariance (3x3 matrix)
|
421 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 0], dL_dTu.x);
|
422 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 1], dL_dTu.y);
|
423 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 2], dL_dTu.z);
|
424 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 3], dL_dTv.x);
|
425 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 4], dL_dTv.y);
|
426 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 5], dL_dTv.z);
|
427 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 6], dL_dTw.x);
|
428 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 7], dL_dTw.y);
|
429 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 8], dL_dTw.z);
|
430 |
+
} else {
|
431 |
+
// // Update gradients w.r.t. center of Gaussian 2D mean position
|
432 |
+
const float dG_ddelx = -G * FilterInvSquare * d.x;
|
433 |
+
const float dG_ddely = -G * FilterInvSquare * d.y;
|
434 |
+
atomicAdd(&dL_dmean2D[global_id].x, dL_dG * dG_ddelx); // not scaled
|
435 |
+
atomicAdd(&dL_dmean2D[global_id].y, dL_dG * dG_ddely); // not scaled
|
436 |
+
// // Propagate the gradients of depth
|
437 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 6], s.x * dL_dz);
|
438 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 7], s.y * dL_dz);
|
439 |
+
atomicAdd(&dL_dtransMat[global_id * 9 + 8], dL_dz);
|
440 |
+
}
|
441 |
+
|
442 |
+
// Update gradients w.r.t. opacity of the Gaussian
|
443 |
+
atomicAdd(&(dL_dopacity[global_id]), G * dL_dalpha);
|
444 |
+
}
|
445 |
+
}
|
446 |
+
}
|
447 |
+
|
448 |
+
|
449 |
+
__device__ void compute_transmat_aabb(
|
450 |
+
int idx,
|
451 |
+
const float* Ts_precomp,
|
452 |
+
const float3* p_origs,
|
453 |
+
const glm::vec2* scales,
|
454 |
+
const glm::vec4* rots,
|
455 |
+
const float* projmatrix,
|
456 |
+
const float* viewmatrix,
|
457 |
+
const int W, const int H,
|
458 |
+
const float3* dL_dnormals,
|
459 |
+
const float3* dL_dmean2Ds,
|
460 |
+
float* dL_dTs,
|
461 |
+
glm::vec3* dL_dmeans,
|
462 |
+
glm::vec2* dL_dscales,
|
463 |
+
glm::vec4* dL_drots)
|
464 |
+
{
|
465 |
+
glm::mat3 T;
|
466 |
+
float3 normal;
|
467 |
+
glm::mat3x4 P;
|
468 |
+
glm::mat3 R;
|
469 |
+
glm::mat3 S;
|
470 |
+
float3 p_orig;
|
471 |
+
glm::vec4 rot;
|
472 |
+
glm::vec2 scale;
|
473 |
+
|
474 |
+
// Get transformation matrix of the Gaussian
|
475 |
+
if (Ts_precomp != nullptr) {
|
476 |
+
T = glm::mat3(
|
477 |
+
Ts_precomp[idx * 9 + 0], Ts_precomp[idx * 9 + 1], Ts_precomp[idx * 9 + 2],
|
478 |
+
Ts_precomp[idx * 9 + 3], Ts_precomp[idx * 9 + 4], Ts_precomp[idx * 9 + 5],
|
479 |
+
Ts_precomp[idx * 9 + 6], Ts_precomp[idx * 9 + 7], Ts_precomp[idx * 9 + 8]
|
480 |
+
);
|
481 |
+
normal = {0.0, 0.0, 0.0};
|
482 |
+
} else {
|
483 |
+
p_orig = p_origs[idx];
|
484 |
+
rot = rots[idx];
|
485 |
+
scale = scales[idx];
|
486 |
+
R = quat_to_rotmat(rot);
|
487 |
+
S = scale_to_mat(scale, 1.0f);
|
488 |
+
|
489 |
+
glm::mat3 L = R * S;
|
490 |
+
glm::mat3x4 M = glm::mat3x4(
|
491 |
+
glm::vec4(L[0], 0.0),
|
492 |
+
glm::vec4(L[1], 0.0),
|
493 |
+
glm::vec4(p_orig.x, p_orig.y, p_orig.z, 1)
|
494 |
+
);
|
495 |
+
|
496 |
+
glm::mat4 world2ndc = glm::mat4(
|
497 |
+
projmatrix[0], projmatrix[4], projmatrix[8], projmatrix[12],
|
498 |
+
projmatrix[1], projmatrix[5], projmatrix[9], projmatrix[13],
|
499 |
+
projmatrix[2], projmatrix[6], projmatrix[10], projmatrix[14],
|
500 |
+
projmatrix[3], projmatrix[7], projmatrix[11], projmatrix[15]
|
501 |
+
);
|
502 |
+
|
503 |
+
glm::mat3x4 ndc2pix = glm::mat3x4(
|
504 |
+
glm::vec4(float(W) / 2.0, 0.0, 0.0, float(W-1) / 2.0),
|
505 |
+
glm::vec4(0.0, float(H) / 2.0, 0.0, float(H-1) / 2.0),
|
506 |
+
glm::vec4(0.0, 0.0, 0.0, 1.0)
|
507 |
+
);
|
508 |
+
|
509 |
+
P = world2ndc * ndc2pix;
|
510 |
+
T = glm::transpose(M) * P;
|
511 |
+
normal = transformVec4x3({L[2].x, L[2].y, L[2].z}, viewmatrix);
|
512 |
+
}
|
513 |
+
|
514 |
+
// Update gradients w.r.t. transformation matrix of the Gaussian
|
515 |
+
glm::mat3 dL_dT = glm::mat3(
|
516 |
+
dL_dTs[idx*9+0], dL_dTs[idx*9+1], dL_dTs[idx*9+2],
|
517 |
+
dL_dTs[idx*9+3], dL_dTs[idx*9+4], dL_dTs[idx*9+5],
|
518 |
+
dL_dTs[idx*9+6], dL_dTs[idx*9+7], dL_dTs[idx*9+8]
|
519 |
+
);
|
520 |
+
float3 dL_dmean2D = dL_dmean2Ds[idx];
|
521 |
+
if(dL_dmean2D.x != 0 || dL_dmean2D.y != 0)
|
522 |
+
{
|
523 |
+
glm::vec3 t_vec = glm::vec3(9.0f, 9.0f, -1.0f);
|
524 |
+
float d = glm::dot(t_vec, T[2] * T[2]);
|
525 |
+
glm::vec3 f_vec = t_vec * (1.0f / d);
|
526 |
+
glm::vec3 dL_dT0 = dL_dmean2D.x * f_vec * T[2];
|
527 |
+
glm::vec3 dL_dT1 = dL_dmean2D.y * f_vec * T[2];
|
528 |
+
glm::vec3 dL_dT3 = dL_dmean2D.x * f_vec * T[0] + dL_dmean2D.y * f_vec * T[1];
|
529 |
+
glm::vec3 dL_df = dL_dmean2D.x * T[0] * T[2] + dL_dmean2D.y * T[1] * T[2];
|
530 |
+
float dL_dd = glm::dot(dL_df, f_vec) * (-1.0 / d);
|
531 |
+
glm::vec3 dd_dT3 = t_vec * T[2] * 2.0f;
|
532 |
+
dL_dT3 += dL_dd * dd_dT3;
|
533 |
+
dL_dT[0] += dL_dT0;
|
534 |
+
dL_dT[1] += dL_dT1;
|
535 |
+
dL_dT[2] += dL_dT3;
|
536 |
+
|
537 |
+
if (Ts_precomp != nullptr) {
|
538 |
+
dL_dTs[idx * 9 + 0] = dL_dT[0].x;
|
539 |
+
dL_dTs[idx * 9 + 1] = dL_dT[0].y;
|
540 |
+
dL_dTs[idx * 9 + 2] = dL_dT[0].z;
|
541 |
+
dL_dTs[idx * 9 + 3] = dL_dT[1].x;
|
542 |
+
dL_dTs[idx * 9 + 4] = dL_dT[1].y;
|
543 |
+
dL_dTs[idx * 9 + 5] = dL_dT[1].z;
|
544 |
+
dL_dTs[idx * 9 + 6] = dL_dT[2].x;
|
545 |
+
dL_dTs[idx * 9 + 7] = dL_dT[2].y;
|
546 |
+
dL_dTs[idx * 9 + 8] = dL_dT[2].z;
|
547 |
+
return;
|
548 |
+
}
|
549 |
+
}
|
550 |
+
|
551 |
+
if (Ts_precomp != nullptr) return;
|
552 |
+
|
553 |
+
// Update gradients w.r.t. scaling, rotation, position of the Gaussian
|
554 |
+
glm::mat3x4 dL_dM = P * glm::transpose(dL_dT);
|
555 |
+
float3 dL_dtn = transformVec4x3Transpose(dL_dnormals[idx], viewmatrix);
|
556 |
+
#if DUAL_VISIABLE
|
557 |
+
float3 p_view = transformPoint4x3(p_orig, viewmatrix);
|
558 |
+
float cos = -sumf3(p_view * normal);
|
559 |
+
float multiplier = cos > 0 ? 1: -1;
|
560 |
+
dL_dtn = multiplier * dL_dtn;
|
561 |
+
#endif
|
562 |
+
glm::mat3 dL_dRS = glm::mat3(
|
563 |
+
glm::vec3(dL_dM[0]),
|
564 |
+
glm::vec3(dL_dM[1]),
|
565 |
+
glm::vec3(dL_dtn.x, dL_dtn.y, dL_dtn.z)
|
566 |
+
);
|
567 |
+
|
568 |
+
glm::mat3 dL_dR = glm::mat3(
|
569 |
+
dL_dRS[0] * glm::vec3(scale.x),
|
570 |
+
dL_dRS[1] * glm::vec3(scale.y),
|
571 |
+
dL_dRS[2]);
|
572 |
+
|
573 |
+
dL_drots[idx] = quat_to_rotmat_vjp(rot, dL_dR);
|
574 |
+
dL_dscales[idx] = glm::vec2(
|
575 |
+
(float)glm::dot(dL_dRS[0], R[0]),
|
576 |
+
(float)glm::dot(dL_dRS[1], R[1])
|
577 |
+
);
|
578 |
+
dL_dmeans[idx] = glm::vec3(dL_dM[2]);
|
579 |
+
}
|
580 |
+
|
581 |
+
template<int C>
|
582 |
+
__global__ void preprocessCUDA(
|
583 |
+
int P, int D, int M,
|
584 |
+
const float3* means3D,
|
585 |
+
const float* transMats,
|
586 |
+
const int* radii,
|
587 |
+
const float* shs,
|
588 |
+
const bool* clamped,
|
589 |
+
const glm::vec2* scales,
|
590 |
+
const glm::vec4* rotations,
|
591 |
+
const float scale_modifier,
|
592 |
+
const float* viewmatrix,
|
593 |
+
const float* projmatrix,
|
594 |
+
const float focal_x,
|
595 |
+
const float focal_y,
|
596 |
+
const float tan_fovx,
|
597 |
+
const float tan_fovy,
|
598 |
+
const glm::vec3* campos,
|
599 |
+
// grad input
|
600 |
+
float* dL_dtransMats,
|
601 |
+
const float* dL_dnormal3Ds,
|
602 |
+
float* dL_dcolors,
|
603 |
+
float* dL_dshs,
|
604 |
+
float3* dL_dmean2Ds,
|
605 |
+
glm::vec3* dL_dmean3Ds,
|
606 |
+
glm::vec2* dL_dscales,
|
607 |
+
glm::vec4* dL_drots)
|
608 |
+
{
|
609 |
+
auto idx = cg::this_grid().thread_rank();
|
610 |
+
if (idx >= P || !(radii[idx] > 0))
|
611 |
+
return;
|
612 |
+
|
613 |
+
const int W = int(focal_x * tan_fovx * 2);
|
614 |
+
const int H = int(focal_y * tan_fovy * 2);
|
615 |
+
const float * Ts_precomp = (scales) ? nullptr : transMats;
|
616 |
+
compute_transmat_aabb(
|
617 |
+
idx,
|
618 |
+
Ts_precomp,
|
619 |
+
means3D, scales, rotations,
|
620 |
+
projmatrix, viewmatrix, W, H,
|
621 |
+
(float3*)dL_dnormal3Ds,
|
622 |
+
dL_dmean2Ds,
|
623 |
+
(dL_dtransMats),
|
624 |
+
dL_dmean3Ds,
|
625 |
+
dL_dscales,
|
626 |
+
dL_drots
|
627 |
+
);
|
628 |
+
|
629 |
+
if (shs)
|
630 |
+
computeColorFromSH(idx, D, M, (glm::vec3*)means3D, *campos, shs, clamped, (glm::vec3*)dL_dcolors, (glm::vec3*)dL_dmean3Ds, (glm::vec3*)dL_dshs);
|
631 |
+
|
632 |
+
// hack the gradient here for densitification
|
633 |
+
float depth = transMats[idx * 9 + 8];
|
634 |
+
dL_dmean2Ds[idx].x = dL_dtransMats[idx * 9 + 2] * depth * 0.5 * float(W); // to ndc
|
635 |
+
dL_dmean2Ds[idx].y = dL_dtransMats[idx * 9 + 5] * depth * 0.5 * float(H); // to ndc
|
636 |
+
}
|
637 |
+
|
638 |
+
|
639 |
+
void BACKWARD::preprocess(
|
640 |
+
int P, int D, int M,
|
641 |
+
const float3* means3D,
|
642 |
+
const int* radii,
|
643 |
+
const float* shs,
|
644 |
+
const bool* clamped,
|
645 |
+
const glm::vec2* scales,
|
646 |
+
const glm::vec4* rotations,
|
647 |
+
const float scale_modifier,
|
648 |
+
const float* transMats,
|
649 |
+
const float* viewmatrix,
|
650 |
+
const float* projmatrix,
|
651 |
+
const float focal_x, const float focal_y,
|
652 |
+
const float tan_fovx, const float tan_fovy,
|
653 |
+
const glm::vec3* campos,
|
654 |
+
float3* dL_dmean2Ds,
|
655 |
+
const float* dL_dnormal3Ds,
|
656 |
+
float* dL_dtransMats,
|
657 |
+
float* dL_dcolors,
|
658 |
+
float* dL_dshs,
|
659 |
+
glm::vec3* dL_dmean3Ds,
|
660 |
+
glm::vec2* dL_dscales,
|
661 |
+
glm::vec4* dL_drots)
|
662 |
+
{
|
663 |
+
preprocessCUDA<NUM_CHANNELS><< <(P + 255) / 256, 256 >> > (
|
664 |
+
P, D, M,
|
665 |
+
(float3*)means3D,
|
666 |
+
transMats,
|
667 |
+
radii,
|
668 |
+
shs,
|
669 |
+
clamped,
|
670 |
+
(glm::vec2*)scales,
|
671 |
+
(glm::vec4*)rotations,
|
672 |
+
scale_modifier,
|
673 |
+
viewmatrix,
|
674 |
+
projmatrix,
|
675 |
+
focal_x,
|
676 |
+
focal_y,
|
677 |
+
tan_fovx,
|
678 |
+
tan_fovy,
|
679 |
+
campos,
|
680 |
+
dL_dtransMats,
|
681 |
+
dL_dnormal3Ds,
|
682 |
+
dL_dcolors,
|
683 |
+
dL_dshs,
|
684 |
+
dL_dmean2Ds,
|
685 |
+
dL_dmean3Ds,
|
686 |
+
dL_dscales,
|
687 |
+
dL_drots
|
688 |
+
);
|
689 |
+
}
|
690 |
+
|
691 |
+
void BACKWARD::render(
|
692 |
+
const dim3 grid, const dim3 block,
|
693 |
+
const uint2* ranges,
|
694 |
+
const uint32_t* point_list,
|
695 |
+
int W, int H,
|
696 |
+
float focal_x, float focal_y,
|
697 |
+
const float* bg_color,
|
698 |
+
const float2* means2D,
|
699 |
+
const float4* normal_opacity,
|
700 |
+
const float* colors,
|
701 |
+
const float* transMats,
|
702 |
+
const float* depths,
|
703 |
+
const float* final_Ts,
|
704 |
+
const uint32_t* n_contrib,
|
705 |
+
const float* dL_dpixels,
|
706 |
+
const float* dL_depths,
|
707 |
+
float * dL_dtransMat,
|
708 |
+
float3* dL_dmean2D,
|
709 |
+
float* dL_dnormal3D,
|
710 |
+
float* dL_dopacity,
|
711 |
+
float* dL_dcolors)
|
712 |
+
{
|
713 |
+
renderCUDA<NUM_CHANNELS> << <grid, block >> >(
|
714 |
+
ranges,
|
715 |
+
point_list,
|
716 |
+
W, H,
|
717 |
+
focal_x, focal_y,
|
718 |
+
bg_color,
|
719 |
+
means2D,
|
720 |
+
normal_opacity,
|
721 |
+
transMats,
|
722 |
+
colors,
|
723 |
+
depths,
|
724 |
+
final_Ts,
|
725 |
+
n_contrib,
|
726 |
+
dL_dpixels,
|
727 |
+
dL_depths,
|
728 |
+
dL_dtransMat,
|
729 |
+
dL_dmean2D,
|
730 |
+
dL_dnormal3D,
|
731 |
+
dL_dopacity,
|
732 |
+
dL_dcolors
|
733 |
+
);
|
734 |
+
}
|
submodules/diff-surfel-rasterization/cuda_rasterizer/backward.h
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
float focal_x, float focal_y,
|
29 |
+
const float* bg_color,
|
30 |
+
const float2* means2D,
|
31 |
+
const float4* normal_opacity,
|
32 |
+
const float* transMats,
|
33 |
+
const float* colors,
|
34 |
+
const float* depths,
|
35 |
+
const float* final_Ts,
|
36 |
+
const uint32_t* n_contrib,
|
37 |
+
const float* dL_dpixels,
|
38 |
+
const float* dL_depths,
|
39 |
+
float * dL_dtransMat,
|
40 |
+
float3* dL_dmean2D,
|
41 |
+
float* dL_dnormal3D,
|
42 |
+
float* dL_dopacity,
|
43 |
+
float* dL_dcolors);
|
44 |
+
|
45 |
+
void preprocess(
|
46 |
+
int P, int D, int M,
|
47 |
+
const float3* means,
|
48 |
+
const int* radii,
|
49 |
+
const float* shs,
|
50 |
+
const bool* clamped,
|
51 |
+
const glm::vec2* scales,
|
52 |
+
const glm::vec4* rotations,
|
53 |
+
const float scale_modifier,
|
54 |
+
const float* transMats,
|
55 |
+
const float* view,
|
56 |
+
const float* proj,
|
57 |
+
const float focal_x, const float focal_y,
|
58 |
+
const float tan_fovx, const float tan_fovy,
|
59 |
+
const glm::vec3* campos,
|
60 |
+
float3* dL_dmean2D,
|
61 |
+
const float* dL_dnormal3D,
|
62 |
+
float* dL_dtransMat,
|
63 |
+
float* dL_dcolor,
|
64 |
+
float* dL_dsh,
|
65 |
+
glm::vec3* dL_dmeans,
|
66 |
+
glm::vec2* dL_dscale,
|
67 |
+
glm::vec4* dL_drot);
|
68 |
+
}
|
69 |
+
|
70 |
+
#endif
|
submodules/diff-surfel-rasterization/cuda_rasterizer/config.h
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/cuda_rasterizer/forward.cu
ADDED
@@ -0,0 +1,537 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
// Compute a 2D-to-2D mapping matrix from a tangent plane into a image plane
|
74 |
+
// given a 2D gaussian parameters.
|
75 |
+
__device__ void compute_transmat(
|
76 |
+
const float3& p_orig,
|
77 |
+
const glm::vec2 scale,
|
78 |
+
float mod,
|
79 |
+
const glm::vec4 rot,
|
80 |
+
const float* projmatrix,
|
81 |
+
const float* viewmatrix,
|
82 |
+
const int W,
|
83 |
+
const int H,
|
84 |
+
glm::mat3 &T,
|
85 |
+
float3 &normal
|
86 |
+
) {
|
87 |
+
|
88 |
+
glm::mat3 R = quat_to_rotmat(rot);
|
89 |
+
glm::mat3 S = scale_to_mat(scale, mod);
|
90 |
+
glm::mat3 L = R * S;
|
91 |
+
|
92 |
+
// center of Gaussians in the camera coordinate
|
93 |
+
glm::mat3x4 splat2world = glm::mat3x4(
|
94 |
+
glm::vec4(L[0], 0.0),
|
95 |
+
glm::vec4(L[1], 0.0),
|
96 |
+
glm::vec4(p_orig.x, p_orig.y, p_orig.z, 1)
|
97 |
+
);
|
98 |
+
|
99 |
+
glm::mat4 world2ndc = glm::mat4(
|
100 |
+
projmatrix[0], projmatrix[4], projmatrix[8], projmatrix[12],
|
101 |
+
projmatrix[1], projmatrix[5], projmatrix[9], projmatrix[13],
|
102 |
+
projmatrix[2], projmatrix[6], projmatrix[10], projmatrix[14],
|
103 |
+
projmatrix[3], projmatrix[7], projmatrix[11], projmatrix[15]
|
104 |
+
);
|
105 |
+
|
106 |
+
glm::mat3x4 ndc2pix = glm::mat3x4(
|
107 |
+
glm::vec4(float(W) / 2.0, 0.0, 0.0, float(W-1) / 2.0),
|
108 |
+
glm::vec4(0.0, float(H) / 2.0, 0.0, float(H-1) / 2.0),
|
109 |
+
glm::vec4(0.0, 0.0, 0.0, 1.0)
|
110 |
+
);
|
111 |
+
|
112 |
+
T = glm::transpose(splat2world) * world2ndc * ndc2pix;
|
113 |
+
normal = transformVec4x3({L[2].x, L[2].y, L[2].z}, viewmatrix);
|
114 |
+
|
115 |
+
}
|
116 |
+
|
117 |
+
// Computing the bounding box of the 2D Gaussian and its center
|
118 |
+
// The center of the bounding box is used to create a low pass filter
|
119 |
+
__device__ bool compute_aabb(
|
120 |
+
glm::mat3 T,
|
121 |
+
float cutoff,
|
122 |
+
float2& point_image,
|
123 |
+
float2& extent
|
124 |
+
) {
|
125 |
+
glm::vec3 t = glm::vec3(cutoff * cutoff, cutoff * cutoff, -1.0f);
|
126 |
+
float d = glm::dot(t, T[2] * T[2]);
|
127 |
+
if (d == 0.0) return false;
|
128 |
+
glm::vec3 f = (1 / d) * t;
|
129 |
+
|
130 |
+
glm::vec2 p = glm::vec2(
|
131 |
+
glm::dot(f, T[0] * T[2]),
|
132 |
+
glm::dot(f, T[1] * T[2])
|
133 |
+
);
|
134 |
+
|
135 |
+
glm::vec2 h0 = p * p -
|
136 |
+
glm::vec2(
|
137 |
+
glm::dot(f, T[0] * T[0]),
|
138 |
+
glm::dot(f, T[1] * T[1])
|
139 |
+
);
|
140 |
+
|
141 |
+
glm::vec2 h = sqrt(max(glm::vec2(1e-4, 1e-4), h0));
|
142 |
+
point_image = {p.x, p.y};
|
143 |
+
extent = {h.x, h.y};
|
144 |
+
return true;
|
145 |
+
}
|
146 |
+
|
147 |
+
// Perform initial steps for each Gaussian prior to rasterization.
|
148 |
+
template<int C>
|
149 |
+
__global__ void preprocessCUDA(int P, int D, int M,
|
150 |
+
const float* orig_points,
|
151 |
+
const glm::vec2* scales,
|
152 |
+
const float scale_modifier,
|
153 |
+
const glm::vec4* rotations,
|
154 |
+
const float* opacities,
|
155 |
+
const float* shs,
|
156 |
+
bool* clamped,
|
157 |
+
const float* transMat_precomp,
|
158 |
+
const float* colors_precomp,
|
159 |
+
const float* viewmatrix,
|
160 |
+
const float* projmatrix,
|
161 |
+
const glm::vec3* cam_pos,
|
162 |
+
const int W, int H,
|
163 |
+
const float tan_fovx, const float tan_fovy,
|
164 |
+
const float focal_x, const float focal_y,
|
165 |
+
int* radii,
|
166 |
+
float2* points_xy_image,
|
167 |
+
float* depths,
|
168 |
+
float* transMats,
|
169 |
+
float* rgb,
|
170 |
+
float4* normal_opacity,
|
171 |
+
const dim3 grid,
|
172 |
+
uint32_t* tiles_touched,
|
173 |
+
bool prefiltered)
|
174 |
+
{
|
175 |
+
auto idx = cg::this_grid().thread_rank();
|
176 |
+
if (idx >= P)
|
177 |
+
return;
|
178 |
+
|
179 |
+
// Initialize radius and touched tiles to 0. If this isn't changed,
|
180 |
+
// this Gaussian will not be processed further.
|
181 |
+
radii[idx] = 0;
|
182 |
+
tiles_touched[idx] = 0;
|
183 |
+
|
184 |
+
// Perform near culling, quit if outside.
|
185 |
+
float3 p_view;
|
186 |
+
if (!in_frustum(idx, orig_points, viewmatrix, projmatrix, prefiltered, p_view))
|
187 |
+
return;
|
188 |
+
|
189 |
+
// Compute transformation matrix
|
190 |
+
glm::mat3 T;
|
191 |
+
float3 normal;
|
192 |
+
if (transMat_precomp == nullptr)
|
193 |
+
{
|
194 |
+
compute_transmat(((float3*)orig_points)[idx], scales[idx], scale_modifier, rotations[idx], projmatrix, viewmatrix, W, H, T, normal);
|
195 |
+
float3 *T_ptr = (float3*)transMats;
|
196 |
+
T_ptr[idx * 3 + 0] = {T[0][0], T[0][1], T[0][2]};
|
197 |
+
T_ptr[idx * 3 + 1] = {T[1][0], T[1][1], T[1][2]};
|
198 |
+
T_ptr[idx * 3 + 2] = {T[2][0], T[2][1], T[2][2]};
|
199 |
+
} else {
|
200 |
+
glm::vec3 *T_ptr = (glm::vec3*)transMat_precomp;
|
201 |
+
T = glm::mat3(
|
202 |
+
T_ptr[idx * 3 + 0],
|
203 |
+
T_ptr[idx * 3 + 1],
|
204 |
+
T_ptr[idx * 3 + 2]
|
205 |
+
);
|
206 |
+
normal = make_float3(0.0, 0.0, 1.0);
|
207 |
+
}
|
208 |
+
|
209 |
+
#if DUAL_VISIABLE
|
210 |
+
float cos = -sumf3(p_view * normal);
|
211 |
+
if (cos == 0) return;
|
212 |
+
float multiplier = cos > 0 ? 1: -1;
|
213 |
+
normal = multiplier * normal;
|
214 |
+
#endif
|
215 |
+
|
216 |
+
#if TIGHTBBOX // no use in the paper, but it indeed help speeds.
|
217 |
+
// the effective extent is now depended on the opacity of gaussian.
|
218 |
+
float cutoff = sqrtf(max(9.f + 2.f * logf(opacities[idx]), 0.000001));
|
219 |
+
#else
|
220 |
+
float cutoff = 3.0f;
|
221 |
+
#endif
|
222 |
+
|
223 |
+
// Compute center and radius
|
224 |
+
float2 point_image;
|
225 |
+
float radius;
|
226 |
+
{
|
227 |
+
float2 extent;
|
228 |
+
bool ok = compute_aabb(T, cutoff, point_image, extent);
|
229 |
+
if (!ok) return;
|
230 |
+
radius = ceil(max(max(extent.x, extent.y), cutoff * FilterSize));
|
231 |
+
}
|
232 |
+
|
233 |
+
uint2 rect_min, rect_max;
|
234 |
+
getRect(point_image, radius, rect_min, rect_max, grid);
|
235 |
+
if ((rect_max.x - rect_min.x) * (rect_max.y - rect_min.y) == 0)
|
236 |
+
return;
|
237 |
+
|
238 |
+
// Compute colors
|
239 |
+
if (colors_precomp == nullptr) {
|
240 |
+
glm::vec3 result = computeColorFromSH(idx, D, M, (glm::vec3*)orig_points, *cam_pos, shs, clamped);
|
241 |
+
rgb[idx * C + 0] = result.x;
|
242 |
+
rgb[idx * C + 1] = result.y;
|
243 |
+
rgb[idx * C + 2] = result.z;
|
244 |
+
}
|
245 |
+
|
246 |
+
depths[idx] = p_view.z;
|
247 |
+
radii[idx] = (int)radius;
|
248 |
+
points_xy_image[idx] = point_image;
|
249 |
+
normal_opacity[idx] = {normal.x, normal.y, normal.z, opacities[idx]};
|
250 |
+
tiles_touched[idx] = (rect_max.y - rect_min.y) * (rect_max.x - rect_min.x);
|
251 |
+
}
|
252 |
+
|
253 |
+
// Main rasterization method. Collaboratively works on one tile per
|
254 |
+
// block, each thread treats one pixel. Alternates between fetching
|
255 |
+
// and rasterizing data.
|
256 |
+
template <uint32_t CHANNELS>
|
257 |
+
__global__ void __launch_bounds__(BLOCK_X * BLOCK_Y)
|
258 |
+
renderCUDA(
|
259 |
+
const uint2* __restrict__ ranges,
|
260 |
+
const uint32_t* __restrict__ point_list,
|
261 |
+
int W, int H,
|
262 |
+
float focal_x, float focal_y,
|
263 |
+
const float2* __restrict__ points_xy_image,
|
264 |
+
const float* __restrict__ features,
|
265 |
+
const float* __restrict__ transMats,
|
266 |
+
const float* __restrict__ depths,
|
267 |
+
const float4* __restrict__ normal_opacity,
|
268 |
+
float* __restrict__ final_T,
|
269 |
+
uint32_t* __restrict__ n_contrib,
|
270 |
+
const float* __restrict__ bg_color,
|
271 |
+
float* __restrict__ out_color,
|
272 |
+
float* __restrict__ out_others)
|
273 |
+
{
|
274 |
+
// Identify current tile and associated min/max pixel range.
|
275 |
+
auto block = cg::this_thread_block();
|
276 |
+
uint32_t horizontal_blocks = (W + BLOCK_X - 1) / BLOCK_X;
|
277 |
+
uint2 pix_min = { block.group_index().x * BLOCK_X, block.group_index().y * BLOCK_Y };
|
278 |
+
uint2 pix_max = { min(pix_min.x + BLOCK_X, W), min(pix_min.y + BLOCK_Y , H) };
|
279 |
+
uint2 pix = { pix_min.x + block.thread_index().x, pix_min.y + block.thread_index().y };
|
280 |
+
uint32_t pix_id = W * pix.y + pix.x;
|
281 |
+
float2 pixf = { (float)pix.x, (float)pix.y};
|
282 |
+
|
283 |
+
// Check if this thread is associated with a valid pixel or outside.
|
284 |
+
bool inside = pix.x < W&& pix.y < H;
|
285 |
+
// Done threads can help with fetching, but don't rasterize
|
286 |
+
bool done = !inside;
|
287 |
+
|
288 |
+
// Load start/end range of IDs to process in bit sorted list.
|
289 |
+
uint2 range = ranges[block.group_index().y * horizontal_blocks + block.group_index().x];
|
290 |
+
const int rounds = ((range.y - range.x + BLOCK_SIZE - 1) / BLOCK_SIZE);
|
291 |
+
int toDo = range.y - range.x;
|
292 |
+
|
293 |
+
// Allocate storage for batches of collectively fetched data.
|
294 |
+
__shared__ int collected_id[BLOCK_SIZE];
|
295 |
+
__shared__ float2 collected_xy[BLOCK_SIZE];
|
296 |
+
__shared__ float4 collected_normal_opacity[BLOCK_SIZE];
|
297 |
+
__shared__ float3 collected_Tu[BLOCK_SIZE];
|
298 |
+
__shared__ float3 collected_Tv[BLOCK_SIZE];
|
299 |
+
__shared__ float3 collected_Tw[BLOCK_SIZE];
|
300 |
+
|
301 |
+
// Initialize helper variables
|
302 |
+
float T = 1.0f;
|
303 |
+
uint32_t contributor = 0;
|
304 |
+
uint32_t last_contributor = 0;
|
305 |
+
float C[CHANNELS] = { 0 };
|
306 |
+
|
307 |
+
|
308 |
+
#if RENDER_AXUTILITY
|
309 |
+
// render axutility ouput
|
310 |
+
float N[3] = {0};
|
311 |
+
float D = { 0 };
|
312 |
+
float M1 = {0};
|
313 |
+
float M2 = {0};
|
314 |
+
float distortion = {0};
|
315 |
+
float median_depth = {0};
|
316 |
+
// float median_weight = {0};
|
317 |
+
float median_contributor = {-1};
|
318 |
+
|
319 |
+
#endif
|
320 |
+
|
321 |
+
// Iterate over batches until all done or range is complete
|
322 |
+
for (int i = 0; i < rounds; i++, toDo -= BLOCK_SIZE)
|
323 |
+
{
|
324 |
+
// End if entire block votes that it is done rasterizing
|
325 |
+
int num_done = __syncthreads_count(done);
|
326 |
+
if (num_done == BLOCK_SIZE)
|
327 |
+
break;
|
328 |
+
|
329 |
+
// Collectively fetch per-Gaussian data from global to shared
|
330 |
+
int progress = i * BLOCK_SIZE + block.thread_rank();
|
331 |
+
if (range.x + progress < range.y)
|
332 |
+
{
|
333 |
+
int coll_id = point_list[range.x + progress];
|
334 |
+
collected_id[block.thread_rank()] = coll_id;
|
335 |
+
collected_xy[block.thread_rank()] = points_xy_image[coll_id];
|
336 |
+
collected_normal_opacity[block.thread_rank()] = normal_opacity[coll_id];
|
337 |
+
collected_Tu[block.thread_rank()] = {transMats[9 * coll_id+0], transMats[9 * coll_id+1], transMats[9 * coll_id+2]};
|
338 |
+
collected_Tv[block.thread_rank()] = {transMats[9 * coll_id+3], transMats[9 * coll_id+4], transMats[9 * coll_id+5]};
|
339 |
+
collected_Tw[block.thread_rank()] = {transMats[9 * coll_id+6], transMats[9 * coll_id+7], transMats[9 * coll_id+8]};
|
340 |
+
}
|
341 |
+
block.sync();
|
342 |
+
|
343 |
+
// Iterate over current batch
|
344 |
+
for (int j = 0; !done && j < min(BLOCK_SIZE, toDo); j++)
|
345 |
+
{
|
346 |
+
// Keep track of current position in range
|
347 |
+
contributor++;
|
348 |
+
|
349 |
+
// Fisrt compute two homogeneous planes, See Eq. (8)
|
350 |
+
const float2 xy = collected_xy[j];
|
351 |
+
const float3 Tu = collected_Tu[j];
|
352 |
+
const float3 Tv = collected_Tv[j];
|
353 |
+
const float3 Tw = collected_Tw[j];
|
354 |
+
// Transform the two planes into local u-v system.
|
355 |
+
float3 k = pix.x * Tw - Tu;
|
356 |
+
float3 l = pix.y * Tw - Tv;
|
357 |
+
// Cross product of two planes is a line, Eq. (9)
|
358 |
+
float3 p = cross(k, l);
|
359 |
+
if (p.z == 0.0) continue;
|
360 |
+
// Perspective division to get the intersection (u,v), Eq. (10)
|
361 |
+
float2 s = {p.x / p.z, p.y / p.z};
|
362 |
+
float rho3d = (s.x * s.x + s.y * s.y);
|
363 |
+
// Add low pass filter
|
364 |
+
float2 d = {xy.x - pixf.x, xy.y - pixf.y};
|
365 |
+
float rho2d = FilterInvSquare * (d.x * d.x + d.y * d.y);
|
366 |
+
float rho = min(rho3d, rho2d);
|
367 |
+
|
368 |
+
// compute depth
|
369 |
+
float depth = (s.x * Tw.x + s.y * Tw.y) + Tw.z;
|
370 |
+
// if a point is too small, its depth is not reliable?
|
371 |
+
// depth = (rho3d <= rho2d) ? depth : Tw.z
|
372 |
+
if (depth < near_n) continue;
|
373 |
+
|
374 |
+
float4 nor_o = collected_normal_opacity[j];
|
375 |
+
float normal[3] = {nor_o.x, nor_o.y, nor_o.z};
|
376 |
+
float opa = nor_o.w;
|
377 |
+
|
378 |
+
float power = -0.5f * rho;
|
379 |
+
if (power > 0.0f)
|
380 |
+
continue;
|
381 |
+
|
382 |
+
// Eq. (2) from 3D Gaussian splatting paper.
|
383 |
+
// Obtain alpha by multiplying with Gaussian opacity
|
384 |
+
// and its exponential falloff from mean.
|
385 |
+
// Avoid numerical instabilities (see paper appendix).
|
386 |
+
float alpha = min(0.99f, opa * exp(power));
|
387 |
+
if (alpha < 1.0f / 255.0f)
|
388 |
+
continue;
|
389 |
+
float test_T = T * (1 - alpha);
|
390 |
+
if (test_T < 0.0001f)
|
391 |
+
{
|
392 |
+
done = true;
|
393 |
+
continue;
|
394 |
+
}
|
395 |
+
|
396 |
+
float w = alpha * T;
|
397 |
+
#if RENDER_AXUTILITY
|
398 |
+
// Render depth distortion map
|
399 |
+
// Efficient implementation of distortion loss, see 2DGS' paper appendix.
|
400 |
+
float A = 1-T;
|
401 |
+
float m = far_n / (far_n - near_n) * (1 - near_n / depth);
|
402 |
+
distortion += (m * m * A + M2 - 2 * m * M1) * w;
|
403 |
+
D += depth * w;
|
404 |
+
M1 += m * w;
|
405 |
+
M2 += m * m * w;
|
406 |
+
|
407 |
+
if (T > 0.5) {
|
408 |
+
median_depth = depth;
|
409 |
+
// median_weight = w;
|
410 |
+
median_contributor = contributor;
|
411 |
+
}
|
412 |
+
// Render normal map
|
413 |
+
for (int ch=0; ch<3; ch++) N[ch] += normal[ch] * w;
|
414 |
+
#endif
|
415 |
+
|
416 |
+
// Eq. (3) from 3D Gaussian splatting paper.
|
417 |
+
for (int ch = 0; ch < CHANNELS; ch++)
|
418 |
+
C[ch] += features[collected_id[j] * CHANNELS + ch] * w;
|
419 |
+
T = test_T;
|
420 |
+
|
421 |
+
// Keep track of last range entry to update this
|
422 |
+
// pixel.
|
423 |
+
last_contributor = contributor;
|
424 |
+
}
|
425 |
+
}
|
426 |
+
|
427 |
+
// All threads that treat valid pixel write out their final
|
428 |
+
// rendering data to the frame and auxiliary buffers.
|
429 |
+
if (inside)
|
430 |
+
{
|
431 |
+
final_T[pix_id] = T;
|
432 |
+
n_contrib[pix_id] = last_contributor;
|
433 |
+
for (int ch = 0; ch < CHANNELS; ch++)
|
434 |
+
out_color[ch * H * W + pix_id] = C[ch] + T * bg_color[ch];
|
435 |
+
|
436 |
+
#if RENDER_AXUTILITY
|
437 |
+
n_contrib[pix_id + H * W] = median_contributor;
|
438 |
+
final_T[pix_id + H * W] = M1;
|
439 |
+
final_T[pix_id + 2 * H * W] = M2;
|
440 |
+
out_others[pix_id + DEPTH_OFFSET * H * W] = D;
|
441 |
+
out_others[pix_id + ALPHA_OFFSET * H * W] = 1 - T;
|
442 |
+
for (int ch=0; ch<3; ch++) out_others[pix_id + (NORMAL_OFFSET+ch) * H * W] = N[ch];
|
443 |
+
out_others[pix_id + MIDDEPTH_OFFSET * H * W] = median_depth;
|
444 |
+
out_others[pix_id + DISTORTION_OFFSET * H * W] = distortion;
|
445 |
+
// out_others[pix_id + MEDIAN_WEIGHT_OFFSET * H * W] = median_weight;
|
446 |
+
#endif
|
447 |
+
}
|
448 |
+
}
|
449 |
+
|
450 |
+
void FORWARD::render(
|
451 |
+
const dim3 grid, dim3 block,
|
452 |
+
const uint2* ranges,
|
453 |
+
const uint32_t* point_list,
|
454 |
+
int W, int H,
|
455 |
+
float focal_x, float focal_y,
|
456 |
+
const float2* means2D,
|
457 |
+
const float* colors,
|
458 |
+
const float* transMats,
|
459 |
+
const float* depths,
|
460 |
+
const float4* normal_opacity,
|
461 |
+
float* final_T,
|
462 |
+
uint32_t* n_contrib,
|
463 |
+
const float* bg_color,
|
464 |
+
float* out_color,
|
465 |
+
float* out_others)
|
466 |
+
{
|
467 |
+
renderCUDA<NUM_CHANNELS> << <grid, block >> > (
|
468 |
+
ranges,
|
469 |
+
point_list,
|
470 |
+
W, H,
|
471 |
+
focal_x, focal_y,
|
472 |
+
means2D,
|
473 |
+
colors,
|
474 |
+
transMats,
|
475 |
+
depths,
|
476 |
+
normal_opacity,
|
477 |
+
final_T,
|
478 |
+
n_contrib,
|
479 |
+
bg_color,
|
480 |
+
out_color,
|
481 |
+
out_others);
|
482 |
+
}
|
483 |
+
|
484 |
+
void FORWARD::preprocess(int P, int D, int M,
|
485 |
+
const float* means3D,
|
486 |
+
const glm::vec2* scales,
|
487 |
+
const float scale_modifier,
|
488 |
+
const glm::vec4* rotations,
|
489 |
+
const float* opacities,
|
490 |
+
const float* shs,
|
491 |
+
bool* clamped,
|
492 |
+
const float* transMat_precomp,
|
493 |
+
const float* colors_precomp,
|
494 |
+
const float* viewmatrix,
|
495 |
+
const float* projmatrix,
|
496 |
+
const glm::vec3* cam_pos,
|
497 |
+
const int W, const int H,
|
498 |
+
const float focal_x, const float focal_y,
|
499 |
+
const float tan_fovx, const float tan_fovy,
|
500 |
+
int* radii,
|
501 |
+
float2* means2D,
|
502 |
+
float* depths,
|
503 |
+
float* transMats,
|
504 |
+
float* rgb,
|
505 |
+
float4* normal_opacity,
|
506 |
+
const dim3 grid,
|
507 |
+
uint32_t* tiles_touched,
|
508 |
+
bool prefiltered)
|
509 |
+
{
|
510 |
+
preprocessCUDA<NUM_CHANNELS> << <(P + 255) / 256, 256 >> > (
|
511 |
+
P, D, M,
|
512 |
+
means3D,
|
513 |
+
scales,
|
514 |
+
scale_modifier,
|
515 |
+
rotations,
|
516 |
+
opacities,
|
517 |
+
shs,
|
518 |
+
clamped,
|
519 |
+
transMat_precomp,
|
520 |
+
colors_precomp,
|
521 |
+
viewmatrix,
|
522 |
+
projmatrix,
|
523 |
+
cam_pos,
|
524 |
+
W, H,
|
525 |
+
tan_fovx, tan_fovy,
|
526 |
+
focal_x, focal_y,
|
527 |
+
radii,
|
528 |
+
means2D,
|
529 |
+
depths,
|
530 |
+
transMats,
|
531 |
+
rgb,
|
532 |
+
normal_opacity,
|
533 |
+
grid,
|
534 |
+
tiles_touched,
|
535 |
+
prefiltered
|
536 |
+
);
|
537 |
+
}
|
submodules/diff-surfel-rasterization/cuda_rasterizer/forward.h
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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::vec2* 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* transMat_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* isovals,
|
44 |
+
// float3* normals,
|
45 |
+
float* transMats,
|
46 |
+
float* colors,
|
47 |
+
float4* normal_opacity,
|
48 |
+
const dim3 grid,
|
49 |
+
uint32_t* tiles_touched,
|
50 |
+
bool prefiltered);
|
51 |
+
|
52 |
+
// Main rasterization method.
|
53 |
+
void render(
|
54 |
+
const dim3 grid, dim3 block,
|
55 |
+
const uint2* ranges,
|
56 |
+
const uint32_t* point_list,
|
57 |
+
int W, int H,
|
58 |
+
float focal_x, float focal_y,
|
59 |
+
const float2* points_xy_image,
|
60 |
+
const float* features,
|
61 |
+
const float* transMats,
|
62 |
+
const float* depths,
|
63 |
+
const float4* normal_opacity,
|
64 |
+
float* final_T,
|
65 |
+
uint32_t* n_contrib,
|
66 |
+
const float* bg_color,
|
67 |
+
float* out_color,
|
68 |
+
float* out_others);
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
#endif
|
submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer.h
ADDED
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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* transMat_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 |
+
float* out_others,
|
53 |
+
int* radii = nullptr,
|
54 |
+
bool debug = false);
|
55 |
+
|
56 |
+
static void backward(
|
57 |
+
const int P, int D, int M, int R,
|
58 |
+
const float* background,
|
59 |
+
const int width, int height,
|
60 |
+
const float* means3D,
|
61 |
+
const float* shs,
|
62 |
+
const float* colors_precomp,
|
63 |
+
const float* scales,
|
64 |
+
const float scale_modifier,
|
65 |
+
const float* rotations,
|
66 |
+
const float* transMat_precomp,
|
67 |
+
const float* viewmatrix,
|
68 |
+
const float* projmatrix,
|
69 |
+
const float* campos,
|
70 |
+
const float tan_fovx, float tan_fovy,
|
71 |
+
const int* radii,
|
72 |
+
char* geom_buffer,
|
73 |
+
char* binning_buffer,
|
74 |
+
char* image_buffer,
|
75 |
+
const float* dL_dpix,
|
76 |
+
const float* dL_depths,
|
77 |
+
float* dL_dmean2D,
|
78 |
+
float* dL_dnormal,
|
79 |
+
float* dL_dopacity,
|
80 |
+
float* dL_dcolor,
|
81 |
+
float* dL_dmean3D,
|
82 |
+
float* dL_dtransMat,
|
83 |
+
float* dL_dsh,
|
84 |
+
float* dL_dscale,
|
85 |
+
float* dL_drot,
|
86 |
+
bool debug);
|
87 |
+
};
|
88 |
+
};
|
89 |
+
|
90 |
+
#endif
|
submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer_impl.cu
ADDED
@@ -0,0 +1,448 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.transMat, P * 9, 128);
|
163 |
+
obtain(chunk, geom.normal_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 * 3, 128);
|
176 |
+
obtain(chunk, img.n_contrib, N * 2, 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* transMat_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 |
+
float* out_others,
|
220 |
+
int* radii,
|
221 |
+
bool debug)
|
222 |
+
{
|
223 |
+
const float focal_y = height / (2.0f * tan_fovy);
|
224 |
+
const float focal_x = width / (2.0f * tan_fovx);
|
225 |
+
|
226 |
+
size_t chunk_size = required<GeometryState>(P);
|
227 |
+
char* chunkptr = geometryBuffer(chunk_size);
|
228 |
+
GeometryState geomState = GeometryState::fromChunk(chunkptr, P);
|
229 |
+
|
230 |
+
if (radii == nullptr)
|
231 |
+
{
|
232 |
+
radii = geomState.internal_radii;
|
233 |
+
}
|
234 |
+
|
235 |
+
dim3 tile_grid((width + BLOCK_X - 1) / BLOCK_X, (height + BLOCK_Y - 1) / BLOCK_Y, 1);
|
236 |
+
dim3 block(BLOCK_X, BLOCK_Y, 1);
|
237 |
+
|
238 |
+
// Dynamically resize image-based auxiliary buffers during training
|
239 |
+
size_t img_chunk_size = required<ImageState>(width * height);
|
240 |
+
char* img_chunkptr = imageBuffer(img_chunk_size);
|
241 |
+
ImageState imgState = ImageState::fromChunk(img_chunkptr, width * height);
|
242 |
+
|
243 |
+
if (NUM_CHANNELS != 3 && colors_precomp == nullptr)
|
244 |
+
{
|
245 |
+
throw std::runtime_error("For non-RGB, provide precomputed Gaussian colors!");
|
246 |
+
}
|
247 |
+
|
248 |
+
// Run preprocessing per-Gaussian (transformation, bounding, conversion of SHs to RGB)
|
249 |
+
CHECK_CUDA(FORWARD::preprocess(
|
250 |
+
P, D, M,
|
251 |
+
means3D,
|
252 |
+
(glm::vec2*)scales,
|
253 |
+
scale_modifier,
|
254 |
+
(glm::vec4*)rotations,
|
255 |
+
opacities,
|
256 |
+
shs,
|
257 |
+
geomState.clamped,
|
258 |
+
transMat_precomp,
|
259 |
+
colors_precomp,
|
260 |
+
viewmatrix, projmatrix,
|
261 |
+
(glm::vec3*)cam_pos,
|
262 |
+
width, height,
|
263 |
+
focal_x, focal_y,
|
264 |
+
tan_fovx, tan_fovy,
|
265 |
+
radii,
|
266 |
+
geomState.means2D,
|
267 |
+
geomState.depths,
|
268 |
+
geomState.transMat,
|
269 |
+
geomState.rgb,
|
270 |
+
geomState.normal_opacity,
|
271 |
+
tile_grid,
|
272 |
+
geomState.tiles_touched,
|
273 |
+
prefiltered
|
274 |
+
), debug)
|
275 |
+
|
276 |
+
// Compute prefix sum over full list of touched tile counts by Gaussians
|
277 |
+
// E.g., [2, 3, 0, 2, 1] -> [2, 5, 5, 7, 8]
|
278 |
+
CHECK_CUDA(cub::DeviceScan::InclusiveSum(geomState.scanning_space, geomState.scan_size, geomState.tiles_touched, geomState.point_offsets, P), debug)
|
279 |
+
|
280 |
+
// Retrieve total number of Gaussian instances to launch and resize aux buffers
|
281 |
+
int num_rendered;
|
282 |
+
CHECK_CUDA(cudaMemcpy(&num_rendered, geomState.point_offsets + P - 1, sizeof(int), cudaMemcpyDeviceToHost), debug);
|
283 |
+
|
284 |
+
size_t binning_chunk_size = required<BinningState>(num_rendered);
|
285 |
+
char* binning_chunkptr = binningBuffer(binning_chunk_size);
|
286 |
+
BinningState binningState = BinningState::fromChunk(binning_chunkptr, num_rendered);
|
287 |
+
|
288 |
+
// For each instance to be rendered, produce adequate [ tile | depth ] key
|
289 |
+
// and corresponding dublicated Gaussian indices to be sorted
|
290 |
+
duplicateWithKeys << <(P + 255) / 256, 256 >> > (
|
291 |
+
P,
|
292 |
+
geomState.means2D,
|
293 |
+
geomState.depths,
|
294 |
+
geomState.point_offsets,
|
295 |
+
binningState.point_list_keys_unsorted,
|
296 |
+
binningState.point_list_unsorted,
|
297 |
+
radii,
|
298 |
+
tile_grid)
|
299 |
+
CHECK_CUDA(, debug)
|
300 |
+
|
301 |
+
int bit = getHigherMsb(tile_grid.x * tile_grid.y);
|
302 |
+
|
303 |
+
// Sort complete list of (duplicated) Gaussian indices by keys
|
304 |
+
CHECK_CUDA(cub::DeviceRadixSort::SortPairs(
|
305 |
+
binningState.list_sorting_space,
|
306 |
+
binningState.sorting_size,
|
307 |
+
binningState.point_list_keys_unsorted, binningState.point_list_keys,
|
308 |
+
binningState.point_list_unsorted, binningState.point_list,
|
309 |
+
num_rendered, 0, 32 + bit), debug)
|
310 |
+
|
311 |
+
CHECK_CUDA(cudaMemset(imgState.ranges, 0, tile_grid.x * tile_grid.y * sizeof(uint2)), debug);
|
312 |
+
|
313 |
+
// Identify start and end of per-tile workloads in sorted list
|
314 |
+
if (num_rendered > 0)
|
315 |
+
identifyTileRanges << <(num_rendered + 255) / 256, 256 >> > (
|
316 |
+
num_rendered,
|
317 |
+
binningState.point_list_keys,
|
318 |
+
imgState.ranges);
|
319 |
+
CHECK_CUDA(, debug)
|
320 |
+
|
321 |
+
// Let each tile blend its range of Gaussians independently in parallel
|
322 |
+
const float* feature_ptr = colors_precomp != nullptr ? colors_precomp : geomState.rgb;
|
323 |
+
const float* transMat_ptr = transMat_precomp != nullptr ? transMat_precomp : geomState.transMat;
|
324 |
+
CHECK_CUDA(FORWARD::render(
|
325 |
+
tile_grid, block,
|
326 |
+
imgState.ranges,
|
327 |
+
binningState.point_list,
|
328 |
+
width, height,
|
329 |
+
focal_x, focal_y,
|
330 |
+
geomState.means2D,
|
331 |
+
feature_ptr,
|
332 |
+
transMat_ptr,
|
333 |
+
geomState.depths,
|
334 |
+
geomState.normal_opacity,
|
335 |
+
imgState.accum_alpha,
|
336 |
+
imgState.n_contrib,
|
337 |
+
background,
|
338 |
+
out_color,
|
339 |
+
out_others), debug)
|
340 |
+
|
341 |
+
return num_rendered;
|
342 |
+
}
|
343 |
+
|
344 |
+
// Produce necessary gradients for optimization, corresponding
|
345 |
+
// to forward render pass
|
346 |
+
void CudaRasterizer::Rasterizer::backward(
|
347 |
+
const int P, int D, int M, int R,
|
348 |
+
const float* background,
|
349 |
+
const int width, int height,
|
350 |
+
const float* means3D,
|
351 |
+
const float* shs,
|
352 |
+
const float* colors_precomp,
|
353 |
+
const float* scales,
|
354 |
+
const float scale_modifier,
|
355 |
+
const float* rotations,
|
356 |
+
const float* transMat_precomp,
|
357 |
+
const float* viewmatrix,
|
358 |
+
const float* projmatrix,
|
359 |
+
const float* campos,
|
360 |
+
const float tan_fovx, float tan_fovy,
|
361 |
+
const int* radii,
|
362 |
+
char* geom_buffer,
|
363 |
+
char* binning_buffer,
|
364 |
+
char* img_buffer,
|
365 |
+
const float* dL_dpix,
|
366 |
+
const float* dL_depths,
|
367 |
+
float* dL_dmean2D,
|
368 |
+
float* dL_dnormal,
|
369 |
+
float* dL_dopacity,
|
370 |
+
float* dL_dcolor,
|
371 |
+
float* dL_dmean3D,
|
372 |
+
float* dL_dtransMat,
|
373 |
+
float* dL_dsh,
|
374 |
+
float* dL_dscale,
|
375 |
+
float* dL_drot,
|
376 |
+
bool debug)
|
377 |
+
{
|
378 |
+
GeometryState geomState = GeometryState::fromChunk(geom_buffer, P);
|
379 |
+
BinningState binningState = BinningState::fromChunk(binning_buffer, R);
|
380 |
+
ImageState imgState = ImageState::fromChunk(img_buffer, width * height);
|
381 |
+
|
382 |
+
if (radii == nullptr)
|
383 |
+
{
|
384 |
+
radii = geomState.internal_radii;
|
385 |
+
}
|
386 |
+
|
387 |
+
const float focal_y = height / (2.0f * tan_fovy);
|
388 |
+
const float focal_x = width / (2.0f * tan_fovx);
|
389 |
+
|
390 |
+
const dim3 tile_grid((width + BLOCK_X - 1) / BLOCK_X, (height + BLOCK_Y - 1) / BLOCK_Y, 1);
|
391 |
+
const dim3 block(BLOCK_X, BLOCK_Y, 1);
|
392 |
+
|
393 |
+
// Compute loss gradients w.r.t. 2D mean position, conic matrix,
|
394 |
+
// opacity and RGB of Gaussians from per-pixel loss gradients.
|
395 |
+
// If we were given precomputed colors and not SHs, use them.
|
396 |
+
const float* color_ptr = (colors_precomp != nullptr) ? colors_precomp : geomState.rgb;
|
397 |
+
const float* depth_ptr = geomState.depths;
|
398 |
+
const float* transMat_ptr = (transMat_precomp != nullptr) ? transMat_precomp : geomState.transMat;
|
399 |
+
CHECK_CUDA(BACKWARD::render(
|
400 |
+
tile_grid,
|
401 |
+
block,
|
402 |
+
imgState.ranges,
|
403 |
+
binningState.point_list,
|
404 |
+
width, height,
|
405 |
+
focal_x, focal_y,
|
406 |
+
background,
|
407 |
+
geomState.means2D,
|
408 |
+
geomState.normal_opacity,
|
409 |
+
color_ptr,
|
410 |
+
transMat_ptr,
|
411 |
+
depth_ptr,
|
412 |
+
imgState.accum_alpha,
|
413 |
+
imgState.n_contrib,
|
414 |
+
dL_dpix,
|
415 |
+
dL_depths,
|
416 |
+
dL_dtransMat,
|
417 |
+
(float3*)dL_dmean2D,
|
418 |
+
dL_dnormal,
|
419 |
+
dL_dopacity,
|
420 |
+
dL_dcolor), debug)
|
421 |
+
|
422 |
+
// Take care of the rest of preprocessing. Was the precomputed covariance
|
423 |
+
// given to us or a scales/rot pair? If precomputed, pass that. If not,
|
424 |
+
// use the one we computed ourselves.
|
425 |
+
// const float* transMat_ptr = (transMat_precomp != nullptr) ? transMat_precomp : geomState.transMat;
|
426 |
+
CHECK_CUDA(BACKWARD::preprocess(P, D, M,
|
427 |
+
(float3*)means3D,
|
428 |
+
radii,
|
429 |
+
shs,
|
430 |
+
geomState.clamped,
|
431 |
+
(glm::vec2*)scales,
|
432 |
+
(glm::vec4*)rotations,
|
433 |
+
scale_modifier,
|
434 |
+
transMat_ptr,
|
435 |
+
viewmatrix,
|
436 |
+
projmatrix,
|
437 |
+
focal_x, focal_y,
|
438 |
+
tan_fovx, tan_fovy,
|
439 |
+
(glm::vec3*)campos,
|
440 |
+
(float3*)dL_dmean2D, // gradient inputs
|
441 |
+
dL_dnormal, // gradient inputs
|
442 |
+
dL_dtransMat,
|
443 |
+
dL_dcolor,
|
444 |
+
dL_dsh,
|
445 |
+
(glm::vec3*)dL_dmean3D,
|
446 |
+
(glm::vec2*)dL_dscale,
|
447 |
+
(glm::vec4*)dL_drot), debug)
|
448 |
+
}
|
submodules/diff-surfel-rasterization/cuda_rasterizer/rasterizer_impl.h
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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* transMat;
|
38 |
+
float4* normal_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-surfel-rasterization/diff_surfel_rasterization/__init__.py
ADDED
@@ -0,0 +1,223 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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, depth, 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, depth, 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, depth
|
99 |
+
|
100 |
+
@staticmethod
|
101 |
+
def backward(ctx, grad_out_color, grad_radii, grad_depth):
|
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 |
+
grad_depth,
|
123 |
+
sh,
|
124 |
+
raster_settings.sh_degree,
|
125 |
+
raster_settings.campos,
|
126 |
+
geomBuffer,
|
127 |
+
num_rendered,
|
128 |
+
binningBuffer,
|
129 |
+
imgBuffer,
|
130 |
+
raster_settings.debug)
|
131 |
+
|
132 |
+
# Compute gradients for relevant tensors by invoking backward method
|
133 |
+
if raster_settings.debug:
|
134 |
+
cpu_args = cpu_deep_copy_tuple(args) # Copy them before they can be corrupted
|
135 |
+
try:
|
136 |
+
grad_means2D, grad_colors_precomp, grad_opacities, grad_means3D, grad_cov3Ds_precomp, grad_sh, grad_scales, grad_rotations = _C.rasterize_gaussians_backward(*args)
|
137 |
+
except Exception as ex:
|
138 |
+
torch.save(cpu_args, "snapshot_bw.dump")
|
139 |
+
print("\nAn error occured in backward. Writing snapshot_bw.dump for debugging.\n")
|
140 |
+
raise ex
|
141 |
+
else:
|
142 |
+
grad_means2D, grad_colors_precomp, grad_opacities, grad_means3D, grad_cov3Ds_precomp, grad_sh, grad_scales, grad_rotations = _C.rasterize_gaussians_backward(*args)
|
143 |
+
|
144 |
+
grads = (
|
145 |
+
grad_means3D,
|
146 |
+
grad_means2D,
|
147 |
+
grad_sh,
|
148 |
+
grad_colors_precomp,
|
149 |
+
grad_opacities,
|
150 |
+
grad_scales,
|
151 |
+
grad_rotations,
|
152 |
+
grad_cov3Ds_precomp,
|
153 |
+
None,
|
154 |
+
)
|
155 |
+
|
156 |
+
return grads
|
157 |
+
|
158 |
+
class GaussianRasterizationSettings(NamedTuple):
|
159 |
+
image_height: int
|
160 |
+
image_width: int
|
161 |
+
tanfovx : float
|
162 |
+
tanfovy : float
|
163 |
+
bg : torch.Tensor
|
164 |
+
scale_modifier : float
|
165 |
+
viewmatrix : torch.Tensor
|
166 |
+
projmatrix : torch.Tensor
|
167 |
+
sh_degree : int
|
168 |
+
campos : torch.Tensor
|
169 |
+
prefiltered : bool
|
170 |
+
debug : bool
|
171 |
+
|
172 |
+
class GaussianRasterizer(nn.Module):
|
173 |
+
def __init__(self, raster_settings):
|
174 |
+
super().__init__()
|
175 |
+
self.raster_settings = raster_settings
|
176 |
+
|
177 |
+
def markVisible(self, positions):
|
178 |
+
# Mark visible points (based on frustum culling for camera) with a boolean
|
179 |
+
with torch.no_grad():
|
180 |
+
raster_settings = self.raster_settings
|
181 |
+
visible = _C.mark_visible(
|
182 |
+
positions,
|
183 |
+
raster_settings.viewmatrix,
|
184 |
+
raster_settings.projmatrix)
|
185 |
+
|
186 |
+
return visible
|
187 |
+
|
188 |
+
def forward(self, means3D, means2D, opacities, shs = None, colors_precomp = None, scales = None, rotations = None, cov3D_precomp = None):
|
189 |
+
|
190 |
+
raster_settings = self.raster_settings
|
191 |
+
|
192 |
+
if (shs is None and colors_precomp is None) or (shs is not None and colors_precomp is not None):
|
193 |
+
raise Exception('Please provide excatly one of either SHs or precomputed colors!')
|
194 |
+
|
195 |
+
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):
|
196 |
+
raise Exception('Please provide exactly one of either scale/rotation pair or precomputed 3D covariance!')
|
197 |
+
|
198 |
+
if shs is None:
|
199 |
+
shs = torch.Tensor([]).cuda()
|
200 |
+
if colors_precomp is None:
|
201 |
+
colors_precomp = torch.Tensor([]).cuda()
|
202 |
+
|
203 |
+
if scales is None:
|
204 |
+
scales = torch.Tensor([]).cuda()
|
205 |
+
if rotations is None:
|
206 |
+
rotations = torch.Tensor([]).cuda()
|
207 |
+
if cov3D_precomp is None:
|
208 |
+
cov3D_precomp = torch.Tensor([]).cuda()
|
209 |
+
|
210 |
+
|
211 |
+
# Invoke C++/CUDA rasterization routine
|
212 |
+
return rasterize_gaussians(
|
213 |
+
means3D,
|
214 |
+
means2D,
|
215 |
+
shs,
|
216 |
+
colors_precomp,
|
217 |
+
opacities,
|
218 |
+
scales,
|
219 |
+
rotations,
|
220 |
+
cov3D_precomp,
|
221 |
+
raster_settings,
|
222 |
+
)
|
223 |
+
|
submodules/diff-surfel-rasterization/ext.cpp
ADDED
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/rasterize_points.cu
ADDED
@@ -0,0 +1,254 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
+
#define CHECK_INPUT(x) \
|
28 |
+
AT_ASSERTM(x.type().is_cuda(), #x " must be a CUDA tensor")
|
29 |
+
// AT_ASSERTM(x.is_contiguous(), #x " must be contiguous")
|
30 |
+
|
31 |
+
std::function<char*(size_t N)> resizeFunctional(torch::Tensor& t) {
|
32 |
+
auto lambda = [&t](size_t N) {
|
33 |
+
t.resize_({(long long)N});
|
34 |
+
return reinterpret_cast<char*>(t.contiguous().data_ptr());
|
35 |
+
};
|
36 |
+
return lambda;
|
37 |
+
}
|
38 |
+
|
39 |
+
std::tuple<int, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
|
40 |
+
RasterizeGaussiansCUDA(
|
41 |
+
const torch::Tensor& background,
|
42 |
+
const torch::Tensor& means3D,
|
43 |
+
const torch::Tensor& colors,
|
44 |
+
const torch::Tensor& opacity,
|
45 |
+
const torch::Tensor& scales,
|
46 |
+
const torch::Tensor& rotations,
|
47 |
+
const float scale_modifier,
|
48 |
+
const torch::Tensor& transMat_precomp,
|
49 |
+
const torch::Tensor& viewmatrix,
|
50 |
+
const torch::Tensor& projmatrix,
|
51 |
+
const float tan_fovx,
|
52 |
+
const float tan_fovy,
|
53 |
+
const int image_height,
|
54 |
+
const int image_width,
|
55 |
+
const torch::Tensor& sh,
|
56 |
+
const int degree,
|
57 |
+
const torch::Tensor& campos,
|
58 |
+
const bool prefiltered,
|
59 |
+
const bool debug)
|
60 |
+
{
|
61 |
+
if (means3D.ndimension() != 2 || means3D.size(1) != 3) {
|
62 |
+
AT_ERROR("means3D must have dimensions (num_points, 3)");
|
63 |
+
}
|
64 |
+
|
65 |
+
|
66 |
+
const int P = means3D.size(0);
|
67 |
+
const int H = image_height;
|
68 |
+
const int W = image_width;
|
69 |
+
|
70 |
+
CHECK_INPUT(background);
|
71 |
+
CHECK_INPUT(means3D);
|
72 |
+
CHECK_INPUT(colors);
|
73 |
+
CHECK_INPUT(opacity);
|
74 |
+
CHECK_INPUT(scales);
|
75 |
+
CHECK_INPUT(rotations);
|
76 |
+
CHECK_INPUT(transMat_precomp);
|
77 |
+
CHECK_INPUT(viewmatrix);
|
78 |
+
CHECK_INPUT(projmatrix);
|
79 |
+
CHECK_INPUT(sh);
|
80 |
+
CHECK_INPUT(campos);
|
81 |
+
|
82 |
+
auto int_opts = means3D.options().dtype(torch::kInt32);
|
83 |
+
auto float_opts = means3D.options().dtype(torch::kFloat32);
|
84 |
+
|
85 |
+
torch::Tensor out_color = torch::full({NUM_CHANNELS, H, W}, 0.0, float_opts);
|
86 |
+
torch::Tensor out_others = torch::full({3+3+1, H, W}, 0.0, float_opts);
|
87 |
+
torch::Tensor radii = torch::full({P}, 0, means3D.options().dtype(torch::kInt32));
|
88 |
+
|
89 |
+
torch::Device device(torch::kCUDA);
|
90 |
+
torch::TensorOptions options(torch::kByte);
|
91 |
+
torch::Tensor geomBuffer = torch::empty({0}, options.device(device));
|
92 |
+
torch::Tensor binningBuffer = torch::empty({0}, options.device(device));
|
93 |
+
torch::Tensor imgBuffer = torch::empty({0}, options.device(device));
|
94 |
+
std::function<char*(size_t)> geomFunc = resizeFunctional(geomBuffer);
|
95 |
+
std::function<char*(size_t)> binningFunc = resizeFunctional(binningBuffer);
|
96 |
+
std::function<char*(size_t)> imgFunc = resizeFunctional(imgBuffer);
|
97 |
+
|
98 |
+
int rendered = 0;
|
99 |
+
if(P != 0)
|
100 |
+
{
|
101 |
+
int M = 0;
|
102 |
+
if(sh.size(0) != 0)
|
103 |
+
{
|
104 |
+
M = sh.size(1);
|
105 |
+
}
|
106 |
+
|
107 |
+
rendered = CudaRasterizer::Rasterizer::forward(
|
108 |
+
geomFunc,
|
109 |
+
binningFunc,
|
110 |
+
imgFunc,
|
111 |
+
P, degree, M,
|
112 |
+
background.contiguous().data<float>(),
|
113 |
+
W, H,
|
114 |
+
means3D.contiguous().data<float>(),
|
115 |
+
sh.contiguous().data_ptr<float>(),
|
116 |
+
colors.contiguous().data<float>(),
|
117 |
+
opacity.contiguous().data<float>(),
|
118 |
+
scales.contiguous().data_ptr<float>(),
|
119 |
+
scale_modifier,
|
120 |
+
rotations.contiguous().data_ptr<float>(),
|
121 |
+
transMat_precomp.contiguous().data<float>(),
|
122 |
+
viewmatrix.contiguous().data<float>(),
|
123 |
+
projmatrix.contiguous().data<float>(),
|
124 |
+
campos.contiguous().data<float>(),
|
125 |
+
tan_fovx,
|
126 |
+
tan_fovy,
|
127 |
+
prefiltered,
|
128 |
+
out_color.contiguous().data<float>(),
|
129 |
+
out_others.contiguous().data<float>(),
|
130 |
+
radii.contiguous().data<int>(),
|
131 |
+
debug);
|
132 |
+
}
|
133 |
+
return std::make_tuple(rendered, out_color, out_others, radii, geomBuffer, binningBuffer, imgBuffer);
|
134 |
+
}
|
135 |
+
|
136 |
+
std::tuple<torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor, torch::Tensor>
|
137 |
+
RasterizeGaussiansBackwardCUDA(
|
138 |
+
const torch::Tensor& background,
|
139 |
+
const torch::Tensor& means3D,
|
140 |
+
const torch::Tensor& radii,
|
141 |
+
const torch::Tensor& colors,
|
142 |
+
const torch::Tensor& scales,
|
143 |
+
const torch::Tensor& rotations,
|
144 |
+
const float scale_modifier,
|
145 |
+
const torch::Tensor& transMat_precomp,
|
146 |
+
const torch::Tensor& viewmatrix,
|
147 |
+
const torch::Tensor& projmatrix,
|
148 |
+
const float tan_fovx,
|
149 |
+
const float tan_fovy,
|
150 |
+
const torch::Tensor& dL_dout_color,
|
151 |
+
const torch::Tensor& dL_dout_others,
|
152 |
+
const torch::Tensor& sh,
|
153 |
+
const int degree,
|
154 |
+
const torch::Tensor& campos,
|
155 |
+
const torch::Tensor& geomBuffer,
|
156 |
+
const int R,
|
157 |
+
const torch::Tensor& binningBuffer,
|
158 |
+
const torch::Tensor& imageBuffer,
|
159 |
+
const bool debug)
|
160 |
+
{
|
161 |
+
|
162 |
+
CHECK_INPUT(background);
|
163 |
+
CHECK_INPUT(means3D);
|
164 |
+
CHECK_INPUT(radii);
|
165 |
+
CHECK_INPUT(colors);
|
166 |
+
CHECK_INPUT(scales);
|
167 |
+
CHECK_INPUT(rotations);
|
168 |
+
CHECK_INPUT(transMat_precomp);
|
169 |
+
CHECK_INPUT(viewmatrix);
|
170 |
+
CHECK_INPUT(projmatrix);
|
171 |
+
CHECK_INPUT(sh);
|
172 |
+
CHECK_INPUT(campos);
|
173 |
+
CHECK_INPUT(binningBuffer);
|
174 |
+
CHECK_INPUT(imageBuffer);
|
175 |
+
CHECK_INPUT(geomBuffer);
|
176 |
+
|
177 |
+
const int P = means3D.size(0);
|
178 |
+
const int H = dL_dout_color.size(1);
|
179 |
+
const int W = dL_dout_color.size(2);
|
180 |
+
|
181 |
+
int M = 0;
|
182 |
+
if(sh.size(0) != 0)
|
183 |
+
{
|
184 |
+
M = sh.size(1);
|
185 |
+
}
|
186 |
+
|
187 |
+
torch::Tensor dL_dmeans3D = torch::zeros({P, 3}, means3D.options());
|
188 |
+
torch::Tensor dL_dmeans2D = torch::zeros({P, 3}, means3D.options());
|
189 |
+
torch::Tensor dL_dcolors = torch::zeros({P, NUM_CHANNELS}, means3D.options());
|
190 |
+
torch::Tensor dL_dnormal = torch::zeros({P, 3}, means3D.options());
|
191 |
+
torch::Tensor dL_dopacity = torch::zeros({P, 1}, means3D.options());
|
192 |
+
torch::Tensor dL_dtransMat = torch::zeros({P, 9}, means3D.options());
|
193 |
+
torch::Tensor dL_dsh = torch::zeros({P, M, 3}, means3D.options());
|
194 |
+
torch::Tensor dL_dscales = torch::zeros({P, 2}, means3D.options());
|
195 |
+
torch::Tensor dL_drotations = torch::zeros({P, 4}, means3D.options());
|
196 |
+
|
197 |
+
if(P != 0)
|
198 |
+
{
|
199 |
+
CudaRasterizer::Rasterizer::backward(P, degree, M, R,
|
200 |
+
background.contiguous().data<float>(),
|
201 |
+
W, H,
|
202 |
+
means3D.contiguous().data<float>(),
|
203 |
+
sh.contiguous().data<float>(),
|
204 |
+
colors.contiguous().data<float>(),
|
205 |
+
scales.data_ptr<float>(),
|
206 |
+
scale_modifier,
|
207 |
+
rotations.data_ptr<float>(),
|
208 |
+
transMat_precomp.contiguous().data<float>(),
|
209 |
+
viewmatrix.contiguous().data<float>(),
|
210 |
+
projmatrix.contiguous().data<float>(),
|
211 |
+
campos.contiguous().data<float>(),
|
212 |
+
tan_fovx,
|
213 |
+
tan_fovy,
|
214 |
+
radii.contiguous().data<int>(),
|
215 |
+
reinterpret_cast<char*>(geomBuffer.contiguous().data_ptr()),
|
216 |
+
reinterpret_cast<char*>(binningBuffer.contiguous().data_ptr()),
|
217 |
+
reinterpret_cast<char*>(imageBuffer.contiguous().data_ptr()),
|
218 |
+
dL_dout_color.contiguous().data<float>(),
|
219 |
+
dL_dout_others.contiguous().data<float>(),
|
220 |
+
dL_dmeans2D.contiguous().data<float>(),
|
221 |
+
dL_dnormal.contiguous().data<float>(),
|
222 |
+
dL_dopacity.contiguous().data<float>(),
|
223 |
+
dL_dcolors.contiguous().data<float>(),
|
224 |
+
dL_dmeans3D.contiguous().data<float>(),
|
225 |
+
dL_dtransMat.contiguous().data<float>(),
|
226 |
+
dL_dsh.contiguous().data<float>(),
|
227 |
+
dL_dscales.contiguous().data<float>(),
|
228 |
+
dL_drotations.contiguous().data<float>(),
|
229 |
+
debug);
|
230 |
+
}
|
231 |
+
|
232 |
+
return std::make_tuple(dL_dmeans2D, dL_dcolors, dL_dopacity, dL_dmeans3D, dL_dtransMat, dL_dsh, dL_dscales, dL_drotations);
|
233 |
+
}
|
234 |
+
|
235 |
+
torch::Tensor markVisible(
|
236 |
+
torch::Tensor& means3D,
|
237 |
+
torch::Tensor& viewmatrix,
|
238 |
+
torch::Tensor& projmatrix)
|
239 |
+
{
|
240 |
+
const int P = means3D.size(0);
|
241 |
+
|
242 |
+
torch::Tensor present = torch::full({P}, false, means3D.options().dtype(at::kBool));
|
243 |
+
|
244 |
+
if(P != 0)
|
245 |
+
{
|
246 |
+
CudaRasterizer::Rasterizer::markVisible(P,
|
247 |
+
means3D.contiguous().data<float>(),
|
248 |
+
viewmatrix.contiguous().data<float>(),
|
249 |
+
projmatrix.contiguous().data<float>(),
|
250 |
+
present.contiguous().data<bool>());
|
251 |
+
}
|
252 |
+
|
253 |
+
return present;
|
254 |
+
}
|
submodules/diff-surfel-rasterization/rasterize_points.h
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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, 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& transMat_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& transMat_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& dL_dout_others,
|
56 |
+
const torch::Tensor& sh,
|
57 |
+
const int degree,
|
58 |
+
const torch::Tensor& campos,
|
59 |
+
const torch::Tensor& geomBuffer,
|
60 |
+
const int R,
|
61 |
+
const torch::Tensor& binningBuffer,
|
62 |
+
const torch::Tensor& imageBuffer,
|
63 |
+
const bool debug);
|
64 |
+
|
65 |
+
torch::Tensor markVisible(
|
66 |
+
torch::Tensor& means3D,
|
67 |
+
torch::Tensor& viewmatrix,
|
68 |
+
torch::Tensor& projmatrix);
|
submodules/diff-surfel-rasterization/setup.py
ADDED
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_surfel_rasterization",
|
19 |
+
packages=['diff_surfel_rasterization'],
|
20 |
+
version='0.0.1',
|
21 |
+
ext_modules=[
|
22 |
+
CUDAExtension(
|
23 |
+
name="diff_surfel_rasterization._C",
|
24 |
+
sources=[
|
25 |
+
"cuda_rasterizer/rasterizer_impl.cu",
|
26 |
+
"cuda_rasterizer/forward.cu",
|
27 |
+
"cuda_rasterizer/backward.cu",
|
28 |
+
"rasterize_points.cu",
|
29 |
+
"ext.cpp"],
|
30 |
+
extra_compile_args={"nvcc": ["-I" + os.path.join(os.path.dirname(os.path.abspath(__file__)), "third_party/glm/")]})
|
31 |
+
],
|
32 |
+
cmdclass={
|
33 |
+
'build_ext': BuildExtension
|
34 |
+
}
|
35 |
+
)
|
submodules/diff-surfel-rasterization/third_party/glm/.appveyor.yml
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/.gitignore
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/.travis.yml
ADDED
@@ -0,0 +1,388 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/CMakeLists.txt
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/cmake/cmake_uninstall.cmake.in
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/copying.txt
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-surfel-rasterization/third_party/glm/doc/api/a00001_source.html
ADDED
@@ -0,0 +1,493 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> <span class="preprocessor">#pragma once</span></div>
|
92 |
+
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div>
|
93 |
+
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// #define GLM_CXX98_EXCEPTIONS</span></div>
|
94 |
+
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// #define GLM_CXX98_RTTI</span></div>
|
95 |
+
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> </div>
|
96 |
+
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// #define GLM_CXX11_RVALUE_REFERENCES</span></div>
|
97 |
+
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// Rvalue references - GCC 4.3</span></div>
|
98 |
+
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <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> </div>
|
100 |
+
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// GLM_CXX11_TRAILING_RETURN</span></div>
|
101 |
+
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <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> <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> </div>
|
104 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
105 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <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> <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> </div>
|
108 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
109 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <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> <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> </div>
|
112 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">// #define GLM_CXX11_VARIADIC_TEMPLATE</span></div>
|
113 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// Variadic templates - GCC 4.3</span></div>
|
114 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <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> </div>
|
116 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">//</span></div>
|
117 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> <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> </div>
|
120 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// #define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
|
121 |
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// Initializer lists - GCC 4.4</span></div>
|
122 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <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> </div>
|
124 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// #define GLM_CXX11_STATIC_ASSERT</span></div>
|
125 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// Static assertions - GCC 4.3</span></div>
|
126 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <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> </div>
|
128 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
129 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// auto-typed variables - GCC 4.4</span></div>
|
130 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <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> </div>
|
132 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
133 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// Multi-declarator auto - GCC 4.4</span></div>
|
134 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <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> </div>
|
136 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
137 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <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> <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> </div>
|
140 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
|
141 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <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> <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> </div>
|
144 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">// #define GLM_CXX11_LAMBDAS</span></div>
|
145 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <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> <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> </div>
|
148 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">// #define GLM_CXX11_DECLTYPE</span></div>
|
149 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <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> <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> </div>
|
152 |
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">//</span></div>
|
153 |
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">// Right angle brackets - GCC 4.3</span></div>
|
154 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <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> </div>
|
156 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">//</span></div>
|
157 |
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <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> <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> </div>
|
160 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment">//</span></div>
|
161 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <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> <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> </div>
|
164 |
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">// #define GLM_CXX11_ALIAS_TEMPLATE</span></div>
|
165 |
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">// Template aliases N2258 GCC 4.7</span></div>
|
166 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <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> </div>
|
168 |
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">//</span></div>
|
169 |
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">// Extern templates N1987 Yes</span></div>
|
170 |
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <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> </div>
|
172 |
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">// #define GLM_CXX11_NULLPTR</span></div>
|
173 |
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <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> <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> </div>
|
176 |
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">// #define GLM_CXX11_STRONG_ENUMS</span></div>
|
177 |
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <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> <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> </div>
|
180 |
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">//</span></div>
|
181 |
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <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> <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> </div>
|
184 |
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">//</span></div>
|
185 |
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// Generalized attributes N2761 GCC 4.8</span></div>
|
186 |
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <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> </div>
|
188 |
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">//</span></div>
|
189 |
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <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> <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> </div>
|
192 |
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">//</span></div>
|
193 |
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// Alignment support N2341 GCC 4.8</span></div>
|
194 |
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <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> </div>
|
196 |
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// #define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
|
197 |
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// Delegating constructors N1986 GCC 4.7</span></div>
|
198 |
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <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> </div>
|
200 |
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">//</span></div>
|
201 |
+
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// Inheriting constructors N2540 GCC 4.8</span></div>
|
202 |
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <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> </div>
|
204 |
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// #define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
|
205 |
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <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> <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> </div>
|
208 |
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment">//</span></div>
|
209 |
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <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> <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> </div>
|
212 |
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="comment">//</span></div>
|
213 |
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <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> <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> </div>
|
216 |
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">//</span></div>
|
217 |
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <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> <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> </div>
|
220 |
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment">//</span></div>
|
221 |
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <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> <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> </div>
|
224 |
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// #define GLM_CXX11_USER_LITERALS</span></div>
|
225 |
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <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> <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> </div>
|
228 |
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="comment">//</span></div>
|
229 |
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <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> <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> </div>
|
232 |
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// #define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
|
233 |
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// #define GLM_CXX11_DELETED_FUNCTIONS</span></div>
|
234 |
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <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> <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> </div>
|
237 |
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment">//</span></div>
|
238 |
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <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> <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> </div>
|
241 |
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">//</span></div>
|
242 |
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// Extending sizeof N2253 GCC 4.4</span></div>
|
243 |
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <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> </div>
|
245 |
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="comment">// #define GLM_CXX11_INLINE_NAMESPACES</span></div>
|
246 |
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// Inline namespaces N2535 GCC 4.4</span></div>
|
247 |
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <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> </div>
|
249 |
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// #define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
|
250 |
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment">// Unrestricted unions N2544 GCC 4.6</span></div>
|
251 |
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <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> </div>
|
253 |
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <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> <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> <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> </div>
|
257 |
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment">// #define GLM_CXX11_RANGE_FOR</span></div>
|
258 |
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <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> <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> </div>
|
261 |
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="comment">// #define GLM_CXX11_OVERRIDE_CONTROL</span></div>
|
262 |
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <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> <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> <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> <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> </div>
|
267 |
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="comment">//</span></div>
|
268 |
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <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> <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> </div>
|
271 |
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// #define GLM_CXX11_NOEXCEPT</span></div>
|
272 |
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <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> <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> </div>
|
275 |
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment">//</span></div>
|
276 |
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <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> <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> </div>
|
279 |
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="comment">//</span></div>
|
280 |
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// Sequence points N2239 Yes</span></div>
|
281 |
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <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> </div>
|
283 |
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment">//</span></div>
|
284 |
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">// Atomic operations N2427 GCC 4.4</span></div>
|
285 |
+
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <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> </div>
|
287 |
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="comment">//</span></div>
|
288 |
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <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> <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> </div>
|
291 |
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="comment">//</span></div>
|
292 |
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment">// Bidirectional Fences N2752 GCC 4.8</span></div>
|
293 |
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <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> </div>
|
295 |
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="comment">//</span></div>
|
296 |
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="comment">// Memory model N2429 GCC 4.8</span></div>
|
297 |
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <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> </div>
|
299 |
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">//</span></div>
|
300 |
+
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <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> <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> </div>
|
303 |
+
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">//</span></div>
|
304 |
+
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// Propagating exceptions N2179 GCC 4.4</span></div>
|
305 |
+
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> <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> </div>
|
307 |
+
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment">//</span></div>
|
308 |
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <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> <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> </div>
|
311 |
+
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">//</span></div>
|
312 |
+
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <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> <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> </div>
|
315 |
+
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment">//</span></div>
|
316 |
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <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> <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> </div>
|
319 |
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment">//</span></div>
|
320 |
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <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> <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> </div>
|
323 |
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment">//</span></div>
|
324 |
+
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <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> <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> </div>
|
327 |
+
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment">//</span></div>
|
328 |
+
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment">// C99 preprocessor N1653 GCC 4.3</span></div>
|
329 |
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <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> </div>
|
331 |
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment">//</span></div>
|
332 |
+
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment">// long long N1811 GCC 4.3</span></div>
|
333 |
+
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <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> </div>
|
335 |
+
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="comment">//</span></div>
|
336 |
+
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment">// Extended integral types N1988 Yes</span></div>
|
337 |
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <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> </div>
|
339 |
+
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="preprocessor">#if(GLM_COMPILER & GLM_COMPILER_GCC)</span></div>
|
340 |
+
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div>
|
341 |
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> <span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
|
342 |
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div>
|
343 |
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> <span class="preprocessor">#elif(GLM_COMPILER & GLM_COMPILER_CLANG)</span></div>
|
344 |
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="preprocessor"># if(__has_feature(cxx_exceptions))</span></div>
|
345 |
+
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="preprocessor"># define GLM_CXX98_EXCEPTIONS</span></div>
|
346 |
+
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor"># endif</span></div>
|
347 |
+
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> </div>
|
348 |
+
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="preprocessor"># if(__has_feature(cxx_rtti))</span></div>
|
349 |
+
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="preprocessor"># define GLM_CXX98_RTTI</span></div>
|
350 |
+
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="preprocessor"># endif</span></div>
|
351 |
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div>
|
352 |
+
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <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> <span class="preprocessor"># define GLM_CXX11_ACCESS_CONTROL_SFINAE</span></div>
|
354 |
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="preprocessor"># endif</span></div>
|
355 |
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div>
|
356 |
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor"># if(__has_feature(cxx_alias_templates))</span></div>
|
357 |
+
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="preprocessor"># define GLM_CXX11_ALIAS_TEMPLATE</span></div>
|
358 |
+
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor"># endif</span></div>
|
359 |
+
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> </div>
|
360 |
+
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="preprocessor"># if(__has_feature(cxx_alignas))</span></div>
|
361 |
+
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="preprocessor"># define GLM_CXX11_ALIGNAS</span></div>
|
362 |
+
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="preprocessor"># endif</span></div>
|
363 |
+
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div>
|
364 |
+
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor"># if(__has_feature(cxx_attributes))</span></div>
|
365 |
+
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="preprocessor"># define GLM_CXX11_ATTRIBUTES</span></div>
|
366 |
+
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="preprocessor"># endif</span></div>
|
367 |
+
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> </div>
|
368 |
+
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="preprocessor"># if(__has_feature(cxx_constexpr))</span></div>
|
369 |
+
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="preprocessor"># define GLM_CXX11_CONSTEXPR</span></div>
|
370 |
+
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="preprocessor"># endif</span></div>
|
371 |
+
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div>
|
372 |
+
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="preprocessor"># if(__has_feature(cxx_decltype))</span></div>
|
373 |
+
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="preprocessor"># define GLM_CXX11_DECLTYPE</span></div>
|
374 |
+
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <span class="preprocessor"># endif</span></div>
|
375 |
+
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div>
|
376 |
+
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <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> <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> <span class="preprocessor"># endif</span></div>
|
379 |
+
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div>
|
380 |
+
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="preprocessor"># if(__has_feature(cxx_defaulted_functions))</span></div>
|
381 |
+
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="preprocessor"># define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
|
382 |
+
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="preprocessor"># endif</span></div>
|
383 |
+
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div>
|
384 |
+
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="preprocessor"># if(__has_feature(cxx_delegating_constructors))</span></div>
|
385 |
+
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="preprocessor"># define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
|
386 |
+
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="preprocessor"># endif</span></div>
|
387 |
+
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div>
|
388 |
+
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="preprocessor"># if(__has_feature(cxx_deleted_functions))</span></div>
|
389 |
+
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="preprocessor"># define GLM_CXX11_DELETED_FUNCTIONS</span></div>
|
390 |
+
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="preprocessor"># endif</span></div>
|
391 |
+
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div>
|
392 |
+
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="preprocessor"># if(__has_feature(cxx_explicit_conversions))</span></div>
|
393 |
+
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="preprocessor"># define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
|
394 |
+
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="preprocessor"># endif</span></div>
|
395 |
+
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> </div>
|
396 |
+
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> <span class="preprocessor"># if(__has_feature(cxx_generalized_initializers))</span></div>
|
397 |
+
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="preprocessor"># define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
|
398 |
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="preprocessor"># endif</span></div>
|
399 |
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> </div>
|
400 |
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="preprocessor"># if(__has_feature(cxx_implicit_moves))</span></div>
|
401 |
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="preprocessor"># define GLM_CXX11_IMPLICIT_MOVES</span></div>
|
402 |
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="preprocessor"># endif</span></div>
|
403 |
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div>
|
404 |
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="preprocessor"># if(__has_feature(cxx_inheriting_constructors))</span></div>
|
405 |
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="preprocessor"># define GLM_CXX11_INHERITING_CONSTRUCTORS</span></div>
|
406 |
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="preprocessor"># endif</span></div>
|
407 |
+
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> </div>
|
408 |
+
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> <span class="preprocessor"># if(__has_feature(cxx_inline_namespaces))</span></div>
|
409 |
+
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="preprocessor"># define GLM_CXX11_INLINE_NAMESPACES</span></div>
|
410 |
+
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="preprocessor"># endif</span></div>
|
411 |
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> </div>
|
412 |
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="preprocessor"># if(__has_feature(cxx_lambdas))</span></div>
|
413 |
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="preprocessor"># define GLM_CXX11_LAMBDAS</span></div>
|
414 |
+
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor"># endif</span></div>
|
415 |
+
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> </div>
|
416 |
+
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <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> <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> <span class="preprocessor"># endif</span></div>
|
419 |
+
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div>
|
420 |
+
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="preprocessor"># if(__has_feature(cxx_noexcept))</span></div>
|
421 |
+
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="preprocessor"># define GLM_CXX11_NOEXCEPT</span></div>
|
422 |
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="preprocessor"># endif</span></div>
|
423 |
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div>
|
424 |
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <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> <span class="preprocessor"># define GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
|
426 |
+
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="preprocessor"># endif</span></div>
|
427 |
+
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div>
|
428 |
+
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="preprocessor"># if(__has_feature(cxx_nullptr))</span></div>
|
429 |
+
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="preprocessor"># define GLM_CXX11_NULLPTR</span></div>
|
430 |
+
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="preprocessor"># endif</span></div>
|
431 |
+
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div>
|
432 |
+
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="preprocessor"># if(__has_feature(cxx_override_control))</span></div>
|
433 |
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="preprocessor"># define GLM_CXX11_OVERRIDE_CONTROL</span></div>
|
434 |
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="preprocessor"># endif</span></div>
|
435 |
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div>
|
436 |
+
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <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> <span class="preprocessor"># define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS</span></div>
|
438 |
+
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="preprocessor"># endif</span></div>
|
439 |
+
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> </div>
|
440 |
+
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="preprocessor"># if(__has_feature(cxx_range_for))</span></div>
|
441 |
+
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="preprocessor"># define GLM_CXX11_RANGE_FOR</span></div>
|
442 |
+
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="preprocessor"># endif</span></div>
|
443 |
+
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> </div>
|
444 |
+
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <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> <span class="preprocessor"># define GLM_CXX11_RAW_STRING_LITERALS</span></div>
|
446 |
+
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="preprocessor"># endif</span></div>
|
447 |
+
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> </div>
|
448 |
+
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="preprocessor"># if(__has_feature(cxx_rvalue_references))</span></div>
|
449 |
+
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> <span class="preprocessor"># define GLM_CXX11_RVALUE_REFERENCES</span></div>
|
450 |
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="preprocessor"># endif</span></div>
|
451 |
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> </div>
|
452 |
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> <span class="preprocessor"># if(__has_feature(cxx_static_assert))</span></div>
|
453 |
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> <span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
|
454 |
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="preprocessor"># endif</span></div>
|
455 |
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div>
|
456 |
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"># if(__has_feature(cxx_auto_type))</span></div>
|
457 |
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor"># define GLM_CXX11_AUTO_TYPE</span></div>
|
458 |
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"># endif</span></div>
|
459 |
+
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div>
|
460 |
+
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"># if(__has_feature(cxx_strong_enums))</span></div>
|
461 |
+
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="preprocessor"># define GLM_CXX11_STRONG_ENUMS</span></div>
|
462 |
+
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="preprocessor"># endif</span></div>
|
463 |
+
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> </div>
|
464 |
+
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="preprocessor"># if(__has_feature(cxx_trailing_return))</span></div>
|
465 |
+
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="preprocessor"># define GLM_CXX11_TRAILING_RETURN</span></div>
|
466 |
+
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> <span class="preprocessor"># endif</span></div>
|
467 |
+
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> </div>
|
468 |
+
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> <span class="preprocessor"># if(__has_feature(cxx_unicode_literals))</span></div>
|
469 |
+
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="preprocessor"># define GLM_CXX11_UNICODE_LITERALS</span></div>
|
470 |
+
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="preprocessor"># endif</span></div>
|
471 |
+
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div>
|
472 |
+
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="preprocessor"># if(__has_feature(cxx_unrestricted_unions))</span></div>
|
473 |
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="preprocessor"># define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
|
474 |
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="preprocessor"># endif</span></div>
|
475 |
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div>
|
476 |
+
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> <span class="preprocessor"># if(__has_feature(cxx_user_literals))</span></div>
|
477 |
+
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="preprocessor"># define GLM_CXX11_USER_LITERALS</span></div>
|
478 |
+
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="preprocessor"># endif</span></div>
|
479 |
+
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> </div>
|
480 |
+
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="preprocessor"># if(__has_feature(cxx_variadic_templates))</span></div>
|
481 |
+
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="preprocessor"># define GLM_CXX11_VARIADIC_TEMPLATES</span></div>
|
482 |
+
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> <span class="preprocessor"># endif</span></div>
|
483 |
+
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div>
|
484 |
+
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> <span class="preprocessor">#endif//(GLM_COMPILER & 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  <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-surfel-rasterization/third_party/glm/doc/api/a00002_source.html
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> <span class="preprocessor">#include <cmath></span></div>
|
92 |
+
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div>
|
93 |
+
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#ifdef max</span></div>
|
94 |
+
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#undef max</span></div>
|
95 |
+
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#endif</span></div>
|
96 |
+
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div>
|
97 |
+
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#ifdef min</span></div>
|
98 |
+
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#undef min</span></div>
|
99 |
+
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#endif</span></div>
|
100 |
+
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div>
|
101 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#ifdef isnan</span></div>
|
102 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#undef isnan</span></div>
|
103 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
105 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifdef isinf</span></div>
|
106 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#undef isinf</span></div>
|
107 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#endif</span></div>
|
108 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
|
109 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#ifdef log2</span></div>
|
110 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#undef log2</span></div>
|
111 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif</span></div>
|
112 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
113 |
+
</div><!-- fragment --></div><!-- contents -->
|
114 |
+
<!-- start footer part -->
|
115 |
+
<hr class="footer"/><address class="footer"><small>
|
116 |
+
Generated by  <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-surfel-rasterization/third_party/glm/doc/api/a00003_source.html
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> <span class="preprocessor">#pragma once</span></div>
|
92 |
+
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div>
|
93 |
+
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include "../common.hpp"</span></div>
|
94 |
+
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> </div>
|
95 |
+
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <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> <span class="keyword">namespace </span>detail</div>
|
97 |
+
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> {</div>
|
98 |
+
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
99 |
+
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  GLM_FUNC_QUALIFIER T mod289(T <span class="keyword">const</span>& x)</div>
|
100 |
+
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  {</div>
|
101 |
+
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordflow">return</span> x - <a class="code" href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a>(x * (static_cast<T>(1.0) / static_cast<T>(289.0))) * <span class="keyword">static_cast<</span>T<span class="keyword">></span>(289.0);</div>
|
102 |
+
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  }</div>
|
103 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div>
|
104 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
105 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  GLM_FUNC_QUALIFIER T permute(T <span class="keyword">const</span>& x)</div>
|
106 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  {</div>
|
107 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
108 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  }</div>
|
109 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div>
|
110 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
111 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> <span class="keyword">const</span>& x)</div>
|
112 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  {</div>
|
113 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
114 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  }</div>
|
115 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
116 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
117 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> <span class="keyword">const</span>& x)</div>
|
118 |
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {</div>
|
119 |
+
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
120 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  }</div>
|
121 |
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
|
122 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
123 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> <span class="keyword">const</span>& x)</div>
|
124 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  {</div>
|
125 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">return</span> mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);</div>
|
126 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  }</div>
|
127 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
|
128 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
129 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GLM_FUNC_QUALIFIER T taylorInvSqrt(T <span class="keyword">const</span>& r)</div>
|
130 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div>
|
131 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T<span class="keyword">></span>(1.79284291400159) - <span class="keyword">static_cast<</span>T<span class="keyword">></span>(0.85373472095314) * r;</div>
|
132 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  }</div>
|
133 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
|
134 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
135 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> <span class="keyword">const</span>& r)</div>
|
136 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div>
|
137 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T<span class="keyword">></span>(1.79284291400159) - <span class="keyword">static_cast<</span>T<span class="keyword">></span>(0.85373472095314) * r;</div>
|
138 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div>
|
139 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div>
|
140 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
141 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> <span class="keyword">const</span>& r)</div>
|
142 |
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
143 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T<span class="keyword">></span>(1.79284291400159) - <span class="keyword">static_cast<</span>T<span class="keyword">></span>(0.85373472095314) * r;</div>
|
144 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div>
|
145 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
146 |
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
147 |
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> <span class="keyword">const</span>& r)</div>
|
148 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  {</div>
|
149 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>T<span class="keyword">></span>(1.79284291400159) - <span class="keyword">static_cast<</span>T<span class="keyword">></span>(0.85373472095314) * r;</div>
|
150 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  }</div>
|
151 |
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div>
|
152 |
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
153 |
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> <span class="keyword">const</span>& t)</div>
|
154 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div>
|
155 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast<</span>T<span class="keyword">></span>(6) - static_cast<T>(15)) + static_cast<T>(10));</div>
|
156 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div>
|
157 |
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
|
158 |
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
159 |
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> <span class="keyword">const</span>& t)</div>
|
160 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div>
|
161 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast<</span>T<span class="keyword">></span>(6) - static_cast<T>(15)) + static_cast<T>(10));</div>
|
162 |
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div>
|
163 |
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
|
164 |
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
165 |
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> <span class="keyword">const</span>& t)</div>
|
166 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  {</div>
|
167 |
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">return</span> (t * t * t) * (t * (t * <span class="keyword">static_cast<</span>T<span class="keyword">></span>(6) - static_cast<T>(15)) + static_cast<T>(10));</div>
|
168 |
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  }</div>
|
169 |
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> }<span class="comment">//namespace detail</span></div>
|
170 |
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> }<span class="comment">//namespace glm</span></div>
|
171 |
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </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< L, T, Q > floor(vec< L, T, Q > const &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  <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-surfel-rasterization/third_party/glm/doc/api/a00004_source.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00005_source.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00006_source.html
ADDED
@@ -0,0 +1,262 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> <span class="preprocessor">#pragma once</span></div>
|
92 |
+
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div>
|
93 |
+
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <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> <span class="keyword">namespace </span>detail</div>
|
95 |
+
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> {</div>
|
96 |
+
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
97 |
+
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keyword">struct </span>functor1{};</div>
|
98 |
+
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div>
|
99 |
+
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
100 |
+
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  <span class="keyword">struct </span>functor1<vec, 1, R, T, Q></div>
|
101 |
+
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  {</div>
|
102 |
+
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec<1, R, Q> call(R (*Func) (T x), vec<1, T, Q> <span class="keyword">const</span>& v)</div>
|
103 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  {</div>
|
104 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  <span class="keywordflow">return</span> vec<1, R, Q>(Func(v.x));</div>
|
105 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  }</div>
|
106 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  };</div>
|
107 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
108 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
109 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <span class="keyword">struct </span>functor1<vec, 2, R, T, Q></div>
|
110 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  {</div>
|
111 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec<2, R, Q> call(R (*Func) (T x), vec<2, T, Q> <span class="keyword">const</span>& v)</div>
|
112 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  {</div>
|
113 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  <span class="keywordflow">return</span> vec<2, R, Q>(Func(v.x), Func(v.y));</div>
|
114 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  }</div>
|
115 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  };</div>
|
116 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div>
|
117 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
118 |
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keyword">struct </span>functor1<vec, 3, R, T, Q></div>
|
119 |
+
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  {</div>
|
120 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec<3, R, Q> call(R (*Func) (T x), vec<3, T, Q> <span class="keyword">const</span>& v)</div>
|
121 |
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div>
|
122 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keywordflow">return</span> vec<3, R, Q>(Func(v.x), Func(v.y), Func(v.z));</div>
|
123 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div>
|
124 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  };</div>
|
125 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div>
|
126 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> R, <span class="keyword">typename</span> T, qualifier Q></div>
|
127 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keyword">struct </span>functor1<vec, 4, R, T, Q></div>
|
128 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  {</div>
|
129 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  GLM_FUNC_QUALIFIER GLM_CONSTEXPR <span class="keyword">static</span> vec<4, R, Q> call(R (*Func) (T x), vec<4, T, Q> <span class="keyword">const</span>& v)</div>
|
130 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div>
|
131 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordflow">return</span> vec<4, R, Q>(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>  }</div>
|
133 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  };</div>
|
134 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
135 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
136 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">struct </span>functor2{};</div>
|
137 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
|
138 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
139 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">struct </span>functor2<vec, 1, T, Q></div>
|
140 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  {</div>
|
141 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> <span class="keyword">const</span>& a, vec<1, T, Q> <span class="keyword">const</span>& b)</div>
|
142 |
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div>
|
143 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">return</span> vec<1, T, Q>(Func(a.x, b.x));</div>
|
144 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  }</div>
|
145 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  };</div>
|
146 |
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
|
147 |
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
148 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">struct </span>functor2<vec, 2, T, Q></div>
|
149 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  {</div>
|
150 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> <span class="keyword">const</span>& a, vec<2, T, Q> <span class="keyword">const</span>& b)</div>
|
151 |
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div>
|
152 |
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> vec<2, T, Q>(Func(a.x, b.x), Func(a.y, b.y));</div>
|
153 |
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div>
|
154 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  };</div>
|
155 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div>
|
156 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
157 |
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keyword">struct </span>functor2<vec, 3, T, Q></div>
|
158 |
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  {</div>
|
159 |
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> <span class="keyword">const</span>& a, vec<3, T, Q> <span class="keyword">const</span>& b)</div>
|
160 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  {</div>
|
161 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> vec<3, T, Q>(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>  }</div>
|
163 |
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  };</div>
|
164 |
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div>
|
165 |
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
166 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">struct </span>functor2<vec, 4, T, Q></div>
|
167 |
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  {</div>
|
168 |
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> <span class="keyword">const</span>& a, vec<4, T, Q> <span class="keyword">const</span>& b)</div>
|
169 |
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div>
|
170 |
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">return</span> vec<4, T, Q>(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>  }</div>
|
172 |
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  };</div>
|
173 |
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div>
|
174 |
+
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
175 |
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">struct </span>functor2_vec_sca{};</div>
|
176 |
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div>
|
177 |
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
178 |
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  <span class="keyword">struct </span>functor2_vec_sca<vec, 1, T, Q></div>
|
179 |
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div>
|
180 |
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, T, Q> call(T (*Func) (T x, T y), vec<1, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
181 |
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  {</div>
|
182 |
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="keywordflow">return</span> vec<1, T, Q>(Func(a.x, b));</div>
|
183 |
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  }</div>
|
184 |
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  };</div>
|
185 |
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
|
186 |
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
187 |
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keyword">struct </span>functor2_vec_sca<vec, 2, T, Q></div>
|
188 |
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  {</div>
|
189 |
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, T, Q> call(T (*Func) (T x, T y), vec<2, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
190 |
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  {</div>
|
191 |
+
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> vec<2, T, Q>(Func(a.x, b), Func(a.y, b));</div>
|
192 |
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div>
|
193 |
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  };</div>
|
194 |
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
|
195 |
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
196 |
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keyword">struct </span>functor2_vec_sca<vec, 3, T, Q></div>
|
197 |
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div>
|
198 |
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, T, Q> call(T (*Func) (T x, T y), vec<3, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
199 |
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  {</div>
|
200 |
+
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">return</span> vec<3, T, Q>(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>  }</div>
|
202 |
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  };</div>
|
203 |
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div>
|
204 |
+
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keyword">template</span><<span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q> <span class="keyword">class </span>vec, <span class="keyword">typename</span> T, qualifier Q></div>
|
205 |
+
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keyword">struct </span>functor2_vec_sca<vec, 4, T, Q></div>
|
206 |
+
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  {</div>
|
207 |
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, T, Q> call(T (*Func) (T x, T y), vec<4, T, Q> <span class="keyword">const</span>& a, T b)</div>
|
208 |
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  {</div>
|
209 |
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">return</span> vec<4, T, Q>(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>  }</div>
|
211 |
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  };</div>
|
212 |
+
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div>
|
213 |
+
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
214 |
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">struct </span>functor2_vec_int {};</div>
|
215 |
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div>
|
216 |
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
217 |
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keyword">struct </span>functor2_vec_int<1, T, Q></div>
|
218 |
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  {</div>
|
219 |
+
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<1, int, Q> call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec<1, T, Q> <span class="keyword">const</span>& a, vec<1, int, Q> <span class="keyword">const</span>& b)</div>
|
220 |
+
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  {</div>
|
221 |
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> vec<1, int, Q>(Func(a.x, b.x));</div>
|
222 |
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  }</div>
|
223 |
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  };</div>
|
224 |
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div>
|
225 |
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
226 |
+
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keyword">struct </span>functor2_vec_int<2, T, Q></div>
|
227 |
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  {</div>
|
228 |
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<2, int, Q> call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec<2, T, Q> <span class="keyword">const</span>& a, vec<2, int, Q> <span class="keyword">const</span>& b)</div>
|
229 |
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  {</div>
|
230 |
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">return</span> vec<2, int, Q>(Func(a.x, b.x), Func(a.y, b.y));</div>
|
231 |
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  }</div>
|
232 |
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  };</div>
|
233 |
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div>
|
234 |
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
235 |
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keyword">struct </span>functor2_vec_int<3, T, Q></div>
|
236 |
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  {</div>
|
237 |
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<3, int, Q> call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec<3, T, Q> <span class="keyword">const</span>& a, vec<3, int, Q> <span class="keyword">const</span>& b)</div>
|
238 |
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  {</div>
|
239 |
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> vec<3, int, Q>(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>  }</div>
|
241 |
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  };</div>
|
242 |
+
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> </div>
|
243 |
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
244 |
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">struct </span>functor2_vec_int<4, T, Q></div>
|
245 |
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  {</div>
|
246 |
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  GLM_FUNC_QUALIFIER <span class="keyword">static</span> vec<4, int, Q> call(<span class="keywordtype">int</span> (*Func) (T x, <span class="keywordtype">int</span> y), vec<4, T, Q> <span class="keyword">const</span>& a, vec<4, int, Q> <span class="keyword">const</span>& b)</div>
|
247 |
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div>
|
248 |
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">return</span> vec<4, int, Q>(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>  }</div>
|
250 |
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  };</div>
|
251 |
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }<span class="comment">//namespace detail</span></div>
|
252 |
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> }<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  <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-surfel-rasterization/third_party/glm/doc/api/a00007.html
ADDED
@@ -0,0 +1,205 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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<typename T , typename U > </td></tr>
|
102 |
+
<tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
105 |
+
<tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
106 |
+
<tr class="memitem:ga5c6758bc50aa7fbe700f87123a045aad"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga5c6758bc50aa7fbe700f87123a045aad">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)</td></tr>
|
107 |
+
<tr class="memdesc:ga5c6758bc50aa7fbe700f87123a045aad"><td class="mdescLeft"> </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"> </td></tr>
|
109 |
+
<tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
110 |
+
<tr class="memitem:ga0d169d6ce26b03248df175f39005d77f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga0d169d6ce26b03248df175f39005d77f">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b)</td></tr>
|
111 |
+
<tr class="memdesc:ga0d169d6ce26b03248df175f39005d77f"><td class="mdescLeft"> </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"> </td></tr>
|
113 |
+
<tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
114 |
+
<tr class="memitem:ga4086269afabcb81dd7ded33cb3448653"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga4086269afabcb81dd7ded33cb3448653">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)</td></tr>
|
115 |
+
<tr class="memdesc:ga4086269afabcb81dd7ded33cb3448653"><td class="mdescLeft"> </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"> </td></tr>
|
117 |
+
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
118 |
+
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
121 |
+
<tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
122 |
+
<tr class="memitem:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gab84fdc35016a31e8cd0cbb8296bddf7c">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)</td></tr>
|
123 |
+
<tr class="memdesc:gab84fdc35016a31e8cd0cbb8296bddf7c"><td class="mdescLeft"> </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"> </td></tr>
|
125 |
+
<tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
126 |
+
<tr class="memitem:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gadd2a2002f4f2144bbc39eb2336dd2fba">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c)</td></tr>
|
127 |
+
<tr class="memdesc:gadd2a2002f4f2144bbc39eb2336dd2fba"><td class="mdescLeft"> </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"> </td></tr>
|
129 |
+
<tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
130 |
+
<tr class="memitem:ga19f59d1141a51a3b2108a9807af78f7f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga19f59d1141a51a3b2108a9807af78f7f">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c)</td></tr>
|
131 |
+
<tr class="memdesc:ga19f59d1141a51a3b2108a9807af78f7f"><td class="mdescLeft"> </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"> </td></tr>
|
133 |
+
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
134 |
+
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
137 |
+
<tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
138 |
+
<tr class="memitem:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gaf5ab0c428f8d1cd9e3b45fcfbf6423a6">associatedMax</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)</td></tr>
|
139 |
+
<tr class="memdesc:gaf5ab0c428f8d1cd9e3b45fcfbf6423a6"><td class="mdescLeft"> </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"> </td></tr>
|
141 |
+
<tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
142 |
+
<tr class="memitem:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga11477c2c4b5b0bfd1b72b29df3725a9d">associatedMax</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)</td></tr>
|
143 |
+
<tr class="memdesc:ga11477c2c4b5b0bfd1b72b29df3725a9d"><td class="mdescLeft"> </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"> </td></tr>
|
145 |
+
<tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
146 |
+
<tr class="memitem:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</td></tr>
|
147 |
+
<tr class="memdesc:gab9c3dd74cac899d2c625b5767ea3b3fb"><td class="mdescLeft"> </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"> </td></tr>
|
149 |
+
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplParams" colspan="2">template<typename T , typename U , qualifier Q> </td></tr>
|
150 |
+
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
153 |
+
<tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
154 |
+
<tr class="memitem:gac2f0dff90948f2e44386a5eafd941d1c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gac2f0dff90948f2e44386a5eafd941d1c">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b)</td></tr>
|
155 |
+
<tr class="memdesc:gac2f0dff90948f2e44386a5eafd941d1c"><td class="mdescLeft"> </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"> </td></tr>
|
157 |
+
<tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
158 |
+
<tr class="memitem:gacfec519c820331d023ef53a511749319"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#gacfec519c820331d023ef53a511749319">associatedMin</a> (T x, const vec< L, U, Q > &a, T y, const vec< L, U, Q > &b)</td></tr>
|
159 |
+
<tr class="memdesc:gacfec519c820331d023ef53a511749319"><td class="mdescLeft"> </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"> </td></tr>
|
161 |
+
<tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
162 |
+
<tr class="memitem:ga4757c7cab2d809124a8525d0a9deeb37"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga4757c7cab2d809124a8525d0a9deeb37">associatedMin</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b)</td></tr>
|
163 |
+
<tr class="memdesc:ga4757c7cab2d809124a8525d0a9deeb37"><td class="mdescLeft"> </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"> </td></tr>
|
165 |
+
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
166 |
+
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
169 |
+
<tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
170 |
+
<tr class="memitem:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga723e5411cebc7ffbd5c81ffeec61127d">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c)</td></tr>
|
171 |
+
<tr class="memdesc:ga723e5411cebc7ffbd5c81ffeec61127d"><td class="mdescLeft"> </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"> </td></tr>
|
173 |
+
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplParams" colspan="2">template<typename T , typename U > </td></tr>
|
174 |
+
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U </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"> </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"> </td></tr>
|
177 |
+
<tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
178 |
+
<tr class="memitem:ga66b08118bc88f0494bcacb7cdb940556"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga66b08118bc88f0494bcacb7cdb940556">associatedMin</a> (vec< L, T, Q > const &x, vec< L, U, Q > const &a, vec< L, T, Q > const &y, vec< L, U, Q > const &b, vec< L, T, Q > const &z, vec< L, U, Q > const &c, vec< L, T, Q > const &w, vec< L, U, Q > const &d)</td></tr>
|
179 |
+
<tr class="memdesc:ga66b08118bc88f0494bcacb7cdb940556"><td class="mdescLeft"> </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"> </td></tr>
|
181 |
+
<tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
182 |
+
<tr class="memitem:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga78c28fde1a7080fb7420bd88e68c6c68">associatedMin</a> (T x, vec< L, U, Q > const &a, T y, vec< L, U, Q > const &b, T z, vec< L, U, Q > const &c, T w, vec< L, U, Q > const &d)</td></tr>
|
183 |
+
<tr class="memdesc:ga78c28fde1a7080fb7420bd88e68c6c68"><td class="mdescLeft"> </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"> </td></tr>
|
185 |
+
<tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , typename U , qualifier Q> </td></tr>
|
186 |
+
<tr class="memitem:ga2db7e351994baee78540a562d4bb6d3b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, U, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a> (vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</td></tr>
|
187 |
+
<tr class="memdesc:ga2db7e351994baee78540a562d4bb6d3b"><td class="mdescLeft"> </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"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00007_source.html
ADDED
@@ -0,0 +1,250 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
94 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependency:</span></div>
|
95 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div>
|
97 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
98 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
99 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># pragma message("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.")</span></div>
|
100 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># else</span></div>
|
101 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_associated_min_max extension included")</span></div>
|
102 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor"># endif</span></div>
|
103 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> </div>
|
105 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <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> {</div>
|
107 |
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
|
108 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
109 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  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> </div>
|
111 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
112 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<2, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
113 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
114 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
115 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
|
116 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
117 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
118 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  T x, <span class="keyword">const</span> vec<L, U, Q>& a,</div>
|
119 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  T y, <span class="keyword">const</span> vec<L, U, Q>& b);</div>
|
120 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
|
121 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
122 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
123 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
124 |
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b);</div>
|
125 |
+
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div>
|
126 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
127 |
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  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>  T x, U a,</div>
|
129 |
+
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  T y, U b,</div>
|
130 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  T z, U c);</div>
|
131 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div>
|
132 |
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
133 |
+
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
134 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
135 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
136 |
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
137 |
+
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
|
138 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
139 |
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  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>  T x, U a,</div>
|
141 |
+
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  T y, U b,</div>
|
142 |
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  T z, U c,</div>
|
143 |
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  T w, U d);</div>
|
144 |
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
|
145 |
+
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
146 |
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
147 |
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
148 |
+
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
149 |
+
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
150 |
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  vec<L, T, Q> <span class="keyword">const</span>& w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
151 |
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
|
152 |
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
153 |
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
154 |
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
155 |
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
156 |
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
157 |
+
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  T w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
158 |
+
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
|
159 |
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
160 |
+
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#ga2db7e351994baee78540a562d4bb6d3b">associatedMin</a>(</div>
|
161 |
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
162 |
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
163 |
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c,</div>
|
164 |
+
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  vec<L, T, Q> <span class="keyword">const</span>& w, U d);</div>
|
165 |
+
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
|
166 |
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
167 |
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  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> </div>
|
169 |
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
170 |
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  GLM_FUNC_DECL vec<2, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
171 |
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
172 |
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
173 |
+
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> </div>
|
174 |
+
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
175 |
+
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
176 |
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
177 |
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b);</div>
|
178 |
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
|
179 |
+
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
180 |
+
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
181 |
+
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
182 |
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b);</div>
|
183 |
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div>
|
184 |
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
185 |
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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>  T x, U a,</div>
|
187 |
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  T y, U b,</div>
|
188 |
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  T z, U c);</div>
|
189 |
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div>
|
190 |
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
191 |
+
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
192 |
+
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
193 |
+
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
194 |
+
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
195 |
+
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
|
196 |
+
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
197 |
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
198 |
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
199 |
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
200 |
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c);</div>
|
201 |
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> </div>
|
202 |
+
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
203 |
+
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
204 |
+
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
205 |
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
206 |
+
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c);</div>
|
207 |
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div>
|
208 |
+
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> U></div>
|
209 |
+
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  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>  T x, U a,</div>
|
211 |
+
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  T y, U b,</div>
|
212 |
+
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  T z, U c,</div>
|
213 |
+
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  T w, U d);</div>
|
214 |
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div>
|
215 |
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
216 |
+
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
217 |
+
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
218 |
+
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
219 |
+
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  vec<L, T, Q> <span class="keyword">const</span>& z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
220 |
+
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  vec<L, T, Q> <span class="keyword">const</span>& w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
221 |
+
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div>
|
222 |
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
223 |
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
224 |
+
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  T x, vec<L, U, Q> <span class="keyword">const</span>& a,</div>
|
225 |
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  T y, vec<L, U, Q> <span class="keyword">const</span>& b,</div>
|
226 |
+
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  T z, vec<L, U, Q> <span class="keyword">const</span>& c,</div>
|
227 |
+
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  T w, vec<L, U, Q> <span class="keyword">const</span>& d);</div>
|
228 |
+
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> </div>
|
229 |
+
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
230 |
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  GLM_FUNC_DECL vec<L, U, Q> <a class="code" href="a00308.html#gab9c3dd74cac899d2c625b5767ea3b3fb">associatedMax</a>(</div>
|
231 |
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  vec<L, T, Q> <span class="keyword">const</span>& x, U a,</div>
|
232 |
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  vec<L, T, Q> <span class="keyword">const</span>& y, U b,</div>
|
233 |
+
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  vec<L, T, Q> <span class="keyword">const</span>& z, U c,</div>
|
234 |
+
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  vec<L, T, Q> <span class="keyword">const</span>& w, U d);</div>
|
235 |
+
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
|
236 |
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> } <span class="comment">//namespace glm</span></div>
|
237 |
+
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
|
238 |
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="preprocessor">#include "associated_min_max.inl"</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< L, U, Q > associatedMax(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</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< L, U, Q > associatedMin(vec< L, T, Q > const &x, U a, vec< L, T, Q > const &y, U b, vec< L, T, Q > const &z, U c, vec< L, T, Q > const &w, U d)</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  <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-surfel-rasterization/third_party/glm/doc/api/a00008.html
ADDED
@@ -0,0 +1,149 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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<typename genIUType > </td></tr>
|
102 |
+
<tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </td></tr>
|
104 |
+
<tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
105 |
+
<tr class="memitem:ga898ef075ccf809a1e480faab48fe96bf"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a> (vec< L, T, Q > const &value)</td></tr>
|
106 |
+
<tr class="memdesc:ga898ef075ccf809a1e480faab48fe96bf"><td class="mdescLeft"> </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"> </td></tr>
|
108 |
+
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
109 |
+
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </td></tr>
|
111 |
+
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
112 |
+
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
115 |
+
<tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
116 |
+
<tr class="memitem:ga2bbded187c5febfefc1e524ba31b3fab"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a> (vec< L, T, Q > const &value)</td></tr>
|
117 |
+
<tr class="memdesc:ga2bbded187c5febfefc1e524ba31b3fab"><td class="mdescLeft"> </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"> </td></tr>
|
119 |
+
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
120 |
+
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
123 |
+
<tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
124 |
+
<tr class="memitem:gaf78ddcc4152c051b2a21e68fecb10980"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a> (vec< L, T, Q > const &value)</td></tr>
|
125 |
+
<tr class="memdesc:gaf78ddcc4152c051b2a21e68fecb10980"><td class="mdescLeft"> </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"> </td></tr>
|
127 |
+
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
128 |
+
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
131 |
+
<tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
132 |
+
<tr class="memitem:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a> (vec< L, T, Q > const &value)</td></tr>
|
133 |
+
<tr class="memdesc:gac87e65d11e16c3d6b91c3bcfaef7da0b"><td class="mdescLeft"> </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"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00008_source.html
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
94 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependencies</span></div>
|
95 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../gtc/bitfield.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
97 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
98 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
99 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># pragma message("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.")</span></div>
|
100 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># else</span></div>
|
101 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_bit extension included")</span></div>
|
102 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># endif</span></div>
|
103 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
105 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> {</div>
|
107 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
108 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
109 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  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> </div>
|
111 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
112 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  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> </div>
|
114 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
115 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00309.html#ga898ef075ccf809a1e480faab48fe96bf">highestBitValue</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
116 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
117 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
118 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  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> </div>
|
120 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
121 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00309.html#ga2bbded187c5febfefc1e524ba31b3fab">powerOfTwoAbove</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
122 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div>
|
123 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
124 |
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  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> </div>
|
126 |
+
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
127 |
+
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00309.html#gaf78ddcc4152c051b2a21e68fecb10980">powerOfTwoBelow</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
128 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div>
|
129 |
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
130 |
+
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  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> </div>
|
132 |
+
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
133 |
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  GLM_DEPRECATED GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00309.html#gac87e65d11e16c3d6b91c3bcfaef7da0b">powerOfTwoNearest</a>(vec<L, T, Q> <span class="keyword">const</span>& value);</div>
|
134 |
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
|
135 |
+
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> } <span class="comment">//namespace glm</span></div>
|
136 |
+
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
|
137 |
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
|
138 |
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#include "bit.inl"</span></div>
|
139 |
+
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </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< L, T, Q > highestBitValue(vec< L, T, Q > const &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< L, T, Q > powerOfTwoBelow(vec< L, T, Q > const &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< L, T, Q > powerOfTwoAbove(vec< L, T, Q > const &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< L, T, Q > powerOfTwoNearest(vec< L, T, Q > const &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  <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-surfel-rasterization/third_party/glm/doc/api/a00009.html
ADDED
@@ -0,0 +1,223 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </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"> </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"> </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> </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"> </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"> </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> </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"> </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"> </td></tr>
|
110 |
+
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
111 |
+
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
114 |
+
<tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
115 |
+
<tr class="memitem:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a> (vec< L, T, Q > const &Value, int FirstBit, int BitCount)</td></tr>
|
116 |
+
<tr class="memdesc:ga3e96dd1f0a4bc892f063251ed118c0c1"><td class="mdescLeft"> </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"> </td></tr>
|
118 |
+
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
119 |
+
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
122 |
+
<tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
123 |
+
<tr class="memitem:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a> (vec< L, T, Q > const &Value, int FirstBit, int BitCount)</td></tr>
|
124 |
+
<tr class="memdesc:ga0d16c9acef4be79ea9b47c082a0cf7c2"><td class="mdescLeft"> </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"> </td></tr>
|
126 |
+
<tr class="memitem:ga24cad0069f9a0450abd80b3e89501adf"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int16 </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"> </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"> </td></tr>
|
129 |
+
<tr class="memitem:ga9a4976a529aec2cee56525e1165da484"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16 </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"> </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"> </td></tr>
|
132 |
+
<tr class="memitem:ga4a76bbca39c40153f3203d0a1926e142"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga4a76bbca39c40153f3203d0a1926e142">bitfieldInterleave</a> (u8vec2 const &v)</td></tr>
|
133 |
+
<tr class="memdesc:ga4a76bbca39c40153f3203d0a1926e142"><td class="mdescLeft"> </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"> </td></tr>
|
135 |
+
<tr class="memitem:gac51c33a394593f0631fa3aa5bb778809"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </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"> </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"> </td></tr>
|
138 |
+
<tr class="memitem:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </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"> </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"> </td></tr>
|
141 |
+
<tr class="memitem:ga406c4ee56af4ca37a73f449f154eca3e"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga406c4ee56af4ca37a73f449f154eca3e">bitfieldInterleave</a> (u16vec2 const &v)</td></tr>
|
142 |
+
<tr class="memdesc:ga406c4ee56af4ca37a73f449f154eca3e"><td class="mdescLeft"> </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"> </td></tr>
|
144 |
+
<tr class="memitem:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </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"> </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"> </td></tr>
|
147 |
+
<tr class="memitem:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </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"> </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"> </td></tr>
|
150 |
+
<tr class="memitem:ga8cb17574d60abd6ade84bc57c10e8f78"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </td><td class="memItemRight" valign="bottom"><a class="el" href="a00288.html#ga8cb17574d60abd6ade84bc57c10e8f78">bitfieldInterleave</a> (u32vec2 const &v)</td></tr>
|
151 |
+
<tr class="memdesc:ga8cb17574d60abd6ade84bc57c10e8f78"><td class="mdescLeft"> </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"> </td></tr>
|
153 |
+
<tr class="memitem:ga8fdb724dccd4a07d57efc01147102137"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </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"> </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"> </td></tr>
|
156 |
+
<tr class="memitem:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </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"> </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"> </td></tr>
|
159 |
+
<tr class="memitem:gaa901c36a842fa5d126ea650549f17b24"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </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"> </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"> </td></tr>
|
162 |
+
<tr class="memitem:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </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"> </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"> </td></tr>
|
165 |
+
<tr class="memitem:gad2075d96a6640121edaa98ea534102ca"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </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"> </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"> </td></tr>
|
168 |
+
<tr class="memitem:gab19fbc739fc0cf7247978602c36f7da8"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </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"> </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"> </td></tr>
|
171 |
+
<tr class="memitem:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32 </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"> </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"> </td></tr>
|
174 |
+
<tr class="memitem:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32 </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"> </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"> </td></tr>
|
177 |
+
<tr class="memitem:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64 </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"> </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"> </td></tr>
|
180 |
+
<tr class="memitem:gafca8768671a14c8016facccb66a89f26"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64 </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"> </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"> </td></tr>
|
183 |
+
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
184 |
+
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
187 |
+
<tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
188 |
+
<tr class="memitem:gae186317091b1a39214ebf79008d44a1e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a> (vec< L, T, Q > const &In, int Shift)</td></tr>
|
189 |
+
<tr class="memdesc:gae186317091b1a39214ebf79008d44a1e"><td class="mdescLeft"> </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"> </td></tr>
|
191 |
+
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
192 |
+
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
195 |
+
<tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
196 |
+
<tr class="memitem:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a> (vec< L, T, Q > const &In, int Shift)</td></tr>
|
197 |
+
<tr class="memdesc:ga590488e1fc00a6cfe5d3bcaf93fbfe88"><td class="mdescLeft"> </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"> </td></tr>
|
199 |
+
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplParams" colspan="2">template<typename genIUType > </td></tr>
|
200 |
+
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType </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"> </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"> </td></tr>
|
203 |
+
<tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
204 |
+
<tr class="memitem:ga2e64e3b922a296033b825311e7f5fff1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a> (vec< L, T, Q > const &v)</td></tr>
|
205 |
+
<tr class="memdesc:ga2e64e3b922a296033b825311e7f5fff1"><td class="mdescLeft"> </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"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00009_source.html
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
93 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
94 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#pragma once</span></div>
|
95 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
96 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// Dependencies</span></div>
|
97 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../ext/scalar_int_sized.hpp"</span></div>
|
98 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "../ext/scalar_uint_sized.hpp"</span></div>
|
99 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
100 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "../detail/_vectorize.hpp"</span></div>
|
101 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "<a class="code" href="a00174.html">type_precision.hpp</a>"</span></div>
|
102 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <limits></span></div>
|
103 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
104 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
105 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_bitfield extension included")</span></div>
|
106 |
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#endif</span></div>
|
107 |
+
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div>
|
108 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <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> {</div>
|
110 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
111 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
112 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  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> </div>
|
114 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
115 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00288.html#ga2e64e3b922a296033b825311e7f5fff1">mask</a>(vec<L, T, Q> <span class="keyword">const</span>& v);</div>
|
116 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
|
117 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
118 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  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> </div>
|
120 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
121 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00288.html#ga590488e1fc00a6cfe5d3bcaf93fbfe88">bitfieldRotateRight</a>(vec<L, T, Q> <span class="keyword">const</span>& In, <span class="keywordtype">int</span> Shift);</div>
|
122 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div>
|
123 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
124 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  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> </div>
|
126 |
+
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
127 |
+
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00288.html#gae186317091b1a39214ebf79008d44a1e">bitfieldRotateLeft</a>(vec<L, T, Q> <span class="keyword">const</span>& In, <span class="keywordtype">int</span> Shift);</div>
|
128 |
+
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
|
129 |
+
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
130 |
+
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  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> </div>
|
132 |
+
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
133 |
+
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00288.html#ga3e96dd1f0a4bc892f063251ed118c0c1">bitfieldFillOne</a>(vec<L, T, Q> <span class="keyword">const</span>& 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> </div>
|
135 |
+
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genIUType></div>
|
136 |
+
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  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> </div>
|
138 |
+
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
139 |
+
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00288.html#ga0d16c9acef4be79ea9b47c082a0cf7c2">bitfieldFillZero</a>(vec<L, T, Q> <span class="keyword">const</span>& 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> </div>
|
141 |
+
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  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> </div>
|
143 |
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  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> </div>
|
145 |
+
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  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>& v);</div>
|
146 |
+
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div>
|
147 |
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  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> </div>
|
149 |
+
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  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> </div>
|
151 |
+
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  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> </div>
|
153 |
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  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>& v);</div>
|
154 |
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div>
|
155 |
+
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  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> </div>
|
157 |
+
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  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> </div>
|
159 |
+
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  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> </div>
|
161 |
+
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  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>& v);</div>
|
162 |
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div>
|
163 |
+
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  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> </div>
|
165 |
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  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> </div>
|
167 |
+
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  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> </div>
|
169 |
+
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  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> </div>
|
171 |
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  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> </div>
|
173 |
+
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  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> </div>
|
175 |
+
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  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> </div>
|
177 |
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  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> </div>
|
179 |
+
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  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> </div>
|
181 |
+
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  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> </div>
|
183 |
+
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  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> </div>
|
185 |
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> } <span class="comment">//namespace glm</span></div>
|
186 |
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div>
|
187 |
+
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="preprocessor">#include "bitfield.inl"</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< L, T, Q > bitfieldFillZero(vec< L, T, Q > const &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< 2, u8, defaultp > 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< L, T, Q > bitfieldRotateLeft(vec< L, T, Q > const &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< L, T, Q > mask(vec< L, T, Q > const &v)</div><div class="ttdoc">Build a mask of 'count' 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< L, T, Q > bitfieldFillOne(vec< L, T, Q > const &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< 2, u32, defaultp > 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< L, T, Q > bitfieldRotateRight(vec< L, T, Q > const &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< 2, u16, defaultp > 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  <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-surfel-rasterization/third_party/glm/doc/api/a00010.html
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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<typename T , qualifier Q> </td></tr>
|
102 |
+
<tr class="memitem:ga36529c278ef716986151d58d151d697d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00310.html#ga36529c278ef716986151d58d151d697d">closestPointOnLine</a> (vec< 3, T, Q > const &point, vec< 3, T, Q > const &a, vec< 3, T, Q > const &b)</td></tr>
|
103 |
+
<tr class="memdesc:ga36529c278ef716986151d58d151d697d"><td class="mdescLeft"> </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"> </td></tr>
|
105 |
+
<tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"></a>
|
106 |
+
template<typename T , qualifier Q> </td></tr>
|
107 |
+
<tr class="memitem:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 2, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a> (vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &b)</td></tr>
|
108 |
+
<tr class="memdesc:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="mdescLeft"> </td><td class="mdescRight">2d lines work as well <br /></td></tr>
|
109 |
+
<tr class="separator:ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0"><td class="memSeparator" colspan="2"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00010_source.html
ADDED
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
94 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
95 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
97 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
98 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
99 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># pragma message("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.")</span></div>
|
100 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># else</span></div>
|
101 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_closest_point extension included")</span></div>
|
102 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># endif</span></div>
|
103 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
105 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> {</div>
|
107 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
108 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
109 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
|
110 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& point,</div>
|
111 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  vec<3, T, Q> <span class="keyword">const</span>& a,</div>
|
112 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  vec<3, T, Q> <span class="keyword">const</span>& b);</div>
|
113 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
|
114 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
115 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<2, T, Q> <a class="code" href="a00310.html#ga55bcbcc5fc06cb7ff7bc7a6e0e155eb0">closestPointOnLine</a>(</div>
|
116 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  vec<2, T, Q> <span class="keyword">const</span>& point,</div>
|
117 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  vec<2, T, Q> <span class="keyword">const</span>& a,</div>
|
118 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  vec<2, T, Q> <span class="keyword">const</span>& b);</div>
|
119 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
|
120 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> }<span class="comment">// namespace glm</span></div>
|
121 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
122 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="preprocessor">#include "closest_point.inl"</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< 2, T, Q > closestPointOnLine(vec< 2, T, Q > const &point, vec< 2, T, Q > const &a, vec< 2, T, Q > const &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  <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-surfel-rasterization/third_party/glm/doc/api/a00011.html
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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<typename T , qualifier Q> </td></tr>
|
103 |
+
<tr class="memitem:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a> (vec< 3, T, Q > const &ColorD65XYZ)</td></tr>
|
104 |
+
<tr class="memdesc:gad12f4f65022b2c80e33fcba2ced0dc48"><td class="mdescLeft"> </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"> </td></tr>
|
106 |
+
<tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5265386fc3ac29e4c580d37ed470859c"></a>
|
107 |
+
template<typename T , qualifier Q> </td></tr>
|
108 |
+
<tr class="memitem:ga5265386fc3ac29e4c580d37ed470859c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a> (vec< 3, T, Q > const &ColorD65XYZ)</td></tr>
|
109 |
+
<tr class="memdesc:ga5265386fc3ac29e4c580d37ed470859c"><td class="mdescLeft"> </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"> </td></tr>
|
111 |
+
<tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1522ba180e3d83d554a734056da031f9"></a>
|
112 |
+
template<typename T , qualifier Q> </td></tr>
|
113 |
+
<tr class="memitem:ga1522ba180e3d83d554a734056da031f9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a> (vec< 3, T, Q > const &ColorLinearSRGB)</td></tr>
|
114 |
+
<tr class="memdesc:ga1522ba180e3d83d554a734056da031f9"><td class="mdescLeft"> </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"> </td></tr>
|
116 |
+
<tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf9e130d9d4ccf51cc99317de7449f369"></a>
|
117 |
+
template<typename T , qualifier Q> </td></tr>
|
118 |
+
<tr class="memitem:gaf9e130d9d4ccf51cc99317de7449f369"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00311.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a> (vec< 3, T, Q > const &ColorLinearSRGB)</td></tr>
|
119 |
+
<tr class="memdesc:gaf9e130d9d4ccf51cc99317de7449f369"><td class="mdescLeft"> </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"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00011_source.html
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
94 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependencies</span></div>
|
95 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
97 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
98 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <limits></span></div>
|
99 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
|
100 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
101 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
102 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor"># pragma message("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.")</span></div>
|
103 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"># else</span></div>
|
104 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_color_encoding extension included")</span></div>
|
105 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor"># endif</span></div>
|
106 |
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#endif</span></div>
|
107 |
+
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> </div>
|
108 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <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> {</div>
|
110 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
|
111 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
112 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00311.html#gaf9e130d9d4ccf51cc99317de7449f369">convertLinearSRGBToD65XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorLinearSRGB);</div>
|
113 |
+
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
|
114 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
115 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00311.html#ga1522ba180e3d83d554a734056da031f9">convertLinearSRGBToD50XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorLinearSRGB);</div>
|
116 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
117 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
118 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00311.html#ga5265386fc3ac29e4c580d37ed470859c">convertD65XYZToLinearSRGB</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorD65XYZ);</div>
|
119 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div>
|
120 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
121 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00311.html#gad12f4f65022b2c80e33fcba2ced0dc48">convertD65XYZToD50XYZ</a>(vec<3, T, Q> <span class="keyword">const</span>& ColorD65XYZ);</div>
|
122 |
+
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> </div>
|
123 |
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> } <span class="comment">//namespace glm</span></div>
|
124 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div>
|
125 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="preprocessor">#include "color_encoding.inl"</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< 3, T, Q > convertD65XYZToLinearSRGB(vec< 3, T, Q > const &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< 3, T, Q > convertLinearSRGBToD50XYZ(vec< 3, T, Q > const &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< 3, T, Q > convertLinearSRGBToD65XYZ(vec< 3, T, Q > const &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< 3, T, Q > convertD65XYZToD50XYZ(vec< 3, T, Q > const &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  <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-surfel-rasterization/third_party/glm/doc/api/a00012.html
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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<length_t L, typename T , qualifier Q> </td></tr>
|
102 |
+
<tr class="memitem:ga42239e7b3da900f7ef37cec7e2476579"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#ga42239e7b3da900f7ef37cec7e2476579">convertLinearToSRGB</a> (vec< L, T, Q > const &ColorLinear)</td></tr>
|
103 |
+
<tr class="memdesc:ga42239e7b3da900f7ef37cec7e2476579"><td class="mdescLeft"> </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"> </td></tr>
|
105 |
+
<tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
106 |
+
<tr class="memitem:gaace0a21167d13d26116c283009af57f6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a> (vec< L, T, Q > const &ColorLinear, T Gamma)</td></tr>
|
107 |
+
<tr class="memdesc:gaace0a21167d13d26116c283009af57f6"><td class="mdescLeft"> </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"> </td></tr>
|
109 |
+
<tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
110 |
+
<tr class="memitem:ga16c798b7a226b2c3079dedc55083d187"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#ga16c798b7a226b2c3079dedc55083d187">convertSRGBToLinear</a> (vec< L, T, Q > const &ColorSRGB)</td></tr>
|
111 |
+
<tr class="memdesc:ga16c798b7a226b2c3079dedc55083d187"><td class="mdescLeft"> </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"> </td></tr>
|
113 |
+
<tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad1b91f27a9726c9cb403f9fee6e2e200"></a>
|
114 |
+
template<length_t L, typename T , qualifier Q> </td></tr>
|
115 |
+
<tr class="memitem:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a> (vec< L, T, Q > const &ColorSRGB, T Gamma)</td></tr>
|
116 |
+
<tr class="memdesc:gad1b91f27a9726c9cb403f9fee6e2e200"><td class="mdescLeft"> </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"> </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  <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-surfel-rasterization/third_party/glm/doc/api/a00012_source.html
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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> </div>
|
92 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div>
|
94 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Dependencies</span></div>
|
95 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "../detail/setup.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "../detail/qualifier.hpp"</span></div>
|
97 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "../exponential.hpp"</span></div>
|
98 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "../vec3.hpp"</span></div>
|
99 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "../vec4.hpp"</span></div>
|
100 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <limits></span></div>
|
101 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div>
|
102 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
103 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"># pragma message("GLM: GLM_GTC_color_space extension included")</span></div>
|
104 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#endif</span></div>
|
105 |
+
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
106 |
+
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <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> {</div>
|
108 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div>
|
109 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
110 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorLinear);</div>
|
111 |
+
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
|
112 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
113 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00289.html#gaace0a21167d13d26116c283009af57f6">convertLinearToSRGB</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorLinear, T Gamma);</div>
|
114 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
115 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
116 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorSRGB);</div>
|
117 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
|
118 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <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>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
120 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00289.html#gad1b91f27a9726c9cb403f9fee6e2e200">convertSRGBToLinear</a>(vec<L, T, Q> <span class="keyword">const</span>& ColorSRGB, T Gamma);</div>
|
121 |
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
|
122 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> } <span class="comment">//namespace glm</span></div>
|
123 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
124 |
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="preprocessor">#include "color_space.inl"</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< L, T, Q > convertLinearToSRGB(vec< L, T, Q > const &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< L, T, Q > convertSRGBToLinear(vec< L, T, Q > const &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  <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>
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00013.html
ADDED
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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">gtx/color_space.hpp File Reference</div> </div>
|
91 |
+
</div><!--header-->
|
92 |
+
<div class="contents">
|
93 |
+
|
94 |
+
<p><a class="el" href="a00312.html">GLM_GTX_color_space</a>
|
95 |
+
<a href="#details">More...</a></p>
|
96 |
+
|
97 |
+
<p><a href="a00013_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:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
102 |
+
<tr class="memitem:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8">hsvColor</a> (vec< 3, T, Q > const &rgbValue)</td></tr>
|
103 |
+
<tr class="memdesc:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="mdescLeft"> </td><td class="mdescRight">Converts a color from RGB color space to its color in HSV color space. <a href="a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8">More...</a><br /></td></tr>
|
104 |
+
<tr class="separator:ga789802bec2d4fe0f9741c731b4a8a7d8"><td class="memSeparator" colspan="2"> </td></tr>
|
105 |
+
<tr class="memitem:gad028e0a4f1a9c812b39439b746295b34"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
106 |
+
<tr class="memitem:gad028e0a4f1a9c812b39439b746295b34"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL T </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#gad028e0a4f1a9c812b39439b746295b34">luminosity</a> (vec< 3, T, Q > const &color)</td></tr>
|
107 |
+
<tr class="memdesc:gad028e0a4f1a9c812b39439b746295b34"><td class="mdescLeft"> </td><td class="mdescRight">Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. <a href="a00312.html#gad028e0a4f1a9c812b39439b746295b34">More...</a><br /></td></tr>
|
108 |
+
<tr class="separator:gad028e0a4f1a9c812b39439b746295b34"><td class="memSeparator" colspan="2"> </td></tr>
|
109 |
+
<tr class="memitem:ga5f9193be46f45f0655c05a0cdca006db"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
110 |
+
<tr class="memitem:ga5f9193be46f45f0655c05a0cdca006db"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a> (vec< 3, T, Q > const &hsvValue)</td></tr>
|
111 |
+
<tr class="memdesc:ga5f9193be46f45f0655c05a0cdca006db"><td class="mdescLeft"> </td><td class="mdescRight">Converts a color from HSV color space to its color in RGB color space. <a href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">More...</a><br /></td></tr>
|
112 |
+
<tr class="separator:ga5f9193be46f45f0655c05a0cdca006db"><td class="memSeparator" colspan="2"> </td></tr>
|
113 |
+
<tr class="memitem:ga01a97152b44e1550edcac60bd849e884"><td class="memTemplParams" colspan="2">template<typename T > </td></tr>
|
114 |
+
<tr class="memitem:ga01a97152b44e1550edcac60bd849e884"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL mat< 4, 4, T, defaultp > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#ga01a97152b44e1550edcac60bd849e884">saturation</a> (T const s)</td></tr>
|
115 |
+
<tr class="memdesc:ga01a97152b44e1550edcac60bd849e884"><td class="mdescLeft"> </td><td class="mdescRight">Build a saturation matrix. <a href="a00312.html#ga01a97152b44e1550edcac60bd849e884">More...</a><br /></td></tr>
|
116 |
+
<tr class="separator:ga01a97152b44e1550edcac60bd849e884"><td class="memSeparator" colspan="2"> </td></tr>
|
117 |
+
<tr class="memitem:ga2156cea600e90148ece5bc96fd6db43a"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
118 |
+
<tr class="memitem:ga2156cea600e90148ece5bc96fd6db43a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#ga2156cea600e90148ece5bc96fd6db43a">saturation</a> (T const s, vec< 3, T, Q > const &color)</td></tr>
|
119 |
+
<tr class="memdesc:ga2156cea600e90148ece5bc96fd6db43a"><td class="mdescLeft"> </td><td class="mdescRight">Modify the saturation of a color. <a href="a00312.html#ga2156cea600e90148ece5bc96fd6db43a">More...</a><br /></td></tr>
|
120 |
+
<tr class="separator:ga2156cea600e90148ece5bc96fd6db43a"><td class="memSeparator" colspan="2"> </td></tr>
|
121 |
+
<tr class="memitem:gaba0eacee0736dae860e9371cc1ae4785"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
122 |
+
<tr class="memitem:gaba0eacee0736dae860e9371cc1ae4785"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 4, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a> (T const s, vec< 4, T, Q > const &color)</td></tr>
|
123 |
+
<tr class="memdesc:gaba0eacee0736dae860e9371cc1ae4785"><td class="mdescLeft"> </td><td class="mdescRight">Modify the saturation of a color. <a href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">More...</a><br /></td></tr>
|
124 |
+
<tr class="separator:gaba0eacee0736dae860e9371cc1ae4785"><td class="memSeparator" colspan="2"> </td></tr>
|
125 |
+
</table>
|
126 |
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
127 |
+
<div class="textblock"><p><a class="el" href="a00312.html">GLM_GTX_color_space</a> </p>
|
128 |
+
<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>
|
129 |
+
|
130 |
+
<p>Definition in file <a class="el" href="a00013_source.html">gtx/color_space.hpp</a>.</p>
|
131 |
+
</div></div><!-- contents -->
|
132 |
+
<!-- start footer part -->
|
133 |
+
<hr class="footer"/><address class="footer"><small>
|
134 |
+
Generated by  <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-surfel-rasterization/third_party/glm/doc/api/a00013_source.html
ADDED
@@ -0,0 +1,150 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 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 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">gtx/color_space.hpp</div> </div>
|
89 |
+
</div><!--header-->
|
90 |
+
<div class="contents">
|
91 |
+
<a href="a00013.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
92 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
94 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
95 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
97 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
98 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
99 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")</span></div>
|
100 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># else</span></div>
|
101 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space extension included")</span></div>
|
102 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># endif</span></div>
|
103 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
105 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> {</div>
|
107 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
108 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
109 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>(</div>
|
110 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& hsvValue);</div>
|
111 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
112 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
113 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8">hsvColor</a>(</div>
|
114 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<3, T, Q> <span class="keyword">const</span>& rgbValue);</div>
|
115 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
116 |
+
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
|
117 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  GLM_FUNC_DECL mat<4, 4, T, defaultp> <a class="code" href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
118 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  T <span class="keyword">const</span> s);</div>
|
119 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
|
120 |
+
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
121 |
+
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
122 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  T <span class="keyword">const</span> s,</div>
|
123 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  vec<3, T, Q> <span class="keyword">const</span>& color);</div>
|
124 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
125 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
126 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  GLM_FUNC_DECL vec<4, T, Q> <a class="code" href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">saturation</a>(</div>
|
127 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  T <span class="keyword">const</span> s,</div>
|
128 |
+
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  vec<4, T, Q> <span class="keyword">const</span>& color);</div>
|
129 |
+
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div>
|
130 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
131 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  GLM_FUNC_DECL T <a class="code" href="a00312.html#gad028e0a4f1a9c812b39439b746295b34">luminosity</a>(</div>
|
132 |
+
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  vec<3, T, Q> <span class="keyword">const</span>& color);</div>
|
133 |
+
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
|
134 |
+
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }<span class="comment">//namespace glm</span></div>
|
135 |
+
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
|
136 |
+
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor">#include "color_space.inl"</span></div>
|
137 |
+
<div class="ttc" id="a00312_html_gad028e0a4f1a9c812b39439b746295b34"><div class="ttname"><a href="a00312.html#gad028e0a4f1a9c812b39439b746295b34">glm::luminosity</a></div><div class="ttdeci">GLM_FUNC_DECL T luminosity(vec< 3, T, Q > const &color)</div><div class="ttdoc">Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. </div></div>
|
138 |
+
<div class="ttc" id="a00312_html_gaba0eacee0736dae860e9371cc1ae4785"><div class="ttname"><a href="a00312.html#gaba0eacee0736dae860e9371cc1ae4785">glm::saturation</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 4, T, Q > saturation(T const s, vec< 4, T, Q > const &color)</div><div class="ttdoc">Modify the saturation of a color. </div></div>
|
139 |
+
<div class="ttc" id="a00312_html_ga5f9193be46f45f0655c05a0cdca006db"><div class="ttname"><a href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
|
140 |
+
<div class="ttc" id="a00312_html_ga789802bec2d4fe0f9741c731b4a8a7d8"><div class="ttname"><a href="a00312.html#ga789802bec2d4fe0f9741c731b4a8a7d8">glm::hsvColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > hsvColor(vec< 3, T, Q > const &rgbValue)</div><div class="ttdoc">Converts a color from RGB color space to its color in HSV color space. </div></div>
|
141 |
+
<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>
|
142 |
+
</div><!-- fragment --></div><!-- contents -->
|
143 |
+
<!-- start footer part -->
|
144 |
+
<hr class="footer"/><address class="footer"><small>
|
145 |
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
146 |
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
147 |
+
</a> 1.8.10
|
148 |
+
</small></address>
|
149 |
+
</body>
|
150 |
+
</html>
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00014.html
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_YCoCg.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 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 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_space_YCoCg.hpp File Reference</div> </div>
|
91 |
+
</div><!--header-->
|
92 |
+
<div class="contents">
|
93 |
+
|
94 |
+
<p><a class="el" href="a00313.html">GLM_GTX_color_space_YCoCg</a>
|
95 |
+
<a href="#details">More...</a></p>
|
96 |
+
|
97 |
+
<p><a href="a00014_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:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
102 |
+
<tr class="memitem:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">rgb2YCoCg</a> (vec< 3, T, Q > const &rgbColor)</td></tr>
|
103 |
+
<tr class="memdesc:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from RGB color space to YCoCg color space. <a href="a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">More...</a><br /></td></tr>
|
104 |
+
<tr class="separator:ga0606353ec2a9b9eaa84f1b02ec391bc5"><td class="memSeparator" colspan="2"> </td></tr>
|
105 |
+
<tr class="memitem:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
106 |
+
<tr class="memitem:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898">rgb2YCoCgR</a> (vec< 3, T, Q > const &rgbColor)</td></tr>
|
107 |
+
<tr class="memdesc:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from RGB color space to YCoCgR color space. <a href="a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898">More...</a><br /></td></tr>
|
108 |
+
<tr class="separator:ga0389772e44ca0fd2ba4a79bdd8efe898"><td class="memSeparator" colspan="2"> </td></tr>
|
109 |
+
<tr class="memitem:ga163596b804c7241810b2534a99eb1343"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
110 |
+
<tr class="memitem:ga163596b804c7241810b2534a99eb1343"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00313.html#ga163596b804c7241810b2534a99eb1343">YCoCg2rgb</a> (vec< 3, T, Q > const &YCoCgColor)</td></tr>
|
111 |
+
<tr class="memdesc:ga163596b804c7241810b2534a99eb1343"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from YCoCg color space to RGB color space. <a href="a00313.html#ga163596b804c7241810b2534a99eb1343">More...</a><br /></td></tr>
|
112 |
+
<tr class="separator:ga163596b804c7241810b2534a99eb1343"><td class="memSeparator" colspan="2"> </td></tr>
|
113 |
+
<tr class="memitem:gaf8d30574c8576838097d8e20c295384a"><td class="memTemplParams" colspan="2">template<typename T , qualifier Q> </td></tr>
|
114 |
+
<tr class="memitem:gaf8d30574c8576838097d8e20c295384a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< 3, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00313.html#gaf8d30574c8576838097d8e20c295384a">YCoCgR2rgb</a> (vec< 3, T, Q > const &YCoCgColor)</td></tr>
|
115 |
+
<tr class="memdesc:gaf8d30574c8576838097d8e20c295384a"><td class="mdescLeft"> </td><td class="mdescRight">Convert a color from YCoCgR color space to RGB color space. <a href="a00313.html#gaf8d30574c8576838097d8e20c295384a">More...</a><br /></td></tr>
|
116 |
+
<tr class="separator:gaf8d30574c8576838097d8e20c295384a"><td class="memSeparator" colspan="2"> </td></tr>
|
117 |
+
</table>
|
118 |
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
119 |
+
<div class="textblock"><p><a class="el" href="a00313.html">GLM_GTX_color_space_YCoCg</a> </p>
|
120 |
+
<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>
|
121 |
+
|
122 |
+
<p>Definition in file <a class="el" href="a00014_source.html">color_space_YCoCg.hpp</a>.</p>
|
123 |
+
</div></div><!-- contents -->
|
124 |
+
<!-- start footer part -->
|
125 |
+
<hr class="footer"/><address class="footer"><small>
|
126 |
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
127 |
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
128 |
+
</a> 1.8.10
|
129 |
+
</small></address>
|
130 |
+
</body>
|
131 |
+
</html>
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00014_source.html
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_YCoCg.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 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 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_space_YCoCg.hpp</div> </div>
|
89 |
+
</div><!--header-->
|
90 |
+
<div class="contents">
|
91 |
+
<a href="a00014.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
92 |
+
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
|
94 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// Dependency:</span></div>
|
95 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "../glm.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div>
|
97 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED)</span></div>
|
98 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor"># ifndef GLM_ENABLE_EXPERIMENTAL</span></div>
|
99 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space_YCoCg is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it.")</span></div>
|
100 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"># else</span></div>
|
101 |
+
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor"># pragma message("GLM: GLM_GTX_color_space_YCoCg extension included")</span></div>
|
102 |
+
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"># endif</span></div>
|
103 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#endif</span></div>
|
104 |
+
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
|
105 |
+
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <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> {</div>
|
107 |
+
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
|
108 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
109 |
+
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">rgb2YCoCg</a>(</div>
|
110 |
+
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  vec<3, T, Q> <span class="keyword">const</span>& <a class="code" href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>);</div>
|
111 |
+
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div>
|
112 |
+
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
113 |
+
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00313.html#ga163596b804c7241810b2534a99eb1343">YCoCg2rgb</a>(</div>
|
114 |
+
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  vec<3, T, Q> <span class="keyword">const</span>& YCoCgColor);</div>
|
115 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div>
|
116 |
+
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
117 |
+
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898">rgb2YCoCgR</a>(</div>
|
118 |
+
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  vec<3, T, Q> <span class="keyword">const</span>& <a class="code" href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">rgbColor</a>);</div>
|
119 |
+
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div>
|
120 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><<span class="keyword">typename</span> T, qualifier Q></div>
|
121 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLM_FUNC_DECL vec<3, T, Q> <a class="code" href="a00313.html#gaf8d30574c8576838097d8e20c295384a">YCoCgR2rgb</a>(</div>
|
122 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  vec<3, T, Q> <span class="keyword">const</span>& YCoCgColor);</div>
|
123 |
+
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
|
124 |
+
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }<span class="comment">//namespace glm</span></div>
|
125 |
+
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div>
|
126 |
+
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "color_space_YCoCg.inl"</span></div>
|
127 |
+
<div class="ttc" id="a00313_html_gaf8d30574c8576838097d8e20c295384a"><div class="ttname"><a href="a00313.html#gaf8d30574c8576838097d8e20c295384a">glm::YCoCgR2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > YCoCgR2rgb(vec< 3, T, Q > const &YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCgR color space to RGB color space. </div></div>
|
128 |
+
<div class="ttc" id="a00313_html_ga163596b804c7241810b2534a99eb1343"><div class="ttname"><a href="a00313.html#ga163596b804c7241810b2534a99eb1343">glm::YCoCg2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > YCoCg2rgb(vec< 3, T, Q > const &YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCg color space to RGB color space. </div></div>
|
129 |
+
<div class="ttc" id="a00312_html_ga5f9193be46f45f0655c05a0cdca006db"><div class="ttname"><a href="a00312.html#ga5f9193be46f45f0655c05a0cdca006db">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgbColor(vec< 3, T, Q > const &hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
|
130 |
+
<div class="ttc" id="a00313_html_ga0606353ec2a9b9eaa84f1b02ec391bc5"><div class="ttname"><a href="a00313.html#ga0606353ec2a9b9eaa84f1b02ec391bc5">glm::rgb2YCoCg</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCg(vec< 3, T, Q > const &rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCg color space. </div></div>
|
131 |
+
<div class="ttc" id="a00313_html_ga0389772e44ca0fd2ba4a79bdd8efe898"><div class="ttname"><a href="a00313.html#ga0389772e44ca0fd2ba4a79bdd8efe898">glm::rgb2YCoCgR</a></div><div class="ttdeci">GLM_FUNC_DECL vec< 3, T, Q > rgb2YCoCgR(vec< 3, T, Q > const &rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCgR color space. </div></div>
|
132 |
+
<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>
|
133 |
+
</div><!-- fragment --></div><!-- contents -->
|
134 |
+
<!-- start footer part -->
|
135 |
+
<hr class="footer"/><address class="footer"><small>
|
136 |
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
137 |
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
138 |
+
</a> 1.8.10
|
139 |
+
</small></address>
|
140 |
+
</body>
|
141 |
+
</html>
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00015.html
ADDED
@@ -0,0 +1,267 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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: common.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 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 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> </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">common.hpp File Reference</div> </div>
|
91 |
+
</div><!--header-->
|
92 |
+
<div class="contents">
|
93 |
+
|
94 |
+
<p><a class="el" href="a00280.html">Core features</a>
|
95 |
+
<a href="#details">More...</a></p>
|
96 |
+
|
97 |
+
<p><a href="a00015_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:ga439e60a72eadecfeda2df5449c613a64"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
102 |
+
<tr class="memitem:ga439e60a72eadecfeda2df5449c613a64"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga439e60a72eadecfeda2df5449c613a64">abs</a> (genType x)</td></tr>
|
103 |
+
<tr class="memdesc:ga439e60a72eadecfeda2df5449c613a64"><td class="mdescLeft"> </td><td class="mdescRight">Returns x if x >= 0; otherwise, it returns -x. <a href="a00241.html#ga439e60a72eadecfeda2df5449c613a64">More...</a><br /></td></tr>
|
104 |
+
<tr class="separator:ga439e60a72eadecfeda2df5449c613a64"><td class="memSeparator" colspan="2"> </td></tr>
|
105 |
+
<tr class="memitem:ga81d3abddd0ef0c8de579bc541ecadab6"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
106 |
+
<tr class="memitem:ga81d3abddd0ef0c8de579bc541ecadab6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6">abs</a> (vec< L, T, Q > const &x)</td></tr>
|
107 |
+
<tr class="memdesc:ga81d3abddd0ef0c8de579bc541ecadab6"><td class="mdescLeft"> </td><td class="mdescRight">Returns x if x >= 0; otherwise, it returns -x. <a href="a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6">More...</a><br /></td></tr>
|
108 |
+
<tr class="separator:ga81d3abddd0ef0c8de579bc541ecadab6"><td class="memSeparator" colspan="2"> </td></tr>
|
109 |
+
<tr class="memitem:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
110 |
+
<tr class="memitem:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gafb9d2a645a23aca12d4d6de0104b7657">ceil</a> (vec< L, T, Q > const &x)</td></tr>
|
111 |
+
<tr class="memdesc:gafb9d2a645a23aca12d4d6de0104b7657"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer that is greater than or equal to x. <a href="a00241.html#gafb9d2a645a23aca12d4d6de0104b7657">More...</a><br /></td></tr>
|
112 |
+
<tr class="separator:gafb9d2a645a23aca12d4d6de0104b7657"><td class="memSeparator" colspan="2"> </td></tr>
|
113 |
+
<tr class="memitem:ga7cd77683da6361e297c56443fc70806d"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
114 |
+
<tr class="memitem:ga7cd77683da6361e297c56443fc70806d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga7cd77683da6361e297c56443fc70806d">clamp</a> (genType x, genType minVal, genType maxVal)</td></tr>
|
115 |
+
<tr class="memdesc:ga7cd77683da6361e297c56443fc70806d"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00241.html#ga7cd77683da6361e297c56443fc70806d">More...</a><br /></td></tr>
|
116 |
+
<tr class="separator:ga7cd77683da6361e297c56443fc70806d"><td class="memSeparator" colspan="2"> </td></tr>
|
117 |
+
<tr class="memitem:gafba2e0674deb5953878d89483cd6323d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
118 |
+
<tr class="memitem:gafba2e0674deb5953878d89483cd6323d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gafba2e0674deb5953878d89483cd6323d">clamp</a> (vec< L, T, Q > const &x, T minVal, T maxVal)</td></tr>
|
119 |
+
<tr class="memdesc:gafba2e0674deb5953878d89483cd6323d"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00241.html#gafba2e0674deb5953878d89483cd6323d">More...</a><br /></td></tr>
|
120 |
+
<tr class="separator:gafba2e0674deb5953878d89483cd6323d"><td class="memSeparator" colspan="2"> </td></tr>
|
121 |
+
<tr class="memitem:gaa0f2f12e9108b09e22a3f0b2008a0b5d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
122 |
+
<tr class="memitem:gaa0f2f12e9108b09e22a3f0b2008a0b5d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">clamp</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)</td></tr>
|
123 |
+
<tr class="memdesc:gaa0f2f12e9108b09e22a3f0b2008a0b5d"><td class="mdescLeft"> </td><td class="mdescRight">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal and maxVal. <a href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">More...</a><br /></td></tr>
|
124 |
+
<tr class="separator:gaa0f2f12e9108b09e22a3f0b2008a0b5d"><td class="memSeparator" colspan="2"> </td></tr>
|
125 |
+
<tr class="memitem:ga1425c1c3160ec51214b03a0469a3013d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#ga1425c1c3160ec51214b03a0469a3013d">floatBitsToInt</a> (float const &v)</td></tr>
|
126 |
+
<tr class="memdesc:ga1425c1c3160ec51214b03a0469a3013d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a signed integer value representing the encoding of a floating-point value. <a href="a00241.html#ga1425c1c3160ec51214b03a0469a3013d">More...</a><br /></td></tr>
|
127 |
+
<tr class="separator:ga1425c1c3160ec51214b03a0469a3013d"><td class="memSeparator" colspan="2"> </td></tr>
|
128 |
+
<tr class="memitem:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
129 |
+
<tr class="memitem:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, int, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a> (vec< L, float, Q > const &v)</td></tr>
|
130 |
+
<tr class="memdesc:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="mdescLeft"> </td><td class="mdescRight">Returns a signed integer value representing the encoding of a floating-point value. <a href="a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed">More...</a><br /></td></tr>
|
131 |
+
<tr class="separator:ga99f7d62f78ac5ea3b49bae715c9488ed"><td class="memSeparator" colspan="2"> </td></tr>
|
132 |
+
<tr class="memitem:ga70e0271c34af52f3100c7960e18c3f2b"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#ga70e0271c34af52f3100c7960e18c3f2b">floatBitsToUint</a> (float const &v)</td></tr>
|
133 |
+
<tr class="memdesc:ga70e0271c34af52f3100c7960e18c3f2b"><td class="mdescLeft"> </td><td class="mdescRight">Returns a unsigned integer value representing the encoding of a floating-point value. <a href="a00241.html#ga70e0271c34af52f3100c7960e18c3f2b">More...</a><br /></td></tr>
|
134 |
+
<tr class="separator:ga70e0271c34af52f3100c7960e18c3f2b"><td class="memSeparator" colspan="2"> </td></tr>
|
135 |
+
<tr class="memitem:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
136 |
+
<tr class="memitem:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, uint, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a> (vec< L, float, Q > const &v)</td></tr>
|
137 |
+
<tr class="memdesc:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="mdescLeft"> </td><td class="mdescRight">Returns a unsigned integer value representing the encoding of a floating-point value. <a href="a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db">More...</a><br /></td></tr>
|
138 |
+
<tr class="separator:ga49418ba4c8a60fbbb5d57b705f3e26db"><td class="memSeparator" colspan="2"> </td></tr>
|
139 |
+
<tr class="memitem:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
140 |
+
<tr class="memitem:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a> (vec< L, T, Q > const &x)</td></tr>
|
141 |
+
<tr class="memdesc:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer that is less then or equal to x. <a href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">More...</a><br /></td></tr>
|
142 |
+
<tr class="separator:gaa9d0742639e85b29c7c5de11cfd6840d"><td class="memSeparator" colspan="2"> </td></tr>
|
143 |
+
<tr class="memitem:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
144 |
+
<tr class="memitem:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2">fma</a> (genType const &a, genType const &b, genType const &c)</td></tr>
|
145 |
+
<tr class="memdesc:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="mdescLeft"> </td><td class="mdescRight">Computes and returns a * b + c. <a href="a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2">More...</a><br /></td></tr>
|
146 |
+
<tr class="separator:gad0f444d4b81cc53c3b6edf5aa25078c2"><td class="memSeparator" colspan="2"> </td></tr>
|
147 |
+
<tr class="memitem:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
148 |
+
<tr class="memitem:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7">fract</a> (genType x)</td></tr>
|
149 |
+
<tr class="memdesc:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="mdescLeft"> </td><td class="mdescRight">Return x - floor(x). <a href="a00241.html#ga8ba89e40e55ae5cdf228548f9b7639c7">More...</a><br /></td></tr>
|
150 |
+
<tr class="separator:ga8ba89e40e55ae5cdf228548f9b7639c7"><td class="memSeparator" colspan="2"> </td></tr>
|
151 |
+
<tr class="memitem:ga2df623004f634b440d61e018d62c751b"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
152 |
+
<tr class="memitem:ga2df623004f634b440d61e018d62c751b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga2df623004f634b440d61e018d62c751b">fract</a> (vec< L, T, Q > const &x)</td></tr>
|
153 |
+
<tr class="memdesc:ga2df623004f634b440d61e018d62c751b"><td class="mdescLeft"> </td><td class="mdescRight">Return x - floor(x). <a href="a00241.html#ga2df623004f634b440d61e018d62c751b">More...</a><br /></td></tr>
|
154 |
+
<tr class="separator:ga2df623004f634b440d61e018d62c751b"><td class="memSeparator" colspan="2"> </td></tr>
|
155 |
+
<tr class="memitem:gaddf5ef73283c171730e0bcc11833fa81"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
156 |
+
<tr class="memitem:gaddf5ef73283c171730e0bcc11833fa81"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaddf5ef73283c171730e0bcc11833fa81">frexp</a> (genType x, int &exp)</td></tr>
|
157 |
+
<tr class="memdesc:gaddf5ef73283c171730e0bcc11833fa81"><td class="mdescLeft"> </td><td class="mdescRight">Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two, such that: x = significand * exp(2, exponent) <a href="a00241.html#gaddf5ef73283c171730e0bcc11833fa81">More...</a><br /></td></tr>
|
158 |
+
<tr class="separator:gaddf5ef73283c171730e0bcc11833fa81"><td class="memSeparator" colspan="2"> </td></tr>
|
159 |
+
<tr class="memitem:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4">intBitsToFloat</a> (int const &v)</td></tr>
|
160 |
+
<tr class="memdesc:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. <a href="a00241.html#ga4fb7c21c2dce064b26fd9ccdaf9adcd4">More...</a><br /></td></tr>
|
161 |
+
<tr class="separator:ga4fb7c21c2dce064b26fd9ccdaf9adcd4"><td class="memSeparator" colspan="2"> </td></tr>
|
162 |
+
<tr class="memitem:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
163 |
+
<tr class="memitem:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, float, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a> (vec< L, int, Q > const &v)</td></tr>
|
164 |
+
<tr class="memdesc:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value. <a href="a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">More...</a><br /></td></tr>
|
165 |
+
<tr class="separator:ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><td class="memSeparator" colspan="2"> </td></tr>
|
166 |
+
<tr class="memitem:ga2885587c23a106301f20443896365b62"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
167 |
+
<tr class="memitem:ga2885587c23a106301f20443896365b62"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga2885587c23a106301f20443896365b62">isinf</a> (vec< L, T, Q > const &x)</td></tr>
|
168 |
+
<tr class="memdesc:ga2885587c23a106301f20443896365b62"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if x holds a positive infinity or negative infinity representation in the underlying implementation's set of floating point representations. <a href="a00241.html#ga2885587c23a106301f20443896365b62">More...</a><br /></td></tr>
|
169 |
+
<tr class="separator:ga2885587c23a106301f20443896365b62"><td class="memSeparator" colspan="2"> </td></tr>
|
170 |
+
<tr class="memitem:ga29ef934c00306490de837b4746b4e14d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
171 |
+
<tr class="memitem:ga29ef934c00306490de837b4746b4e14d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, bool, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga29ef934c00306490de837b4746b4e14d">isnan</a> (vec< L, T, Q > const &x)</td></tr>
|
172 |
+
<tr class="memdesc:ga29ef934c00306490de837b4746b4e14d"><td class="mdescLeft"> </td><td class="mdescRight">Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of floating point representations. <a href="a00241.html#ga29ef934c00306490de837b4746b4e14d">More...</a><br /></td></tr>
|
173 |
+
<tr class="separator:ga29ef934c00306490de837b4746b4e14d"><td class="memSeparator" colspan="2"> </td></tr>
|
174 |
+
<tr class="memitem:gac3010e0a0c35a1b514540f2fb579c58c"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
175 |
+
<tr class="memitem:gac3010e0a0c35a1b514540f2fb579c58c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gac3010e0a0c35a1b514540f2fb579c58c">ldexp</a> (genType const &x, int const &exp)</td></tr>
|
176 |
+
<tr class="memdesc:gac3010e0a0c35a1b514540f2fb579c58c"><td class="mdescLeft"> </td><td class="mdescRight">Builds a floating-point number from x and the corresponding integral exponent of two in exp, returning: significand * exp(2, exponent) <a href="a00241.html#gac3010e0a0c35a1b514540f2fb579c58c">More...</a><br /></td></tr>
|
177 |
+
<tr class="separator:gac3010e0a0c35a1b514540f2fb579c58c"><td class="memSeparator" colspan="2"> </td></tr>
|
178 |
+
<tr class="memitem:gae02d42887fc5570451f880e3c624b9ac"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
179 |
+
<tr class="memitem:gae02d42887fc5570451f880e3c624b9ac"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gae02d42887fc5570451f880e3c624b9ac">max</a> (genType x, genType y)</td></tr>
|
180 |
+
<tr class="memdesc:gae02d42887fc5570451f880e3c624b9ac"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00241.html#gae02d42887fc5570451f880e3c624b9ac">More...</a><br /></td></tr>
|
181 |
+
<tr class="separator:gae02d42887fc5570451f880e3c624b9ac"><td class="memSeparator" colspan="2"> </td></tr>
|
182 |
+
<tr class="memitem:ga03e45d6e60d1c36edb00c52edeea0f31"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
183 |
+
<tr class="memitem:ga03e45d6e60d1c36edb00c52edeea0f31"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31">max</a> (vec< L, T, Q > const &x, T y)</td></tr>
|
184 |
+
<tr class="memdesc:ga03e45d6e60d1c36edb00c52edeea0f31"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00241.html#ga03e45d6e60d1c36edb00c52edeea0f31">More...</a><br /></td></tr>
|
185 |
+
<tr class="separator:ga03e45d6e60d1c36edb00c52edeea0f31"><td class="memSeparator" colspan="2"> </td></tr>
|
186 |
+
<tr class="memitem:gac1fec0c3303b572a6d4697a637213870"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
187 |
+
<tr class="memitem:gac1fec0c3303b572a6d4697a637213870"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gac1fec0c3303b572a6d4697a637213870">max</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
188 |
+
<tr class="memdesc:gac1fec0c3303b572a6d4697a637213870"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if x < y; otherwise, it returns x. <a href="a00241.html#gac1fec0c3303b572a6d4697a637213870">More...</a><br /></td></tr>
|
189 |
+
<tr class="separator:gac1fec0c3303b572a6d4697a637213870"><td class="memSeparator" colspan="2"> </td></tr>
|
190 |
+
<tr class="memitem:ga6cf8098827054a270ee36b18e30d471d"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
191 |
+
<tr class="memitem:ga6cf8098827054a270ee36b18e30d471d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga6cf8098827054a270ee36b18e30d471d">min</a> (genType x, genType y)</td></tr>
|
192 |
+
<tr class="memdesc:ga6cf8098827054a270ee36b18e30d471d"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00241.html#ga6cf8098827054a270ee36b18e30d471d">More...</a><br /></td></tr>
|
193 |
+
<tr class="separator:ga6cf8098827054a270ee36b18e30d471d"><td class="memSeparator" colspan="2"> </td></tr>
|
194 |
+
<tr class="memitem:gaa7d015eba1f9f48519251f4abe69b14d"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
195 |
+
<tr class="memitem:gaa7d015eba1f9f48519251f4abe69b14d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaa7d015eba1f9f48519251f4abe69b14d">min</a> (vec< L, T, Q > const &x, T y)</td></tr>
|
196 |
+
<tr class="memdesc:gaa7d015eba1f9f48519251f4abe69b14d"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00241.html#gaa7d015eba1f9f48519251f4abe69b14d">More...</a><br /></td></tr>
|
197 |
+
<tr class="separator:gaa7d015eba1f9f48519251f4abe69b14d"><td class="memSeparator" colspan="2"> </td></tr>
|
198 |
+
<tr class="memitem:ga31f49ef9e7d1beb003160c5e009b0c48"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
199 |
+
<tr class="memitem:ga31f49ef9e7d1beb003160c5e009b0c48"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">min</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
200 |
+
<tr class="memdesc:ga31f49ef9e7d1beb003160c5e009b0c48"><td class="mdescLeft"> </td><td class="mdescRight">Returns y if y < x; otherwise, it returns x. <a href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">More...</a><br /></td></tr>
|
201 |
+
<tr class="separator:ga31f49ef9e7d1beb003160c5e009b0c48"><td class="memSeparator" colspan="2"> </td></tr>
|
202 |
+
<tr class="memitem:ga8e93f374aae27d1a88b921860351f8d4"><td class="memTemplParams" colspan="2">template<typename genTypeT , typename genTypeU > </td></tr>
|
203 |
+
<tr class="memitem:ga8e93f374aae27d1a88b921860351f8d4"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genTypeT </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a> (genTypeT x, genTypeT y, genTypeU a)</td></tr>
|
204 |
+
<tr class="memdesc:ga8e93f374aae27d1a88b921860351f8d4"><td class="mdescLeft"> </td><td class="mdescRight">If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of x and y using the floating-point value a. <a href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">More...</a><br /></td></tr>
|
205 |
+
<tr class="separator:ga8e93f374aae27d1a88b921860351f8d4"><td class="memSeparator" colspan="2"> </td></tr>
|
206 |
+
<tr class="memitem:ga9b197a452cd52db3c5c18bac72bd7798"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
207 |
+
<tr class="memitem:ga9b197a452cd52db3c5c18bac72bd7798"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">mod</a> (vec< L, T, Q > const &x, vec< L, T, Q > const &y)</td></tr>
|
208 |
+
<tr class="memdesc:ga9b197a452cd52db3c5c18bac72bd7798"><td class="mdescLeft"> </td><td class="mdescRight">Modulus. <a href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">More...</a><br /></td></tr>
|
209 |
+
<tr class="separator:ga9b197a452cd52db3c5c18bac72bd7798"><td class="memSeparator" colspan="2"> </td></tr>
|
210 |
+
<tr class="memitem:ga85e33f139b8db1b39b590a5713b9e679"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
211 |
+
<tr class="memitem:ga85e33f139b8db1b39b590a5713b9e679"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga85e33f139b8db1b39b590a5713b9e679">modf</a> (genType x, genType &i)</td></tr>
|
212 |
+
<tr class="memdesc:ga85e33f139b8db1b39b590a5713b9e679"><td class="mdescLeft"> </td><td class="mdescRight">Returns the fractional part of x and sets i to the integer part (as a whole number floating point value). <a href="a00241.html#ga85e33f139b8db1b39b590a5713b9e679">More...</a><br /></td></tr>
|
213 |
+
<tr class="separator:ga85e33f139b8db1b39b590a5713b9e679"><td class="memSeparator" colspan="2"> </td></tr>
|
214 |
+
<tr class="memitem:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
215 |
+
<tr class="memitem:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e">round</a> (vec< L, T, Q > const &x)</td></tr>
|
216 |
+
<tr class="memdesc:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x. <a href="a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e">More...</a><br /></td></tr>
|
217 |
+
<tr class="separator:gafa03aca8c4713e1cc892aa92ca135a7e"><td class="memSeparator" colspan="2"> </td></tr>
|
218 |
+
<tr class="memitem:ga76b81785045a057989a84d99aeeb1578"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
219 |
+
<tr class="memitem:ga76b81785045a057989a84d99aeeb1578"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga76b81785045a057989a84d99aeeb1578">roundEven</a> (vec< L, T, Q > const &x)</td></tr>
|
220 |
+
<tr class="memdesc:ga76b81785045a057989a84d99aeeb1578"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x. <a href="a00241.html#ga76b81785045a057989a84d99aeeb1578">More...</a><br /></td></tr>
|
221 |
+
<tr class="separator:ga76b81785045a057989a84d99aeeb1578"><td class="memSeparator" colspan="2"> </td></tr>
|
222 |
+
<tr class="memitem:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
223 |
+
<tr class="memitem:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga1e2e5cfff800056540e32f6c9b604b28">sign</a> (vec< L, T, Q > const &x)</td></tr>
|
224 |
+
<tr class="memdesc:ga1e2e5cfff800056540e32f6c9b604b28"><td class="mdescLeft"> </td><td class="mdescRight">Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. <a href="a00241.html#ga1e2e5cfff800056540e32f6c9b604b28">More...</a><br /></td></tr>
|
225 |
+
<tr class="separator:ga1e2e5cfff800056540e32f6c9b604b28"><td class="memSeparator" colspan="2"> </td></tr>
|
226 |
+
<tr class="memitem:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
227 |
+
<tr class="memitem:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a> (genType edge0, genType edge1, genType x)</td></tr>
|
228 |
+
<tr class="memdesc:ga562edf7eca082cc5b7a0aaf180436daf"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 and 1 when edge0 < x < edge1. <a href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">More...</a><br /></td></tr>
|
229 |
+
<tr class="separator:ga562edf7eca082cc5b7a0aaf180436daf"><td class="memSeparator" colspan="2"> </td></tr>
|
230 |
+
<tr class="memitem:ga015a1261ff23e12650211aa872863cce"><td class="memTemplParams" colspan="2">template<typename genType > </td></tr>
|
231 |
+
<tr class="memitem:ga015a1261ff23e12650211aa872863cce"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga015a1261ff23e12650211aa872863cce">step</a> (genType edge, genType x)</td></tr>
|
232 |
+
<tr class="memdesc:ga015a1261ff23e12650211aa872863cce"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType. <a href="a00241.html#ga015a1261ff23e12650211aa872863cce">More...</a><br /></td></tr>
|
233 |
+
<tr class="separator:ga015a1261ff23e12650211aa872863cce"><td class="memSeparator" colspan="2"> </td></tr>
|
234 |
+
<tr class="memitem:ga8f9a911a48ef244b51654eaefc81c551"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
235 |
+
<tr class="memitem:ga8f9a911a48ef244b51654eaefc81c551"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga8f9a911a48ef244b51654eaefc81c551">step</a> (T edge, vec< L, T, Q > const &x)</td></tr>
|
236 |
+
<tr class="memdesc:ga8f9a911a48ef244b51654eaefc81c551"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0. <a href="a00241.html#ga8f9a911a48ef244b51654eaefc81c551">More...</a><br /></td></tr>
|
237 |
+
<tr class="separator:ga8f9a911a48ef244b51654eaefc81c551"><td class="memSeparator" colspan="2"> </td></tr>
|
238 |
+
<tr class="memitem:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
239 |
+
<tr class="memitem:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a> (vec< L, T, Q > const &edge, vec< L, T, Q > const &x)</td></tr>
|
240 |
+
<tr class="memdesc:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="mdescLeft"> </td><td class="mdescRight">Returns 0.0 if x < edge, otherwise it returns 1.0. <a href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">More...</a><br /></td></tr>
|
241 |
+
<tr class="separator:gaf4a5fc81619c7d3e8b22f53d4a098c7f"><td class="memSeparator" colspan="2"> </td></tr>
|
242 |
+
<tr class="memitem:gaf9375e3e06173271d49e6ffa3a334259"><td class="memTemplParams" colspan="2">template<length_t L, typename T , qualifier Q> </td></tr>
|
243 |
+
<tr class="memitem:gaf9375e3e06173271d49e6ffa3a334259"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, T, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#gaf9375e3e06173271d49e6ffa3a334259">trunc</a> (vec< L, T, Q > const &x)</td></tr>
|
244 |
+
<tr class="memdesc:gaf9375e3e06173271d49e6ffa3a334259"><td class="mdescLeft"> </td><td class="mdescRight">Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolute value of x. <a href="a00241.html#gaf9375e3e06173271d49e6ffa3a334259">More...</a><br /></td></tr>
|
245 |
+
<tr class="separator:gaf9375e3e06173271d49e6ffa3a334259"><td class="memSeparator" colspan="2"> </td></tr>
|
246 |
+
<tr class="memitem:gab2bae0d15dcdca6093f88f76b3975d97"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL float </td><td class="memItemRight" valign="bottom"><a class="el" href="a00241.html#gab2bae0d15dcdca6093f88f76b3975d97">uintBitsToFloat</a> (uint const &v)</td></tr>
|
247 |
+
<tr class="memdesc:gab2bae0d15dcdca6093f88f76b3975d97"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. <a href="a00241.html#gab2bae0d15dcdca6093f88f76b3975d97">More...</a><br /></td></tr>
|
248 |
+
<tr class="separator:gab2bae0d15dcdca6093f88f76b3975d97"><td class="memSeparator" colspan="2"> </td></tr>
|
249 |
+
<tr class="memitem:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memTemplParams" colspan="2">template<length_t L, qualifier Q> </td></tr>
|
250 |
+
<tr class="memitem:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vec< L, float, Q > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00241.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a> (vec< L, uint, Q > const &v)</td></tr>
|
251 |
+
<tr class="memdesc:ga97f46b5f7b42fe44482e13356eb394ae"><td class="mdescLeft"> </td><td class="mdescRight">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value. <a href="a00241.html#ga97f46b5f7b42fe44482e13356eb394ae">More...</a><br /></td></tr>
|
252 |
+
<tr class="separator:ga97f46b5f7b42fe44482e13356eb394ae"><td class="memSeparator" colspan="2"> </td></tr>
|
253 |
+
</table>
|
254 |
+
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
255 |
+
<div class="textblock"><p><a class="el" href="a00280.html">Core features</a> </p>
|
256 |
+
<dl class="section see"><dt>See also</dt><dd><a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.3 Common Functions</a> </dd></dl>
|
257 |
+
|
258 |
+
<p>Definition in file <a class="el" href="a00015_source.html">common.hpp</a>.</p>
|
259 |
+
</div></div><!-- contents -->
|
260 |
+
<!-- start footer part -->
|
261 |
+
<hr class="footer"/><address class="footer"><small>
|
262 |
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
263 |
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
264 |
+
</a> 1.8.10
|
265 |
+
</small></address>
|
266 |
+
</body>
|
267 |
+
</html>
|
submodules/diff-surfel-rasterization/third_party/glm/doc/api/a00015_source.html
ADDED
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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: common.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 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 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> </ul>
|
84 |
+
</div>
|
85 |
+
</div><!-- top -->
|
86 |
+
<div class="header">
|
87 |
+
<div class="headertitle">
|
88 |
+
<div class="title">common.hpp</div> </div>
|
89 |
+
</div><!--header-->
|
90 |
+
<div class="contents">
|
91 |
+
<a href="a00015.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div>
|
92 |
+
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#pragma once</span></div>
|
93 |
+
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div>
|
94 |
+
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "detail/qualifier.hpp"</span></div>
|
95 |
+
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "detail/_fixes.hpp"</span></div>
|
96 |
+
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> </div>
|
97 |
+
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">namespace </span><a class="code" href="a00236.html">glm</a></div>
|
98 |
+
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> {</div>
|
99 |
+
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
|
100 |
+
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
101 |
+
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  GLM_FUNC_DECL GLM_CONSTEXPR genType <a class="code" href="a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6">abs</a>(genType x);</div>
|
102 |
+
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div>
|
103 |
+
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
104 |
+
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6">abs</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
105 |
+
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
106 |
+
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
107 |
+
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga1e2e5cfff800056540e32f6c9b604b28">sign</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
108 |
+
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
|
109 |
+
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
110 |
+
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gaa9d0742639e85b29c7c5de11cfd6840d">floor</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
111 |
+
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div>
|
112 |
+
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
113 |
+
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gaf9375e3e06173271d49e6ffa3a334259">trunc</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
114 |
+
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div>
|
115 |
+
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
116 |
+
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e">round</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
117 |
+
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div>
|
118 |
+
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
119 |
+
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga76b81785045a057989a84d99aeeb1578">roundEven</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
120 |
+
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div>
|
121 |
+
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
122 |
+
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gafb9d2a645a23aca12d4d6de0104b7657">ceil</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
123 |
+
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div>
|
124 |
+
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
125 |
+
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#ga2df623004f634b440d61e018d62c751b">fract</a>(genType x);</div>
|
126 |
+
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
|
127 |
+
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
128 |
+
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga2df623004f634b440d61e018d62c751b">fract</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
129 |
+
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> </div>
|
130 |
+
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
131 |
+
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">mod</a>(genType x, genType y);</div>
|
132 |
+
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div>
|
133 |
+
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
134 |
+
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">mod</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
135 |
+
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div>
|
136 |
+
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
137 |
+
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">mod</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
138 |
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div>
|
139 |
+
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
140 |
+
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#ga85e33f139b8db1b39b590a5713b9e679">modf</a>(genType x, genType& i);</div>
|
141 |
+
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> </div>
|
142 |
+
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
143 |
+
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  GLM_FUNC_DECL GLM_CONSTEXPR genType <a class="code" href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">min</a>(genType x, genType y);</div>
|
144 |
+
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div>
|
145 |
+
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
146 |
+
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">min</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
147 |
+
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> </div>
|
148 |
+
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
149 |
+
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">min</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
150 |
+
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
|
151 |
+
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
152 |
+
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  GLM_FUNC_DECL GLM_CONSTEXPR genType <a class="code" href="a00241.html#gac1fec0c3303b572a6d4697a637213870">max</a>(genType x, genType y);</div>
|
153 |
+
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> </div>
|
154 |
+
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
155 |
+
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#gac1fec0c3303b572a6d4697a637213870">max</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T y);</div>
|
156 |
+
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div>
|
157 |
+
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
158 |
+
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#gac1fec0c3303b572a6d4697a637213870">max</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y);</div>
|
159 |
+
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div>
|
160 |
+
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
161 |
+
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  GLM_FUNC_DECL GLM_CONSTEXPR genType <a class="code" href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">clamp</a>(genType x, genType minVal, genType maxVal);</div>
|
162 |
+
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div>
|
163 |
+
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
164 |
+
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">clamp</a>(vec<L, T, Q> <span class="keyword">const</span>& x, T minVal, T maxVal);</div>
|
165 |
+
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div>
|
166 |
+
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
167 |
+
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  GLM_FUNC_DECL GLM_CONSTEXPR vec<L, T, Q> <a class="code" href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">clamp</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& minVal, vec<L, T, Q> <span class="keyword">const</span>& maxVal);</div>
|
168 |
+
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> </div>
|
169 |
+
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genTypeT, <span class="keyword">typename</span> genTypeU></div>
|
170 |
+
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  GLM_FUNC_DECL genTypeT <a class="code" href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(genTypeT x, genTypeT y, genTypeU a);</div>
|
171 |
+
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div>
|
172 |
+
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
173 |
+
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y, vec<L, U, Q> <span class="keyword">const</span>& a);</div>
|
174 |
+
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div>
|
175 |
+
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, <span class="keyword">typename</span> U, qualifier Q></div>
|
176 |
+
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">mix</a>(vec<L, T, Q> <span class="keyword">const</span>& x, vec<L, T, Q> <span class="keyword">const</span>& y, U a);</div>
|
177 |
+
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
|
178 |
+
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
179 |
+
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(genType edge, genType x);</div>
|
180 |
+
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div>
|
181 |
+
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
182 |
+
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(T edge, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
183 |
+
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div>
|
184 |
+
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
185 |
+
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">step</a>(vec<L, T, Q> <span class="keyword">const</span>& edge, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
186 |
+
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div>
|
187 |
+
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
188 |
+
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(genType edge0, genType edge1, genType x);</div>
|
189 |
+
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div>
|
190 |
+
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
191 |
+
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(T edge0, T edge1, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
192 |
+
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> </div>
|
193 |
+
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
194 |
+
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">smoothstep</a>(vec<L, T, Q> <span class="keyword">const</span>& edge0, vec<L, T, Q> <span class="keyword">const</span>& edge1, vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
195 |
+
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div>
|
196 |
+
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
197 |
+
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  GLM_FUNC_DECL vec<L, bool, Q> <a class="code" href="a00241.html#ga29ef934c00306490de837b4746b4e14d">isnan</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
198 |
+
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> </div>
|
199 |
+
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
200 |
+
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  GLM_FUNC_DECL vec<L, bool, Q> <a class="code" href="a00241.html#ga2885587c23a106301f20443896365b62">isinf</a>(vec<L, T, Q> <span class="keyword">const</span>& x);</div>
|
201 |
+
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div>
|
202 |
+
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  GLM_FUNC_DECL <span class="keywordtype">int</span> <a class="code" href="a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a>(<span class="keywordtype">float</span> <span class="keyword">const</span>& v);</div>
|
203 |
+
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div>
|
204 |
+
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
205 |
+
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  GLM_FUNC_DECL vec<L, int, Q> <a class="code" href="a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed">floatBitsToInt</a>(vec<L, float, Q> <span class="keyword">const</span>& v);</div>
|
206 |
+
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> </div>
|
207 |
+
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  GLM_FUNC_DECL uint <a class="code" href="a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a>(<span class="keywordtype">float</span> <span class="keyword">const</span>& v);</div>
|
208 |
+
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> </div>
|
209 |
+
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
210 |
+
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  GLM_FUNC_DECL vec<L, uint, Q> <a class="code" href="a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db">floatBitsToUint</a>(vec<L, float, Q> <span class="keyword">const</span>& v);</div>
|
211 |
+
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> </div>
|
212 |
+
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  GLM_FUNC_DECL <span class="keywordtype">float</span> <a class="code" href="a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a>(<span class="keywordtype">int</span> <span class="keyword">const</span>& v);</div>
|
213 |
+
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> </div>
|
214 |
+
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
215 |
+
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  GLM_FUNC_DECL vec<L, float, Q> <a class="code" href="a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">intBitsToFloat</a>(vec<L, int, Q> <span class="keyword">const</span>& v);</div>
|
216 |
+
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> </div>
|
217 |
+
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  GLM_FUNC_DECL <span class="keywordtype">float</span> <a class="code" href="a00241.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a>(uint <span class="keyword">const</span>& v);</div>
|
218 |
+
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> </div>
|
219 |
+
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="keyword">template</span><length_t L, qualifier Q></div>
|
220 |
+
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  GLM_FUNC_DECL vec<L, float, Q> <a class="code" href="a00241.html#ga97f46b5f7b42fe44482e13356eb394ae">uintBitsToFloat</a>(vec<L, uint, Q> <span class="keyword">const</span>& v);</div>
|
221 |
+
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> </div>
|
222 |
+
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
223 |
+
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2">fma</a>(genType <span class="keyword">const</span>& a, genType <span class="keyword">const</span>& b, genType <span class="keyword">const</span>& c);</div>
|
224 |
+
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div>
|
225 |
+
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
226 |
+
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#gaddf5ef73283c171730e0bcc11833fa81">frexp</a>(genType x, <span class="keywordtype">int</span>& <a class="code" href="a00242.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
227 |
+
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  </div>
|
228 |
+
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
229 |
+
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gaddf5ef73283c171730e0bcc11833fa81">frexp</a>(vec<L, T, Q> <span class="keyword">const</span>& v, vec<L, int, Q>& <a class="code" href="a00242.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
230 |
+
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div>
|
231 |
+
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keyword">template</span><<span class="keyword">typename</span> genType></div>
|
232 |
+
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  GLM_FUNC_DECL genType <a class="code" href="a00241.html#gac3010e0a0c35a1b514540f2fb579c58c">ldexp</a>(genType <span class="keyword">const</span>& x, <span class="keywordtype">int</span> <span class="keyword">const</span>& <a class="code" href="a00242.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
233 |
+
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  </div>
|
234 |
+
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="keyword">template</span><length_t L, <span class="keyword">typename</span> T, qualifier Q></div>
|
235 |
+
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  GLM_FUNC_DECL vec<L, T, Q> <a class="code" href="a00241.html#gac3010e0a0c35a1b514540f2fb579c58c">ldexp</a>(vec<L, T, Q> <span class="keyword">const</span>& v, vec<L, int, Q> <span class="keyword">const</span>& <a class="code" href="a00242.html#ga071566cadc7505455e611f2a0353f4d4">exp</a>);</div>
|
236 |
+
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div>
|
237 |
+
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> }<span class="comment">//namespace glm</span></div>
|
238 |
+
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span> </div>
|
239 |
+
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span> <span class="preprocessor">#include "detail/func_common.inl"</span></div>
|
240 |
+
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span> </div>
|
241 |
+
<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< L, T, Q > floor(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is less then or equal to x. </div></div>
|
242 |
+
<div class="ttc" id="a00241_html_gad0f444d4b81cc53c3b6edf5aa25078c2"><div class="ttname"><a href="a00241.html#gad0f444d4b81cc53c3b6edf5aa25078c2">glm::fma</a></div><div class="ttdeci">GLM_FUNC_DECL genType fma(genType const &a, genType const &b, genType const &c)</div><div class="ttdoc">Computes and returns a * b + c. </div></div>
|
243 |
+
<div class="ttc" id="a00241_html_gaf9375e3e06173271d49e6ffa3a334259"><div class="ttname"><a href="a00241.html#gaf9375e3e06173271d49e6ffa3a334259">glm::trunc</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > trunc(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x whose absolute value is not larger than the absolut...</div></div>
|
244 |
+
<div class="ttc" id="a00241_html_ga9b197a452cd52db3c5c18bac72bd7798"><div class="ttname"><a href="a00241.html#ga9b197a452cd52db3c5c18bac72bd7798">glm::mod</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > mod(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Modulus. </div></div>
|
245 |
+
<div class="ttc" id="a00241_html_gaa0f2f12e9108b09e22a3f0b2008a0b5d"><div class="ttname"><a href="a00241.html#gaa0f2f12e9108b09e22a3f0b2008a0b5d">glm::clamp</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > clamp(vec< L, T, Q > const &x, vec< L, T, Q > const &minVal, vec< L, T, Q > const &maxVal)</div><div class="ttdoc">Returns min(max(x, minVal), maxVal) for each component in x using the floating-point values minVal an...</div></div>
|
246 |
+
<div class="ttc" id="a00241_html_gafa03aca8c4713e1cc892aa92ca135a7e"><div class="ttname"><a href="a00241.html#gafa03aca8c4713e1cc892aa92ca135a7e">glm::round</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > round(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x. </div></div>
|
247 |
+
<div class="ttc" id="a00241_html_ga97f46b5f7b42fe44482e13356eb394ae"><div class="ttname"><a href="a00241.html#ga97f46b5f7b42fe44482e13356eb394ae">glm::uintBitsToFloat</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, float, Q > uintBitsToFloat(vec< L, uint, Q > const &v)</div><div class="ttdoc">Returns a floating-point value corresponding to a unsigned integer encoding of a floating-point value...</div></div>
|
248 |
+
<div class="ttc" id="a00241_html_ga1e2e5cfff800056540e32f6c9b604b28"><div class="ttname"><a href="a00241.html#ga1e2e5cfff800056540e32f6c9b604b28">glm::sign</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > sign(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0. </div></div>
|
249 |
+
<div class="ttc" id="a00241_html_ga2885587c23a106301f20443896365b62"><div class="ttname"><a href="a00241.html#ga2885587c23a106301f20443896365b62">glm::isinf</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, bool, Q > isinf(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns true if x holds a positive infinity or negative infinity representation in the underlying imp...</div></div>
|
250 |
+
<div class="ttc" id="a00241_html_ga76b81785045a057989a84d99aeeb1578"><div class="ttname"><a href="a00241.html#ga76b81785045a057989a84d99aeeb1578">glm::roundEven</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > roundEven(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer to x. </div></div>
|
251 |
+
<div class="ttc" id="a00241_html_ga85e33f139b8db1b39b590a5713b9e679"><div class="ttname"><a href="a00241.html#ga85e33f139b8db1b39b590a5713b9e679">glm::modf</a></div><div class="ttdeci">GLM_FUNC_DECL genType modf(genType x, genType &i)</div><div class="ttdoc">Returns the fractional part of x and sets i to the integer part (as a whole number floating point val...</div></div>
|
252 |
+
<div class="ttc" id="a00241_html_gafb9d2a645a23aca12d4d6de0104b7657"><div class="ttname"><a href="a00241.html#gafb9d2a645a23aca12d4d6de0104b7657">glm::ceil</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > ceil(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is greater than or equal to x. </div></div>
|
253 |
+
<div class="ttc" id="a00241_html_ga31f49ef9e7d1beb003160c5e009b0c48"><div class="ttname"><a href="a00241.html#ga31f49ef9e7d1beb003160c5e009b0c48">glm::min</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > min(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Returns y if y < x; otherwise, it returns x. </div></div>
|
254 |
+
<div class="ttc" id="a00241_html_ga7a0a8291a1cf3e1c2aee33030a1bd7b0"><div class="ttname"><a href="a00241.html#ga7a0a8291a1cf3e1c2aee33030a1bd7b0">glm::intBitsToFloat</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, float, Q > intBitsToFloat(vec< L, int, Q > const &v)</div><div class="ttdoc">Returns a floating-point value corresponding to a signed integer encoding of a floating-point value...</div></div>
|
255 |
+
<div class="ttc" id="a00241_html_ga29ef934c00306490de837b4746b4e14d"><div class="ttname"><a href="a00241.html#ga29ef934c00306490de837b4746b4e14d">glm::isnan</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, bool, Q > isnan(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns true if x holds a NaN (not a number) representation in the underlying implementation's set of...</div></div>
|
256 |
+
<div class="ttc" id="a00242_html_ga071566cadc7505455e611f2a0353f4d4"><div class="ttname"><a href="a00242.html#ga071566cadc7505455e611f2a0353f4d4">glm::exp</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > exp(vec< L, T, Q > const &v)</div><div class="ttdoc">Returns the natural exponentiation of x, i.e., e^x. </div></div>
|
257 |
+
<div class="ttc" id="a00241_html_ga49418ba4c8a60fbbb5d57b705f3e26db"><div class="ttname"><a href="a00241.html#ga49418ba4c8a60fbbb5d57b705f3e26db">glm::floatBitsToUint</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, uint, Q > floatBitsToUint(vec< L, float, Q > const &v)</div><div class="ttdoc">Returns a unsigned integer value representing the encoding of a floating-point value. </div></div>
|
258 |
+
<div class="ttc" id="a00241_html_ga562edf7eca082cc5b7a0aaf180436daf"><div class="ttname"><a href="a00241.html#ga562edf7eca082cc5b7a0aaf180436daf">glm::smoothstep</a></div><div class="ttdeci">GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x)</div><div class="ttdoc">Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and performs smooth Hermite interpolation between 0 a...</div></div>
|
259 |
+
<div class="ttc" id="a00241_html_ga81d3abddd0ef0c8de579bc541ecadab6"><div class="ttname"><a href="a00241.html#ga81d3abddd0ef0c8de579bc541ecadab6">glm::abs</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > abs(vec< L, T, Q > const &x)</div><div class="ttdoc">Returns x if x >= 0; otherwise, it returns -x. </div></div>
|
260 |
+
<div class="ttc" id="a00241_html_gac1fec0c3303b572a6d4697a637213870"><div class="ttname"><a href="a00241.html#gac1fec0c3303b572a6d4697a637213870">glm::max</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR vec< L, T, Q > max(vec< L, T, Q > const &x, vec< L, T, Q > const &y)</div><div class="ttdoc">Returns y if x < y; otherwise, it returns x. </div></div>
|
261 |
+
<div class="ttc" id="a00241_html_gaf4a5fc81619c7d3e8b22f53d4a098c7f"><div class="ttname"><a href="a00241.html#gaf4a5fc81619c7d3e8b22f53d4a098c7f">glm::step</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > step(vec< L, T, Q > const &edge, vec< L, T, Q > const &x)</div><div class="ttdoc">Returns 0.0 if x < edge, otherwise it returns 1.0. </div></div>
|
262 |
+
<div class="ttc" id="a00241_html_ga2df623004f634b440d61e018d62c751b"><div class="ttname"><a href="a00241.html#ga2df623004f634b440d61e018d62c751b">glm::fract</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, T, Q > fract(vec< L, T, Q > const &x)</div><div class="ttdoc">Return x - floor(x). </div></div>
|
263 |
+
<div class="ttc" id="a00241_html_gac3010e0a0c35a1b514540f2fb579c58c"><div class="ttname"><a href="a00241.html#gac3010e0a0c35a1b514540f2fb579c58c">glm::ldexp</a></div><div class="ttdeci">GLM_FUNC_DECL genType ldexp(genType const &x, int const &exp)</div><div class="ttdoc">Builds a floating-point number from x and the corresponding integral exponent of two in exp...</div></div>
|
264 |
+
<div class="ttc" id="a00241_html_ga99f7d62f78ac5ea3b49bae715c9488ed"><div class="ttname"><a href="a00241.html#ga99f7d62f78ac5ea3b49bae715c9488ed">glm::floatBitsToInt</a></div><div class="ttdeci">GLM_FUNC_DECL vec< L, int, Q > floatBitsToInt(vec< L, float, Q > const &v)</div><div class="ttdoc">Returns a signed integer value representing the encoding of a floating-point value. </div></div>
|
265 |
+
<div class="ttc" id="a00241_html_ga8e93f374aae27d1a88b921860351f8d4"><div class="ttname"><a href="a00241.html#ga8e93f374aae27d1a88b921860351f8d4">glm::mix</a></div><div class="ttdeci">GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a)</div><div class="ttdoc">If genTypeU is a floating scalar or vector: Returns x * (1.0 - a) + y * a, i.e., the linear blend of ...</div></div>
|
266 |
+
<div class="ttc" id="a00241_html_gaddf5ef73283c171730e0bcc11833fa81"><div class="ttname"><a href="a00241.html#gaddf5ef73283c171730e0bcc11833fa81">glm::frexp</a></div><div class="ttdeci">GLM_FUNC_DECL genType frexp(genType x, int &exp)</div><div class="ttdoc">Splits x into a floating-point significand in the range [0.5, 1.0) and an integral exponent of two...</div></div>
|
267 |
+
<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>
|
268 |
+
</div><!-- fragment --></div><!-- contents -->
|
269 |
+
<!-- start footer part -->
|
270 |
+
<hr class="footer"/><address class="footer"><small>
|
271 |
+
Generated by  <a href="http://www.doxygen.org/index.html">
|
272 |
+
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
273 |
+
</a> 1.8.10
|
274 |
+
</small></address>
|
275 |
+
</body>
|
276 |
+
</html>
|