Initial commit

This commit is contained in:
2026-09-27 01:33:35 +02:00
commit 3ac329a21b
1185 changed files with 543634 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
build/

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Cristian Gora
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

71
Makefile Normal file
View File

@@ -0,0 +1,71 @@
CXX := clang++
CXXFLAGS := -Wall -Wextra -std=c++17
CC := clang
CFLAGS := -Wall -Wextra
INCLUDES := -I./src/ \
-I./thirdparty/glad/include/ \
-I./thirdparty/glm/ \
-I./thirdparty/imgui/ \
-I./thirdparty/imgui/backends/ \
-I./thirdparty/stb/ \
-I./thirdparty/tinyobjloader/ \
LDFLAGS := -lglfw -lGL -lm
TARGET := build/fan
OBJS := build/camera.o \
build/framebuffer.o \
build/loader.o \
build/main.o \
build/material.o \
build/mesh.o \
build/renderer.o \
build/scene.o \
build/shader.o \
build/texture.o \
build/transform.o \
build/utils.o \
build/window.o \
build/glad.o \
build/stb_image.o \
build/tiny_obj_loader.o \
IMGUI_OBJS := build/imgui.o build/imgui_demo.o build/imgui_draw.o build/imgui_tables.o build/imgui_widgets.o \
build/imgui_impl_glfw.o build/imgui_impl_opengl3.o
.PHONY: all clean
all: $(TARGET)
$(TARGET): $(OBJS) $(IMGUI_OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
build/%.o: src/%.cpp
$(CXX) $(CXXFLAGS) $(INCLUDES) -c $< -o $@
build/glad.o: thirdparty/glad/src/gl.c
$(CC) $(CFLAGS) -I./thirdparty/glad/include/ -c $< -o $@
build/stb_image.o: thirdparty/stb/stb_image.h
$(CC) $(CFLAGS) -DSTB_IMAGE_IMPLEMENTATION -xc -c $< -o $@
build/tiny_obj_loader.o: thirdparty/tinyobjloader/tiny_obj_loader.h
$(CXX) $(CXXFLAGS) -DTINYOBJLOADER_IMPLEMENTATION -xc++ -c $< -o $@
define imgui_rule
build/$(1): thirdparty/imgui/$(2)
$(CXX) $(CXXFLAGS) -I./thirdparty/imgui/ -c $$< -o $$@
endef
$(eval $(call imgui_rule,imgui.o,imgui.cpp))
$(eval $(call imgui_rule,imgui_demo.o,imgui_demo.cpp))
$(eval $(call imgui_rule,imgui_draw.o,imgui_draw.cpp))
$(eval $(call imgui_rule,imgui_tables.o,imgui_tables.cpp))
$(eval $(call imgui_rule,imgui_widgets.o,imgui_widgets.cpp))
$(eval $(call imgui_rule,imgui_impl_glfw.o,backends/imgui_impl_glfw.cpp))
$(eval $(call imgui_rule,imgui_impl_opengl3.o,backends/imgui_impl_opengl3.cpp))
clean:
rm -f build/*.o $(TARGET)

107
README.md Normal file
View File

@@ -0,0 +1,107 @@
# Fan Engine
<img src="./assets/logo/logo.png" width="64"/>
A minimal 3D renderer written in C++ and OpenGL 3.3 Core.
> **_NOTE_:** The engine is still in heavy development. Expect breaking changes.
## Building
The only tested platform at the moment is **Linux** (x86-64).
To build the project **you'll need to have GLFW already installed
system-wide**, the rest of the dependencies are already included.
After that, building comes down to just running the included Makefile.
```console
$ mkdir build
$ make # optionally pass -j$(nproc)
```
## Features
This is the current state of the engine architecture:
```mermaid
flowchart TB
subgraph Application
Renderer
Scene
Camera
Framebuffer
end
subgraph World
Entity
Transform
Mesh
Material
LightEnvironment
end
subgraph SceneData["Scene Data"]
Vertices
Indices
Shader
Texture
DirectionalLight
PointLight
SpotLight
end
subgraph Loading
Loader
tinyobjloader
stb_image
end
subgraph Platform
Window
GLFW
glad
ImGui["Dear ImGui"]
end
Renderer --> Scene
Renderer --> Camera
Scene --> Entity
Scene --> LightEnvironment
Entity --> Transform
Entity --> Mesh
Entity --> Material
Mesh --> Vertices
Mesh --> Indices
Material --> Shader
Material --> Texture
LightEnvironment --> DirectionalLight
LightEnvironment --> PointLight
LightEnvironment --> SpotLight
Loader --> tinyobjloader
tinyobjloader --> Entity
Texture --> stb_image
Window --> GLFW
Window --> glad
Window --> ImGui
classDef application fill:#7c3aed,stroke:#4c1d95,color:#fff
classDef world fill:#2563eb,stroke:#1e3a8a,color:#fff
classDef data fill:#0f766e,stroke:#134e4a,color:#fff
classDef loading fill:#d97706,stroke:#92400e,color:#fff
classDef platform fill:#64748b,stroke:#334155,color:#fff
class Renderer,Scene,Camera,Framebuffer application
class Entity,Transform,Mesh,Material,LightEnvironment world
class Vertices,Indices,Shader,Texture,DirectionalLight,PointLight,SpotLight data
class Loader,tinyobjloader,stb_image loading
class Window,GLFW,glad,ImGui platform
```

BIN
assets/awesomeface.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
assets/backpack/ao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@@ -0,0 +1,16 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Scene_-_Root
Ns 225.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.0 0.0 0.0
Ni 1.450000
d 1.000000
illum 2
map_Kd diffuse.jpg
map_Bump normal.png
map_Ks specular.jpg

199481
assets/backpack/backpack.obj Normal file

File diff suppressed because it is too large Load Diff

BIN
assets/backpack/diffuse.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

BIN
assets/backpack/normal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

View File

@@ -0,0 +1,3 @@
Model by Berk Gedik, from: https://sketchfab.com/3d-models/survival-guitar-backpack-low-poly-799f8c4511f84fab8c3f12887f7e6b36
Modified material assignment (Joey de Vries) for easier load in OpenGL model loading chapter, and renamed albedo to diffuse and metallic to specular to match non-PBR lighting setup.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 MiB

BIN
assets/container.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

BIN
assets/container2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

BIN
assets/debugempty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

BIN
assets/logo/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

43
assets/logo/logo.py Normal file
View File

@@ -0,0 +1,43 @@
import math
cx, cy = 250, 250
R_in = 52
R_out = 188
A_left_in = -10
A_left_out = -16
A_right_in = 14
A_right_out = 34
color = "#ffffff"
def get_pt(r, angle_deg):
rad = math.radians(angle_deg)
return cx + r * math.sin(rad), cy - r * math.cos(rad)
il_x, il_y = get_pt(R_in, A_left_in)
ol_x, ol_y = get_pt(R_out, A_left_out)
or_x, or_y = get_pt(R_out, A_right_out)
ir_x, ir_y = get_pt(R_in, A_right_in)
cpl_x, cpl_y = get_pt(120, -50)
cpr_x, cpr_y = get_pt(120, -5)
svg = f'''<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" width="500" height="500">
<circle cx="250" cy="250" r="215" stroke="{color}" stroke-width="18" fill="none"/>
<circle cx="250" cy="250" r="40" fill="{color}"/>
<g fill="{color}">'''
for i in range(6):
svg += f'''
<path transform="rotate({i*60}, 250, 250)" d="M {il_x:.2f} {il_y:.2f} Q {cpl_x:.2f} {cpl_y:.2f} {ol_x:.2f} {ol_y:.2f} A {R_out} {R_out} 0 0 1 {or_x:.2f} {or_y:.2f} Q {cpr_x:.2f} {cpr_y:.2f} {ir_x:.2f} {ir_y:.2f} A {R_in} {R_in} 0 0 0 {il_x:.2f} {il_y:.2f} Z"/>'''
svg += '''
</g>
</svg>'''
with open("logo.svg", "w") as f:
f.write(svg)

12
assets/logo/logo.svg Normal file
View File

@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500" width="500" height="500">
<circle cx="250" cy="250" r="215" stroke="#ffffff" stroke-width="18" fill="none"/>
<circle cx="250" cy="250" r="40" fill="#ffffff"/>
<g fill="#ffffff">
<path transform="rotate(0, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
<path transform="rotate(60, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
<path transform="rotate(120, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
<path transform="rotate(180, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
<path transform="rotate(240, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
<path transform="rotate(300, 250, 250)" d="M 240.97 198.79 Q 158.07 172.87 198.18 69.28 A 188 188 0 0 1 355.13 94.14 Q 239.54 130.46 262.58 199.54 A 52 52 0 0 0 240.97 198.79 Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/wall.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

10
compile_flags.txt Normal file
View File

@@ -0,0 +1,10 @@
-Wall
-Wextra
-std=c++17
-I./src/
-I./thirdparty/glad/include/
-I./thirdparty/glm/
-I./thirdparty/imgui/
-I./thirdparty/imgui/backends/
-I./thirdparty/stb/
-I./thirdparty/tinyobjloader/

63
src/camera.cpp Normal file
View File

@@ -0,0 +1,63 @@
#include <algorithm>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include "camera.hpp"
namespace Fan
{
glm::mat4 Camera::get_view_matrix() const
{
return glm::lookAt(position, position + get_front(), glm::vec3(0.0f, 1.0f, 0.0f));
}
glm::mat4 Camera::get_projection_matrix(int width, int height) const
{
float aspect_ratio = (height > 0)
? static_cast<float>(width) / static_cast<float>(height)
: 1.0f;
return glm::perspective(glm::radians(fov), aspect_ratio, near_plane, far_plane);
}
glm::mat4 Camera::get_view_projection_matrix(int width, int height) const
{
return get_projection_matrix(width, height) * get_view_matrix();
}
glm::vec3 Camera::get_front() const
{
glm::vec3 front;
front.x = std::cos(glm::radians(yaw)) * std::cos(glm::radians(pitch));
front.y = std::sin(glm::radians(pitch));
front.z = std::sin(glm::radians(yaw)) * std::cos(glm::radians(pitch));
return glm::normalize(front);
}
glm::vec3 Camera::get_right() const
{
return glm::normalize(glm::cross(get_front(), glm::vec3(0.0f, 1.0f, 0.0f)));
}
glm::vec3 Camera::get_up() const
{
return glm::normalize(glm::cross(get_right(), get_front()));
}
void Camera::rotate(float delta_yaw, float delta_pitch)
{
yaw += delta_yaw;
pitch += delta_pitch;
pitch = std::clamp(pitch, -89.0f, 89.0f);
}
void Camera::look_at(const glm::vec3& target)
{
glm::vec3 direction = glm::normalize(target - position);
pitch = glm::degrees(std::asin(direction.y));
yaw = glm::degrees(std::atan2(direction.z, direction.x));
pitch = std::clamp(pitch, -89.0f, 89.0f);
}
} // namespace Fan

44
src/camera.hpp Normal file
View File

@@ -0,0 +1,44 @@
#ifndef FAN_CAMERA_HPP_
#define FAN_CAMERA_HPP_
#include <glm/glm.hpp>
#include "config.hpp"
namespace Fan
{
class Camera
{
public:
glm::vec3 position{0.0f, 0.0f, 0.0f};
// Euler angles
float yaw{-90.0f};
float pitch{0.0f};
// Projection settings
float fov{CAMERA_FOV};
float near_plane{CAMERA_NEAR};
float far_plane{CAMERA_FAR};
Camera() = default;
explicit Camera(glm::vec3 position) : position(position) {}
// Matrix generation
glm::mat4 get_view_matrix() const;
glm::mat4 get_projection_matrix(int width, int height) const;
glm::mat4 get_view_projection_matrix(int width, int height) const;
// Direction vectors
glm::vec3 get_front() const;
glm::vec3 get_right() const;
glm::vec3 get_up() const;
// Helper functions
void rotate(float delta_yaw, float delta_pitch);
void look_at(const glm::vec3& target);
};
} // namespace Fan
#endif // FAN_CAMERA_HPP_

21
src/config.hpp Normal file
View File

@@ -0,0 +1,21 @@
#ifndef FAN_CONFIG_HPP_
#define FAN_CONFIG_HPP_
namespace Fan
{
inline constexpr const char* VERSION_STRING = "Fan Engine - indev - OpenGL 3.3";
inline constexpr int WINDOW_WIDTH = 1200;
inline constexpr int WINDOW_HEIGHT = 800;
inline constexpr float CAMERA_FOV = 45.0f;
inline constexpr float CAMERA_SPEED = 2.5f;
inline constexpr float CAMERA_SENSITIVITY = 0.1f;
inline constexpr float CAMERA_NEAR = 0.1f;
inline constexpr float CAMERA_FAR = 100.0f;
} // namespace Fan
#endif // FAN_CONFIG_HPP_

26
src/entity.hpp Normal file
View File

@@ -0,0 +1,26 @@
#ifndef FAN_ENTITY_HPP_
#define FAN_ENTITY_HPP_
#include "transform.hpp"
#include "mesh.hpp"
#include "material.hpp"
#include "utils.hpp"
namespace Fan
{
class Entity
{
public:
Transform transform{};
Rc<Mesh> mesh;
Rc<Material> material;
Entity(Rc<Mesh> mesh, Rc<Material> material)
: mesh(mesh)
, material(material) {}
};
} // namespace Fan
#endif // FAN_ENTITY_HPP_

21
src/fan.hpp Normal file
View File

@@ -0,0 +1,21 @@
#ifndef FAN_HPP_
#define FAN_HPP_
#include <camera.hpp>
#include <config.hpp>
#include <entity.hpp>
#include <framebuffer.hpp>
#include <light.hpp>
#include <loader.hpp>
#include <material.hpp>
#include <mesh.hpp>
#include <renderer.hpp>
#include <scene.hpp>
#include <shader.hpp>
#include <texture.hpp>
#include <transform.hpp>
#include <utils.hpp>
#include <vertex.hpp>
#include <window.hpp>
#endif // FAN_HPP_

115
src/framebuffer.cpp Normal file
View File

@@ -0,0 +1,115 @@
#include <iostream>
#include <utility>
#include "framebuffer.hpp"
namespace Fan
{
Rc<FrameBuffer> FrameBuffer::create(GLsizei width, GLsizei height)
{
GLuint id, texture, render_buffer;
glGenFramebuffers(1, &id);
glBindFramebuffer(GL_FRAMEBUFFER, id);
// Create the color texture attachment
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB,
GL_UNSIGNED_BYTE, nullptr);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
texture, 0);
// Create a renderbuffer object for depth and stencil attachment
glGenRenderbuffers(1, &render_buffer);
glBindRenderbuffer(GL_RENDERBUFFER, render_buffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
GL_RENDERBUFFER, render_buffer);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (status != GL_FRAMEBUFFER_COMPLETE) {
glDeleteRenderbuffers(1, &render_buffer);
glDeleteTextures(1, &texture);
glDeleteFramebuffers(1, &id);
std::cerr << "ERROR: FRAMEBUFFER: Could not create incomplete framebuffer" << std::endl;
return nullptr;
}
return make_rc<FrameBuffer>(id, width, height, texture, render_buffer);
}
FrameBuffer::~FrameBuffer()
{
glDeleteRenderbuffers(1, &m_render_buffer);
glDeleteTextures(1, &m_texture);
glDeleteFramebuffers(1, &m_id);
}
FrameBuffer::FrameBuffer(FrameBuffer&& other) noexcept
: m_id(std::exchange(other.m_id, 0))
, m_width(std::exchange(other.m_width, 0))
, m_height(std::exchange(other.m_height, 0))
, m_texture(std::exchange(other.m_texture, 0))
, m_render_buffer(std::exchange(other.m_render_buffer, 0))
{
}
FrameBuffer& FrameBuffer::operator=(FrameBuffer&& other) noexcept
{
if (this == &other) { return *this; }
std::swap(m_id, other.m_id);
std::swap(m_width, other.m_width);
std::swap(m_height, other.m_height);
std::swap(m_texture, other.m_texture);
std::swap(m_render_buffer, other.m_render_buffer);
return *this;
}
GLuint FrameBuffer::get_texture_id() const
{
return m_texture;
}
GLsizei FrameBuffer::get_width() const
{
return m_width;
}
GLsizei FrameBuffer::get_height() const
{
return m_height;
}
void FrameBuffer::bind() const
{
glBindFramebuffer(GL_FRAMEBUFFER, m_id);
}
void FrameBuffer::unbind() const
{
glBindFramebuffer(GL_FRAMEBUFFER, 0);
}
void FrameBuffer::resize(GLsizei width, GLsizei height)
{
m_width = width;
m_height = height;
// Resize the color attachment
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_width, m_height, 0,
GL_RGB, GL_UNSIGNED_BYTE, nullptr);
// Resize the depth/stencil attachment
glBindRenderbuffer(GL_RENDERBUFFER, m_render_buffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8,
m_width, m_height);
}
} // namespace Fan

48
src/framebuffer.hpp Normal file
View File

@@ -0,0 +1,48 @@
#ifndef FRAMEBUFFER_HPP_
#define FRAMEBUFFER_HPP_
#include <glad/gl.h>
#include "utils.hpp"
namespace Fan
{
class FrameBuffer
{
public:
static Rc<FrameBuffer> create(GLsizei width, GLsizei height);
FrameBuffer(GLuint id, GLsizei width, GLsizei height,
GLuint texture, GLuint render_buffer)
: m_id{id}
, m_width{width}
, m_height{height}
, m_texture{texture}
, m_render_buffer{render_buffer} {}
~FrameBuffer();
FrameBuffer(const FrameBuffer&) = delete;
FrameBuffer& operator=(const FrameBuffer&) = delete;
FrameBuffer(FrameBuffer&& other) noexcept;
FrameBuffer& operator=(FrameBuffer&& other) noexcept;
GLuint get_texture_id() const;
GLsizei get_width() const;
GLsizei get_height() const;
void bind() const;
void unbind() const;
void resize(GLsizei width, GLsizei height);
private:
GLuint m_id{};
GLsizei m_width{};
GLsizei m_height{};
GLuint m_texture{};
GLuint m_render_buffer{};
};
} // namespace Fan
#endif // FRAMEBUFFER_HPP_

58
src/light.hpp Normal file
View File

@@ -0,0 +1,58 @@
#ifndef FAN_LIGHT_HPP_
#define FAN_LIGHT_HPP_
#include <vector>
#include <glm/glm.hpp>
namespace Fan
{
struct DirectionalLight
{
glm::vec3 direction{-0.2f, -1.0f, -0.3f};
glm::vec3 ambient{0.05f, 0.05f, 0.05f};
glm::vec3 diffuse{0.4f, 0.4f, 0.4f};
glm::vec3 specular{0.5f, 0.5f, 0.5f};
};
struct PointLight
{
glm::vec3 position{0.0f, 0.0f, 0.0f};
float constant{1.0f};
float linear{0.09f};
float quadratic{0.032f};
glm::vec3 ambient{0.05f, 0.05f, 0.05f};
glm::vec3 diffuse{0.8f, 0.8f, 0.8f};
glm::vec3 specular{1.0f, 1.0f, 1.0f};
};
struct SpotLight
{
glm::vec3 position{0.0f, 0.0f, 0.0f};
glm::vec3 direction{0.0f, 0.0f, -1.0f};
float cut_off{glm::cos(glm::radians(12.5f))};
float outer_cut_off{glm::cos(glm::radians(15.0f))};
float constant{1.0f};
float linear{0.09f};
float quadratic{0.032f};
glm::vec3 ambient{0.0f, 0.0f, 0.0f};
glm::vec3 diffuse{1.0f, 1.0f, 1.0f};
glm::vec3 specular{1.0f, 1.0f, 1.0f};
};
struct LightEnvironment
{
DirectionalLight directional_light;
std::vector<PointLight> point_lights;
std::vector<SpotLight> spot_lights;
};
} // namespace Fan
#endif // FAN_LIGHT_HPP_

120
src/loader.cpp Normal file
View File

@@ -0,0 +1,120 @@
#include <filesystem>
#include <iostream>
#include <unordered_map>
#include <tiny_obj_loader.h>
#include "loader.hpp"
namespace Fan
{
struct VertexIndexHash {
size_t operator()(const tinyobj::index_t& index) const {
return ((std::hash<int>()(index.vertex_index) ^
(std::hash<int>()(index.normal_index) << 1)) >> 1) ^
(std::hash<int>()(index.texcoord_index) << 1);
}
};
struct VertexIndexEqual {
bool operator()(const tinyobj::index_t& a, const tinyobj::index_t& b) const {
return a.vertex_index == b.vertex_index &&
a.normal_index == b.normal_index &&
a.texcoord_index == b.texcoord_index;
}
};
Opt<Entity> load_obj(const std::string& file_path, Rc<Shader> shader)
{
namespace fs = std::filesystem;
tinyobj::attrib_t attrib;
std::vector<tinyobj::shape_t> shapes;
std::vector<tinyobj::material_t> materials;
std::string err;
fs::path parent_path = fs::path{file_path}.parent_path();
parent_path += fs::path::preferred_separator;
std::string base_dir = parent_path.string();
bool ok = tinyobj::LoadObj(&attrib, &shapes, &materials, &err,
file_path.c_str(), base_dir.c_str());
if (!ok || !err.empty()) {
std::cerr << "ERROR: LOAD_OBJ: Could not load " << file_path << std::endl << err;
return std::nullopt;
}
// Build the unified mesh
std::vector<Vertex> vertices;
std::vector<GLuint> indices;
std::unordered_map<tinyobj::index_t, GLuint,
VertexIndexHash, VertexIndexEqual> unique_vertices;
for (const auto& shape : shapes) {
for (const auto& index : shape.mesh.indices) {
if (unique_vertices.count(index) == 0) {
Vertex vertex{};
vertex.position = {
attrib.vertices[3 * index.vertex_index + 0],
attrib.vertices[3 * index.vertex_index + 1],
attrib.vertices[3 * index.vertex_index + 2]
};
if (index.normal_index >= 0) {
vertex.normal = {
attrib.normals[3 * index.normal_index + 0],
attrib.normals[3 * index.normal_index + 1],
attrib.normals[3 * index.normal_index + 2]
};
}
if (index.texcoord_index >= 0) {
vertex.texture_coords = {
attrib.texcoords[2 * index.texcoord_index + 0],
1.0f - attrib.texcoords[2 * index.texcoord_index + 1]
};
}
unique_vertices[index] = static_cast<GLuint>(vertices.size());
vertices.push_back(vertex);
}
indices.push_back(unique_vertices[index]);
}
}
auto mesh = Mesh::create(vertices, indices);
if (!mesh) {
std::cerr << "ERROR: LOAD_OBJ: Could not create mesh" << std::endl;
return std::nullopt;
}
auto material = make_rc<Material>();
material->shader = shader; // Assigned required shader
// If the .obj file had an .mtl file attached to it
if (!materials.empty()) {
// Take only the first material found
const tinyobj::material_t& mtl = materials[0];
if (!mtl.diffuse_texname.empty()) {
material->diffuse_map = Texture::create(base_dir + mtl.diffuse_texname);
if (!material->diffuse_map) {
std::cerr << "WARNING: LOAD_OBJ: Could not create diffuse texture" << std::endl;
}
}
if (!mtl.specular_texname.empty()) {
material->specular_map = Texture::create(base_dir + mtl.specular_texname);
if (!material->specular_map) {
std::cerr << "WARNING: LOAD_OBJ: Could not create specular texture" << std::endl;
}
}
material->shininess = mtl.shininess;
}
return Entity{mesh, material};
}
} // namespace Fan

16
src/loader.hpp Normal file
View File

@@ -0,0 +1,16 @@
#ifndef FAN_LOADER_HPP_
#define FAN_LOADER_HPP_
#include <string>
#include "entity.hpp"
#include "utils.hpp"
namespace Fan
{
Opt<Entity> load_obj(const std::string& file_path, Rc<Shader> shader);
} // namespace Fan
#endif // FAN_LOADER_HPP_

364
src/main.cpp Normal file
View File

@@ -0,0 +1,364 @@
#include <cstdio>
#include <vector>
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#define IMGUI_DEFINE_MATH_OPERATORS
#include <imgui.h>
#include <imgui_internal.h>
#include <fan.hpp>
using namespace Fan;
struct UserData
{
Camera& camera;
float delta_time{};
bool mouse_grab{};
float speed{CAMERA_SPEED};
float sensitivity{CAMERA_SENSITIVITY};
float last_mouse_x{};
float last_mouse_y{};
bool first_mouse{true};
bool show_debug{};
std::vector<Rc<Scene>> scenes{};
size_t selected_scene_index{};
};
void process_input(Window& window, Camera& camera, UserData& user_data);
void mouse_callback(double pos_x, double pos_y, void* user_data);
void setup_dockspace();
void draw_panel_window(Camera& camera, UserData& user_data);
void draw_viewport_window(FrameBuffer& framebuffer, Window& window, UserData& user_data);
std::vector<Vertex> get_cube_vertices();
template <typename... Args>
void overlay_text(float offset_x, float offset_y, ImVec4 color, const char* format, Args... args)
{
char buffer[256];
std::snprintf(buffer, sizeof(buffer), format, args...);
ImVec2 pos = ImGui::GetWindowPos() + ImVec2{offset_x, offset_y};
ImDrawList* draw_list = ImGui::GetWindowDrawList();
ImVec2 text_size = ImGui::CalcTextSize(buffer);
draw_list->AddRectFilled(pos - ImVec2{4, 2}, pos + text_size + ImVec2{4, 2}, IM_COL32(0, 0, 0, 160));
draw_list->AddText(pos, ImGui::ColorConvertFloat4ToU32(color), buffer);
}
int main()
{
/******************** Initialization ********************/
auto window = Window::create(WINDOW_WIDTH, WINDOW_HEIGHT, VERSION_STRING);
if (!window) return EXIT_FAILURE;
window->set_vsync(true);
Renderer::init();
Camera camera{{5.0f, 5.0f, 5.0f}};
camera.look_at({0.0f, 0.0f, 0.0f});
UserData user_data{camera};
window->set_callback_user_data(&user_data);
window->set_mouse_callback(mouse_callback);
/******************** Resource loading ********************/
auto shader = Shader::create("./src/shaders/default.vert", "./src/shaders/default.frag");
auto debug_shader = Shader::create("./src/shaders/debug.vert", "./src/shaders/debug.frag");
auto backpack = load_obj("./assets/backpack/backpack.obj", shader);
auto cube_mesh = Mesh::create(get_cube_vertices());
auto cube_texture = Texture::create("./assets/container.jpg");
auto default_mesh = Mesh::create(get_cube_vertices());
auto default_texture = Texture::create("./assets/debugempty.png");
auto framebuffer = FrameBuffer::create(window->get_width(), window->get_height());
if (!shader || !debug_shader
|| !backpack
|| !cube_mesh || !cube_texture
|| !default_mesh || !default_texture
|| !framebuffer) {
return EXIT_FAILURE;
}
/******************** Scene construction ********************/
// Backpack scene
Rc<Scene> backpack_scene = make_rc<Scene>();
user_data.scenes.push_back(backpack_scene);
backpack_scene->add_entity(*backpack);
auto default_material = make_rc<Material>();
default_material->shader = shader;
default_material->diffuse_map = default_texture;
Entity floor{cube_mesh, default_material};
floor.transform.position = {0.0f, -3.0f, 0.0f};
floor.transform.scale = {20.0f, 1.0f, 20.0f};
backpack_scene->add_entity(floor);
PointLight light_white;
light_white.position = glm::vec3(0.0f, 3.0f, 3.0f);
light_white.diffuse = glm::vec3(2.0f, 2.0f, 2.0f); // Bright white
light_white.specular = glm::vec3(2.0f, 2.0f, 2.0f); // White highlights
backpack_scene->light_environment.point_lights.push_back(light_white);
// Cubes scene
Rc<Scene> cubes_scene = make_rc<Scene>();
user_data.scenes.push_back(cubes_scene);
auto cube_material = make_rc<Material>();
cube_material->shader = shader;
cube_material->diffuse_map = cube_texture;
std::vector<glm::vec3> positions{
{ 0.0f, 0.0f, 0.0f}, { 2.0f, 5.0f, -15.0f}, {-1.5f, -2.2f, -2.5f},
{-3.8f, -2.0f, -12.3f}, { 2.4f, -0.4f, -3.5f}, {-1.7f, 3.0f, -7.5f},
{ 1.3f, -2.0f, -2.5f}, { 1.5f, 2.0f, -2.5f}, { 1.5f, 0.2f, -1.5f},
{-1.3f, 1.0f, -1.5f}
};
for (size_t i = 0; i < positions.size(); ++i) {
Entity entity{cube_mesh, cube_material};
entity.transform.position = positions[i];
entity.transform.set_rotation(glm::radians(20.0f * i), {1.0f, 0.3f, 0.5f});
cubes_scene->add_entity(entity);
}
PointLight light_warm;
light_warm.position = glm::vec3(0.0f, 2.0f, 2.0f);
light_warm.diffuse = glm::vec3(1.0f, 0.6f, 0.2f); // Orange
light_warm.specular = glm::vec3(1.0f, 0.8f, 0.5f);
PointLight light_cool;
light_cool.position = glm::vec3(-3.0f, 1.0f, -5.0f);
light_cool.diffuse = glm::vec3(0.2f, 0.5f, 1.0f); // Blue
light_cool.specular = glm::vec3(0.5f, 0.7f, 1.0f);
cubes_scene->light_environment.point_lights.push_back(light_warm);
cubes_scene->light_environment.point_lights.push_back(light_cool);
/******************** Main loop ********************/
while (!window->should_close()) {
window->begin();
window->update();
user_data.delta_time = window->get_delta_time();
process_input(*window, camera, user_data);
Renderer::set_clear_color({0.0f, 0.0f, 0.0f, 1.0f});
Renderer::clear();
// UI Layer
setup_dockspace();
draw_panel_window(camera, user_data);
draw_viewport_window(*framebuffer, *window, user_data);
// Scene Rendering Layer
const Scene& scene = *user_data.scenes[user_data.selected_scene_index];
int width = framebuffer->get_width();
int height = framebuffer->get_height();
framebuffer->bind();
Renderer::set_viewport(0, 0, width, height);
Renderer::clear();
Renderer::draw_scene(scene, camera, width, height);
if (user_data.show_debug) {
Renderer::draw_debug_wireframes(scene, camera, width, height,
debug_shader, default_mesh);
}
framebuffer->unbind();
window->end();
}
return EXIT_SUCCESS;
}
void process_input(Window& window, Camera& camera, UserData& user_data)
{
if (window.is_key_pressed(GLFW_KEY_ESCAPE)) window.set_should_close(true);
static bool wireframe = false;
if (window.is_key_pressed(GLFW_KEY_H)) {
wireframe = !wireframe;
Renderer::set_wireframe(wireframe);
}
static bool fullscreen = false;
if (window.is_key_pressed(GLFW_KEY_F11)) {
fullscreen = !fullscreen;
window.set_fullscreen(fullscreen);
}
if (window.is_key_pressed(GLFW_KEY_INSERT)) {
user_data.mouse_grab = !user_data.mouse_grab;
user_data.first_mouse = true;
window.set_mouse_grab(user_data.mouse_grab);
}
if (!user_data.mouse_grab) return;
float velocity = user_data.speed * user_data.delta_time * (window.is_key_down(GLFW_KEY_LEFT_SHIFT) ? 2.0f : 1.0f);
if (window.is_key_down(GLFW_KEY_W)) camera.position += camera.get_front() * velocity;
if (window.is_key_down(GLFW_KEY_S)) camera.position -= camera.get_front() * velocity;
if (window.is_key_down(GLFW_KEY_A)) camera.position -= camera.get_right() * velocity;
if (window.is_key_down(GLFW_KEY_D)) camera.position += camera.get_right() * velocity;
}
void mouse_callback(double pos_x, double pos_y, void* user_data)
{
auto* data = static_cast<UserData*>(user_data);
if (!data->mouse_grab) return;
if (data->first_mouse) {
data->last_mouse_x = pos_x;
data->last_mouse_y = pos_y;
data->first_mouse = false;
}
float delta_x = (pos_x - data->last_mouse_x) * data->sensitivity;
float delta_y = (data->last_mouse_y - pos_y) * data->sensitivity;
data->last_mouse_x = pos_x;
data->last_mouse_y = pos_y;
data->camera.rotate(delta_x, delta_y);
}
void setup_dockspace()
{
ImGuiID dockspace_id = ImGui::GetID("Dockspace");
ImGuiViewport* viewport = ImGui::GetMainViewport();
static bool first_time = true;
if (first_time) {
first_time = false;
ImGui::DockBuilderRemoveNode(dockspace_id);
ImGui::DockBuilderAddNode(dockspace_id, ImGuiDockNodeFlags_DockSpace);
ImGui::DockBuilderSetNodeSize(dockspace_id, viewport->WorkSize);
ImGuiID main_id = dockspace_id;
ImGuiID panel_id = ImGui::DockBuilderSplitNode(main_id, ImGuiDir_Left, 0.25f, nullptr, &main_id);
ImGui::DockBuilderDockWindow("Panel", panel_id);
ImGui::DockBuilderDockWindow("Viewport", main_id);
ImGui::DockBuilderFinish(dockspace_id);
}
ImGui::DockSpaceOverViewport(dockspace_id, viewport, ImGuiDockNodeFlags_None);
}
void draw_panel_window(Camera& camera, UserData& user_data)
{
static auto logo = Texture::create("assets/logo/logo.png");
ImGui::Begin("Panel");
if (logo) ImGui::Image(logo->get_id(), {50.0f, 50.0f});
ImGui::SameLine();
ImGui::SetCursorPosY(ImGui::GetCursorPosY() + (50.0f - ImGui::GetTextLineHeight()) * 0.5f);
ImGui::Text("Fan Engine");
ImGui::Separator();
ImGui::Text("Press INSERT to toggle camera controls");
ImGui::SliderFloat("Camera X", &camera.position.x, -10.0f, 10.0f);
ImGui::SliderFloat("Camera Y", &camera.position.y, -10.0f, 10.0f);
ImGui::SliderFloat("Camera Z", &camera.position.z, -10.0f, 10.0f);
ImGui::Separator();
ImGui::Checkbox("Show Debug Wireframes", &user_data.show_debug);
ImGui::Separator();
ImGui::Text("Scene Selector");
for (size_t i = 0; i < user_data.scenes.size(); ++i) {
char label[64];
ImFormatString(label, IM_ARRAYSIZE(label), "Scene %zu", i);
if (ImGui::RadioButton(label, user_data.selected_scene_index == i)) {
user_data.selected_scene_index = i;
}
}
ImGui::End();
}
void draw_viewport_window(FrameBuffer& framebuffer, Window& window, UserData& user_data)
{
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2{0.0f, 0.0f});
ImGui::Begin("Viewport");
ImVec2 size = ImGui::GetContentRegionAvail();
if (size.x > 0 && size.y > 0) {
if (size.x != framebuffer.get_width() || size.y != framebuffer.get_height()) {
framebuffer.resize(size.x, size.y);
}
ImGui::Image(framebuffer.get_texture_id(), size, ImVec2{0.0f, 1.0f}, ImVec2{1.0f, 0.0f});
}
// Overlays
float fps = window.get_delta_time() > 0.0f ? 1.0f / window.get_delta_time() : 0.0f;
overlay_text(20.0f, 35.0f, {0.0f, 1.0f, 0.0f, 1.0f}, "%s", VERSION_STRING);
overlay_text(20.0f, 52.0f, {0.0f, 1.0f, 0.0f, 1.0f}, "FPS: %.1f", fps);
overlay_text(20.0f, 69.0f, {0.0f, 1.0f, 0.0f, 1.0f}, "Frame time: %.2f ms", window.get_delta_time());
if (user_data.mouse_grab) { overlay_text(20.0f, 86.0f, {0.0f, 1.0f, 0.0f, 1.0f}, "%s", "INPUT LOCKED"); }
ImGui::End();
ImGui::PopStyleVar();
}
std::vector<Vertex> get_cube_vertices()
{
return {
// Back Face
{{ 0.5f, -0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 0.0f, 0.0f}},
{{-0.5f, -0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 1.0f, 0.0f}},
{{-0.5f, 0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 1.0f, 1.0f}},
{{-0.5f, 0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 1.0f, 1.0f}},
{{ 0.5f, 0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 0.0f, 1.0f}},
{{ 0.5f, -0.5f, -0.5f}, { 0.0f, 0.0f, -1.0f}, { 0.0f, 0.0f}},
// Front Face
{{-0.5f, -0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 0.0f, 0.0f}},
{{ 0.5f, -0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 1.0f, 0.0f}},
{{ 0.5f, 0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 1.0f, 1.0f}},
{{ 0.5f, 0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 1.0f, 1.0f}},
{{-0.5f, 0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 0.0f, 1.0f}},
{{-0.5f, -0.5f, 0.5f}, { 0.0f, 0.0f, 1.0f}, { 0.0f, 0.0f}},
// Left Face
{{-0.5f, -0.5f, -0.5f}, {-1.0f, 0.0f, 0.0f}, { 0.0f, 0.0f}},
{{-0.5f, -0.5f, 0.5f}, {-1.0f, 0.0f, 0.0f}, { 1.0f, 0.0f}},
{{-0.5f, 0.5f, 0.5f}, {-1.0f, 0.0f, 0.0f}, { 1.0f, 1.0f}},
{{-0.5f, 0.5f, 0.5f}, {-1.0f, 0.0f, 0.0f}, { 1.0f, 1.0f}},
{{-0.5f, 0.5f, -0.5f}, {-1.0f, 0.0f, 0.0f}, { 0.0f, 1.0f}},
{{-0.5f, -0.5f, -0.5f}, {-1.0f, 0.0f, 0.0f}, { 0.0f, 0.0f}},
// Right Face
{{ 0.5f, -0.5f, 0.5f}, { 1.0f, 0.0f, 0.0f}, { 0.0f, 0.0f}},
{{ 0.5f, -0.5f, -0.5f}, { 1.0f, 0.0f, 0.0f}, { 1.0f, 0.0f}},
{{ 0.5f, 0.5f, -0.5f}, { 1.0f, 0.0f, 0.0f}, { 1.0f, 1.0f}},
{{ 0.5f, 0.5f, -0.5f}, { 1.0f, 0.0f, 0.0f}, { 1.0f, 1.0f}},
{{ 0.5f, 0.5f, 0.5f}, { 1.0f, 0.0f, 0.0f}, { 0.0f, 1.0f}},
{{ 0.5f, -0.5f, 0.5f}, { 1.0f, 0.0f, 0.0f}, { 0.0f, 0.0f}},
// Bottom Face
{{-0.5f, -0.5f, -0.5f}, { 0.0f, -1.0f, 0.0f}, { 0.0f, 1.0f}},
{{ 0.5f, -0.5f, -0.5f}, { 0.0f, -1.0f, 0.0f}, { 1.0f, 1.0f}},
{{ 0.5f, -0.5f, 0.5f}, { 0.0f, -1.0f, 0.0f}, { 1.0f, 0.0f}},
{{ 0.5f, -0.5f, 0.5f}, { 0.0f, -1.0f, 0.0f}, { 1.0f, 0.0f}},
{{-0.5f, -0.5f, 0.5f}, { 0.0f, -1.0f, 0.0f}, { 0.0f, 0.0f}},
{{-0.5f, -0.5f, -0.5f}, { 0.0f, -1.0f, 0.0f}, { 0.0f, 1.0f}},
// Top Face
{{-0.5f, 0.5f, 0.5f}, { 0.0f, 1.0f, 0.0f}, { 0.0f, 0.0f}},
{{ 0.5f, 0.5f, 0.5f}, { 0.0f, 1.0f, 0.0f}, { 1.0f, 0.0f}},
{{ 0.5f, 0.5f, -0.5f}, { 0.0f, 1.0f, 0.0f}, { 1.0f, 1.0f}},
{{ 0.5f, 0.5f, -0.5f}, { 0.0f, 1.0f, 0.0f}, { 1.0f, 1.0f}},
{{-0.5f, 0.5f, -0.5f}, { 0.0f, 1.0f, 0.0f}, { 0.0f, 1.0f}},
{{-0.5f, 0.5f, 0.5f}, { 0.0f, 1.0f, 0.0f}, { 0.0f, 0.0f}}
};
}

30
src/material.cpp Normal file
View File

@@ -0,0 +1,30 @@
#include "material.hpp"
namespace Fan
{
void Material::bind() const
{
shader->use();
// Diffuse (slot 0)
if (diffuse_map) {
diffuse_map->bind(0);
} else {
Texture::unbind(0);
}
shader->set_int("u_material.diffuse", 0);
// Specular (slot 1)
if (specular_map) {
specular_map->bind(1);
} else {
Texture::unbind(1);
}
shader->set_int("u_material.specular", 1);
// Shininess
shader->set_float("u_material.shininess", shininess);
}
} // namespace Fan

22
src/material.hpp Normal file
View File

@@ -0,0 +1,22 @@
#ifndef FAN_MATERIAL_HPP_
#define FAN_MATERIAL_HPP_
#include "shader.hpp"
#include "texture.hpp"
namespace Fan
{
struct Material
{
Rc<Shader> shader;
Rc<Texture> diffuse_map;
Rc<Texture> specular_map;
float shininess{32.0f};
void bind() const;
};
} // namespace Fan
#endif // FAN_MATERIAL_HPP_

86
src/mesh.cpp Normal file
View File

@@ -0,0 +1,86 @@
#include <cstddef>
#include <utility>
#include "mesh.hpp"
namespace Fan
{
Rc<Mesh> Mesh::create(const std::vector<Vertex>& vertices,
const std::vector<GLuint>& indices/* = {}*/)
{
GLuint VBO{}, VAO{}, EBO{};
bool has_indices = !indices.empty();
glGenBuffers(1, &VBO);
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);
// Upload vertex data
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(vertices[0]),
&vertices[0], GL_STATIC_DRAW);
// Upload index data
if (has_indices) {
glGenBuffers(1, &EBO);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(indices[0]),
&indices[0], GL_STATIC_DRAW);
}
// Define vertex data layout
GLsizei stride = sizeof(Vertex);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, stride, (void*)offsetof(Vertex, position));
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, stride, (void*)offsetof(Vertex, normal));
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, stride, (void*)offsetof(Vertex, texture_coords));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
return make_rc<Mesh>(vertices, indices, has_indices, VBO, VAO, EBO);
}
Mesh::~Mesh()
{
glDeleteBuffers(1, &m_EBO);
glDeleteBuffers(1, &m_VBO);
glDeleteVertexArrays(1, &m_VAO);
}
Mesh::Mesh(Mesh&& other) noexcept
: m_vertices(std::move(other.m_vertices))
, m_indices(std::move(other.m_indices))
, m_has_indices(std::exchange(other.m_has_indices, false))
, m_VBO(std::exchange(other.m_VBO, 0))
, m_VAO(std::exchange(other.m_VAO, 0))
, m_EBO(std::exchange(other.m_EBO, 0))
{
}
Mesh& Mesh::operator=(Mesh&& other) noexcept
{
if (this == &other) { return *this; }
std::swap(m_vertices, other.m_vertices);
std::swap(m_indices, other.m_indices);
std::swap(m_has_indices, other.m_has_indices);
std::swap(m_VBO, other.m_VBO);
std::swap(m_VAO, other.m_VAO);
std::swap(m_EBO, other.m_EBO);
return *this;
}
void Mesh::draw() const
{
glBindVertexArray(m_VAO);
if (m_has_indices) {
glDrawElements(GL_TRIANGLES, m_indices.size(), GL_UNSIGNED_INT, 0);
} else {
glDrawArrays(GL_TRIANGLES, 0, m_vertices.size());
}
}
} // namespace Fan

49
src/mesh.hpp Normal file
View File

@@ -0,0 +1,49 @@
#ifndef FAN_MESH_HPP_
#define FAN_MESH_HPP_
#include <vector>
#include <glad/gl.h>
#include "vertex.hpp"
#include "utils.hpp"
namespace Fan
{
class Mesh
{
public:
static Rc<Mesh> create(const std::vector<Vertex>& vertices,
const std::vector<GLuint>& indices = {});
Mesh(const std::vector<Vertex>& vertices,
const std::vector<GLuint>& indices,
bool has_indices,
GLuint VBO, GLuint VAO, GLuint EBO)
: m_vertices(vertices)
, m_indices(indices)
, m_has_indices(has_indices)
, m_VBO(VBO)
, m_VAO(VAO)
, m_EBO(EBO) {}
~Mesh();
Mesh(const Mesh&) = delete;
Mesh& operator=(const Mesh&) = delete;
Mesh(Mesh&& other) noexcept;
Mesh& operator=(Mesh&& other) noexcept;
void draw() const;
private:
std::vector<Vertex> m_vertices{};
std::vector<GLuint> m_indices{};
bool m_has_indices{};
GLuint m_VBO{};
GLuint m_VAO{};
GLuint m_EBO{};
};
} // namespace Fan
#endif // FAN_MESH_HPP_

166
src/renderer.cpp Normal file
View File

@@ -0,0 +1,166 @@
#include <algorithm>
#include <string>
#include <glad/gl.h>
#include "renderer.hpp"
namespace Fan
{
void Renderer::init()
{
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glFrontFace(GL_CCW);
}
void Renderer::set_viewport(int x, int y, int width, int height)
{
glViewport(x, y, width, height);
}
void Renderer::set_clear_color(const glm::vec4& color)
{
glClearColor(color.r, color.g, color.b, color.a);
}
void Renderer::set_wireframe(bool enabled)
{
glPolygonMode(GL_FRONT_AND_BACK, enabled ? GL_LINE : GL_FILL);
}
void Renderer::clear()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
}
void Renderer::draw_scene(const Scene& scene, const Camera& camera,
int screen_width, int screen_height)
{
glm::mat4 view_projection = camera.get_view_projection_matrix(screen_width, screen_height);
GLuint last_shader_id = 0;
// TODO: Order entities by material to minimize uniform uploads
for (const Entity& entity : scene.get_entities()) {
if (!entity.mesh || !entity.material || !entity.material->shader) { continue; }
Rc<Shader> shader = entity.material->shader;
GLuint current_shader_id = shader->get_id();
// Only upload scene uniforms if the shader changed
if (current_shader_id != last_shader_id) {
shader->use();
// Upload camera uniforms
shader->set_mat4("u_view_projection", view_projection);
shader->set_vec3("u_view_pos", camera.position);
// Upload lighting uniforms
const LightEnvironment& env = scene.light_environment;
shader->set_vec3("u_directional_light.direction", env.directional_light.direction);
shader->set_vec3("u_directional_light.ambient", env.directional_light.ambient);
shader->set_vec3("u_directional_light.diffuse", env.directional_light.diffuse);
shader->set_vec3("u_directional_light.specular", env.directional_light.specular);
// Note: current limit is set to MAX_POINT_LIGHT_COUNT (8)
// TODO: Define this limits in a common header file
int point_count = std::min(static_cast<int>(env.point_lights.size()), 8);
shader->set_int("u_point_light_count", point_count);
for (int i = 0; i < point_count; ++i) {
std::string prefix = "u_point_lights[" + std::to_string(i) + "].";
shader->set_vec3(prefix + "position", env.point_lights[i].position);
shader->set_float(prefix + "constant", env.point_lights[i].constant);
shader->set_float(prefix + "linear", env.point_lights[i].linear);
shader->set_float(prefix + "quadratic", env.point_lights[i].quadratic);
shader->set_vec3(prefix + "ambient", env.point_lights[i].ambient);
shader->set_vec3(prefix + "diffuse", env.point_lights[i].diffuse);
shader->set_vec3(prefix + "specular", env.point_lights[i].specular);
}
// Note: current limit is set to MAX_SPOT_LIGHT_COUNT (8)
// TODO: Define this limits in a common header file
int spot_count = std::min(static_cast<int>(env.spot_lights.size()), 8);
shader->set_int("u_spot_light_count", spot_count);
for (int i = 0; i < spot_count; ++i) {
std::string prefix = "u_spot_lights[" + std::to_string(i) + "].";
shader->set_vec3(prefix + "position", env.spot_lights[i].position);
shader->set_vec3(prefix + "direction", env.spot_lights[i].direction);
shader->set_float(prefix + "cut_off", env.spot_lights[i].cut_off);
shader->set_float(prefix + "outer_cut_off", env.spot_lights[i].outer_cut_off);
shader->set_float(prefix + "constant", env.spot_lights[i].constant);
shader->set_float(prefix + "linear", env.spot_lights[i].linear);
shader->set_float(prefix + "quadratic", env.spot_lights[i].quadratic);
shader->set_vec3(prefix + "ambient", env.spot_lights[i].ambient);
shader->set_vec3(prefix + "diffuse", env.spot_lights[i].diffuse);
shader->set_vec3(prefix + "specular", env.spot_lights[i].specular);
}
last_shader_id = current_shader_id;
}
// Bind the specific textures and the shininess float
entity.material->bind();
// Upload the model matrix to transform the specific object
shader->set_mat4("u_model", entity.transform.get_model_matrix());
// Dispatch the draw call
entity.mesh->draw();
}
}
void Renderer::draw_debug_wireframes(const Scene& scene, const Camera& camera,
int screen_width, int screen_height,
const Rc<Shader>& debug_shader,
const Rc<Mesh>& default_mesh)
{
debug_shader->use();
debug_shader->set_mat4("u_view_projection", camera.get_view_projection_matrix(screen_width, screen_height));
// Force wireframe mode and disable depth testing so we can see through objects
set_wireframe(true);
glDisable(GL_DEPTH_TEST);
// Draw all standard entities (green)
debug_shader->set_vec3("u_color", glm::vec3(0.0f, 0.7f, 0.0f));
for (const Entity& entity : scene.get_entities()) {
// If an entity has no mesh, use the default debug mesh
auto mesh = entity.mesh ? entity.mesh : default_mesh;
debug_shader->set_mat4("u_model", entity.transform.get_model_matrix());
mesh->draw();
}
// Draw point lights (yellow)
debug_shader->set_vec3("u_color", glm::vec3(0.7f, 0.7f, 0.0f));
for (const PointLight& light : scene.light_environment.point_lights) {
glm::mat4 model = glm::translate(glm::mat4(1.0f), light.position);
model = glm::scale(model, glm::vec3(0.2f));
debug_shader->set_mat4("u_model", model);
default_mesh->draw();
}
// Draw spot lights (cyan)
debug_shader->set_vec3("u_color", glm::vec3(0.0f, 0.7f, 0.7f));
for (const SpotLight& light : scene.light_environment.spot_lights) {
glm::mat4 model = glm::translate(glm::mat4(1.0f), light.position);
model = glm::scale(model, glm::vec3(0.2f));
debug_shader->set_mat4("u_model", model);
default_mesh->draw();
}
// Restore state
glEnable(GL_DEPTH_TEST);
set_wireframe(false);
}
} // namespace Fan

30
src/renderer.hpp Normal file
View File

@@ -0,0 +1,30 @@
#ifndef FAN_RENDERER_HPP_
#define FAN_RENDERER_HPP_
#include "scene.hpp"
#include "camera.hpp"
namespace Fan
{
class Renderer
{
public:
static void init();
static void set_viewport(int x, int y, int width, int height);
static void set_clear_color(const glm::vec4& color);
static void set_wireframe(bool enabled);
static void clear();
static void draw_scene(const Scene& scene, const Camera& camera,
int screen_width, int screen_height);
static void draw_debug_wireframes(const Scene& scene, const Camera& camera,
int screen_width, int screen_height,
const Rc<Shader>& debug_shader,
const Rc<Mesh>& default_mesh);
};
} // namespace Fan
#endif // FAN_RENDERER_HPP_

16
src/scene.cpp Normal file
View File

@@ -0,0 +1,16 @@
#include "scene.hpp"
namespace Fan
{
void Scene::add_entity(const Entity& entity)
{
m_entities.push_back(entity);
}
const std::vector<Entity>& Scene::get_entities() const
{
return m_entities;
}
} // namespace Fan

27
src/scene.hpp Normal file
View File

@@ -0,0 +1,27 @@
#ifndef FAN_SCENE_HPP_
#define FAN_SCENE_HPP_
#include <vector>
#include "entity.hpp"
#include "light.hpp"
namespace Fan
{
class Scene
{
public:
LightEnvironment light_environment{};
void add_entity(const Entity& entity);
const std::vector<Entity>& get_entities() const;
private:
std::vector<Entity> m_entities{};
};
} // namespace Fan
#endif // FAN_SCENE_HPP_

153
src/shader.cpp Normal file
View File

@@ -0,0 +1,153 @@
#include <iostream>
#include <utility>
#include <glm/gtc/type_ptr.hpp>
#include "shader.hpp"
#include "utils.hpp"
namespace Fan
{
Rc<Shader> Shader::create(const std::string& vertex_shader_path,
const std::string& fragment_shader_path)
{
auto vertex_shader = compile_shader(vertex_shader_path, GL_VERTEX_SHADER);
if (!vertex_shader) {
return nullptr;
}
auto fragment_shader = compile_shader(fragment_shader_path, GL_FRAGMENT_SHADER);
if (!fragment_shader) {
glDeleteShader(*vertex_shader);
return nullptr;
}
GLuint shader_program = glCreateProgram();
glAttachShader(shader_program, *vertex_shader);
glAttachShader(shader_program, *fragment_shader);
glLinkProgram(shader_program);
glDeleteShader(*vertex_shader);
glDeleteShader(*fragment_shader);
GLint success;
glGetProgramiv(shader_program, GL_LINK_STATUS, &success);
if (!success) {
GLint log_length = 0;
glGetProgramiv(shader_program, GL_INFO_LOG_LENGTH, &log_length);
if (log_length > 0) {
std::string log(log_length, ' ');
glGetProgramInfoLog(shader_program, log_length, nullptr, &log[0]);
std::cerr << "ERROR: SHADER: Could not link shader program: " << log << std::endl;
}
glDeleteProgram(shader_program);
return nullptr;
}
return make_rc<Shader>(shader_program);
}
Shader::~Shader()
{
glDeleteProgram(m_id);
}
Shader::Shader(Shader&& other) noexcept
: m_id(std::exchange(other.m_id, 0))
{
}
Shader& Shader::operator=(Shader&& other) noexcept
{
if (this == &other) { return *this; }
std::swap(m_id, other.m_id);
return *this;
}
GLuint Shader::get_id() const
{
return m_id;
}
GLint Shader::get_location(const std::string &name)
{
GLint location = glGetUniformLocation(m_id, name.c_str());
if (location == -1) {
std::cerr << "WARNING: SHADER: uniform " << name << " not found" << std::endl;
}
return location;
}
void Shader::set_int(const std::string& name, GLint value)
{
glUniform1i(get_location(name), value);
}
void Shader::set_float(const std::string& name, float value)
{
glUniform1f(get_location(name), value);
}
void Shader::set_vec3(const std::string& name, float x, float y, float z)
{
glUniform3f(get_location(name), x, y, z);
}
void Shader::set_vec3(const std::string& name, const glm::vec3& value)
{
glUniform3f(get_location(name), value.x, value.y, value.z);
}
void Shader::set_mat4(const std::string& name, const glm::mat4& value)
{
GLint location = get_location(name);
glUniformMatrix4fv(location, 1, GL_FALSE, glm::value_ptr(value));
}
Opt<GLuint> Shader::compile_shader(const std::string& source_path,
GLenum shader_type)
{
auto shader_source = read_entire_file(source_path);
if (!shader_source) {
std::cerr << "ERROR: SHADER: Could not read shader " << source_path << std::endl;
return std::nullopt;
}
GLuint shader = glCreateShader(shader_type);
const char *shader_source_str = shader_source->c_str();
glShaderSource(shader, 1, &shader_source_str, nullptr);
glCompileShader(shader);
GLint success;
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
if (!success) {
GLint log_length = 0;
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length);
if (log_length > 0) {
std::string log(log_length, ' ');
glGetShaderInfoLog(shader, log_length, nullptr, &log[0]);
std::cerr << "ERROR: SHADER: Could not compile shader: " << log << std::endl;
}
glDeleteShader(shader);
return std::nullopt;
}
return shader;
}
void Shader::use() const
{
if (m_id == 0) {
return;
}
glUseProgram(m_id);
}
} // namespace Fan

47
src/shader.hpp Normal file
View File

@@ -0,0 +1,47 @@
#ifndef FAN_SHADER_HPP_
#define FAN_SHADER_HPP_
#include <string>
#include <glad/gl.h>
#include <glm/glm.hpp>
#include "utils.hpp"
namespace Fan
{
class Shader
{
public:
static Rc<Shader> create(const std::string& vertex_path,
const std::string& fragment_path);
Shader(GLuint id) : m_id{id} {}
~Shader();
Shader(const Shader&) = delete;
Shader& operator=(const Shader&) = delete;
Shader(Shader&& other) noexcept;
Shader& operator=(Shader&& other) noexcept;
GLuint get_id() const;
GLint get_location(const std::string &name);
// Uniform helpers
void set_int(const std::string& name, GLint value);
void set_float(const std::string& name, float value);
void set_vec3(const std::string& name, float x, float y, float z);
void set_vec3(const std::string& name, const glm::vec3& value);
void set_mat4(const std::string& name, const glm::mat4& value);
void use() const;
private:
GLuint m_id{};
static Opt<GLuint> compile_shader(const std::string& source_path,
GLenum shader_type);
};
} // namespace Fan
#endif // FAN_SHADER_HPP_

9
src/shaders/debug.frag Normal file
View File

@@ -0,0 +1,9 @@
#version 330 core
out vec4 frag_color;
uniform vec3 u_color;
void main() {
frag_color = vec4(u_color, 1.0);
}

11
src/shaders/debug.vert Normal file
View File

@@ -0,0 +1,11 @@
#version 330 core
layout (location = 0) in vec3 a_position;
uniform mat4 u_model;
uniform mat4 u_view_projection;
void main()
{
gl_Position = u_view_projection * u_model * vec4(a_position, 1.0);
}

140
src/shaders/default.frag Normal file
View File

@@ -0,0 +1,140 @@
#version 330 core
struct Material
{
sampler2D diffuse;
sampler2D specular;
float shininess;
};
struct DirectionalLight
{
vec3 direction;
vec3 ambient;
vec3 diffuse;
vec3 specular;
};
struct PointLight {
vec3 position;
float constant;
float linear;
float quadratic;
vec3 ambient;
vec3 diffuse;
vec3 specular;
};
struct SpotLight {
vec3 position;
vec3 direction;
float cut_off;
float outer_cut_off;
float constant;
float linear;
float quadratic;
vec3 ambient;
vec3 diffuse;
vec3 specular;
};
in vec3 frag_position;
in vec3 normal;
in vec2 texture_coords;
out vec4 frag_color;
uniform vec3 u_view_pos;
uniform Material u_material;
uniform DirectionalLight u_directional_light;
#define MAX_POINT_LIGHT_COUNT 8
uniform PointLight u_point_lights[MAX_POINT_LIGHT_COUNT];
uniform int u_point_light_count;
#define MAX_SPOT_LIGHT_COUNT 8
uniform SpotLight u_spot_lights[MAX_SPOT_LIGHT_COUNT];
uniform int u_spot_light_count;
vec3 calculate_directional_light(DirectionalLight light, vec3 normal, vec3 view_dir);
vec3 calculate_point_light(PointLight light, vec3 normal, vec3 frag_position, vec3 view_dir);
vec3 calculate_spot_light(SpotLight light, vec3 normal, vec3 frag_position, vec3 view_dir);
void main()
{
vec3 norm = normalize(normal);
vec3 view_dir = normalize(u_view_pos - frag_position);
vec3 result = calculate_directional_light(u_directional_light, norm, view_dir);
for (int i = 0; i < u_point_light_count; ++i) {
result += calculate_point_light(u_point_lights[i], norm, frag_position, view_dir);
}
for (int i = 0; i < u_spot_light_count; ++i) {
result += calculate_spot_light(u_spot_lights[i], norm, frag_position, view_dir);
}
frag_color = vec4(result, 1.0);
}
vec3 calculate_directional_light(DirectionalLight light, vec3 normal, vec3 view_dir)
{
vec3 light_dir = normalize(-light.direction);
float diff = max(dot(normal, light_dir), 0.0);
vec3 reflect_dir = reflect(-light_dir, normal);
float spec = pow(max(dot(view_dir, reflect_dir), 0.0), u_material.shininess);
vec3 ambient = light.ambient * vec3(texture(u_material.diffuse, texture_coords));
vec3 diffuse = light.diffuse * diff * vec3(texture(u_material.diffuse, texture_coords));
vec3 specular = light.specular * spec * vec3(texture(u_material.specular, texture_coords));
return ambient + diffuse + specular;
}
vec3 calculate_point_light(PointLight light, vec3 normal, vec3 frag_position, vec3 view_dir)
{
vec3 light_dir = normalize(light.position - frag_position);
float diff = max(dot(normal, light_dir), 0.0);
vec3 reflect_dir = reflect(-light_dir, normal);
float spec = pow(max(dot(view_dir, reflect_dir), 0.0), u_material.shininess);
float dist = length(light.position - frag_position);
float attenuation = 1.0 / (light.constant + light.linear * dist + light.quadratic * (dist * dist));
vec3 ambient = light.ambient * vec3(texture(u_material.diffuse, texture_coords));
vec3 diffuse = light.diffuse * diff * vec3(texture(u_material.diffuse, texture_coords));
vec3 specular = light.specular * spec * vec3(texture(u_material.specular, texture_coords));
ambient *= attenuation;
diffuse *= attenuation;
specular *= attenuation;
return ambient + diffuse + specular;
}
vec3 calculate_spot_light(SpotLight light, vec3 normal, vec3 frag_position, vec3 view_dir)
{
vec3 light_dir = normalize(light.position - frag_position);
float diff = max(dot(normal, light_dir), 0.0);
vec3 reflect_dir = reflect(-light_dir, normal);
float spec = pow(max(dot(view_dir, reflect_dir), 0.0), u_material.shininess);
float dist = length(light.position - frag_position);
float attenuation = 1.0 / (light.constant + light.linear * dist + light.quadratic * (dist* dist));
float theta = dot(light_dir, normalize(-light.direction));
float epsilon = light.cut_off - light.outer_cut_off;
float intensity = clamp((theta - light.outer_cut_off) / epsilon, 0.0, 1.0);
vec3 ambient = light.ambient * vec3(texture(u_material.diffuse, texture_coords));
vec3 diffuse = light.diffuse * diff * vec3(texture(u_material.diffuse, texture_coords));
vec3 specular = light.specular * spec * vec3(texture(u_material.specular, texture_coords));
ambient *= attenuation * intensity;
diffuse *= attenuation * intensity;
specular *= attenuation * intensity;
return ambient + diffuse + specular;
}

24
src/shaders/default.vert Normal file
View File

@@ -0,0 +1,24 @@
#version 330 core
layout (location = 0) in vec3 a_position;
layout (location = 1) in vec3 a_normal;
layout (location = 2) in vec2 a_texture_coords;
out vec3 frag_position;
out vec3 normal;
out vec2 texture_coords;
uniform mat4 u_model;
uniform mat4 u_view_projection;
void main()
{
gl_Position = u_view_projection * u_model * vec4(a_position, 1.0);
frag_position = vec3(u_model * vec4(a_position, 1.0));
mat3 normal_matrix = mat3(transpose(inverse(u_model))); // TODO: Calculate on CPU for performance
normal = normal_matrix * a_normal;
texture_coords = a_texture_coords;
}

86
src/texture.cpp Normal file
View File

@@ -0,0 +1,86 @@
#include <iostream>
#include <stb_image.h>
#include "texture.hpp"
namespace Fan
{
Rc<Texture> Texture::create(const std::string& image_path)
{
stbi_set_flip_vertically_on_load(true);
int width, height, n_channels;
stbi_uc *image_data = stbi_load(image_path.c_str(), &width, &height, &n_channels, STBI_rgb_alpha);
if (image_data == NULL) {
std::cerr << "ERROR: TEXTURE: Could not load image " << image_path << std::endl;
return nullptr;
}
GLuint texture;
glGenTextures(1, &texture);
if (glGetError() != GL_NO_ERROR) {
std::cerr << "ERROR: TEXTURE: glGenTextures" << std::endl;
stbi_image_free(image_data);
return nullptr;
}
glBindTexture(GL_TEXTURE_2D, texture);
// Texture wrapping parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// Texture filtering parameters
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
glGenerateMipmap(GL_TEXTURE_2D);
stbi_image_free(image_data);
return make_rc<Texture>(texture);
}
Texture::~Texture()
{
glDeleteTextures(1, &m_id);
}
Texture::Texture(Texture&& other) noexcept
{
m_id = other.m_id;
other.m_id = 0;
}
Texture& Texture::operator=(Texture&& other) noexcept
{
if (this == &other) {
return *this;
}
glDeleteTextures(1, &m_id);
m_id = other.m_id;
other.m_id = 0;
return *this;
}
GLuint Texture::get_id() const
{
return m_id;
}
void Texture::bind(GLuint slot/* = 0*/) const
{
glActiveTexture(GL_TEXTURE0 + slot);
glBindTexture(GL_TEXTURE_2D, m_id);
}
void Texture::unbind(GLuint slot/* = 0*/)
{
glActiveTexture(GL_TEXTURE0 + slot);
glBindTexture(GL_TEXTURE_2D, 0);
}
} // namespace Fan

35
src/texture.hpp Normal file
View File

@@ -0,0 +1,35 @@
#ifndef FAN_TEXTURE_HPP_
#define FAN_TEXTURE_HPP_
#include <string>
#include <glad/gl.h>
#include "utils.hpp"
namespace Fan
{
class Texture
{
public:
static Rc<Texture> create(const std::string& image_path);
Texture(GLuint id) : m_id{id} {}
~Texture();
Texture(const Texture&) = delete;
Texture& operator=(const Texture&) = delete;
Texture(Texture&& other) noexcept;
Texture& operator=(Texture&& other) noexcept;
GLuint get_id() const;
void bind(GLuint slot = 0) const;
static void unbind(GLuint slot = 0);
private:
GLuint m_id{};
};
} // namespace Fan
#endif // FAN_TEXTURE_HPP_

49
src/transform.cpp Normal file
View File

@@ -0,0 +1,49 @@
#include "transform.hpp"
namespace Fan
{
void Transform::rotate(float angle_rad, const glm::vec3& axis)
{
rotation = glm::angleAxis(angle_rad, glm::normalize(axis)) * rotation;
}
glm::mat4 Transform::get_model_matrix() const
{
glm::mat4 model = glm::translate(glm::mat4(1.0f), position);
model *= glm::mat4_cast(rotation);
model = glm::scale(model, scale);
return model;
}
glm::vec3 Transform::get_euler_angles() const
{
return glm::eulerAngles(rotation);
}
glm::vec3 Transform::get_forward() const
{
return rotation * glm::vec3(0.0f, 0.0f, -1.0f);
}
glm::vec3 Transform::get_right() const
{
return rotation * glm::vec3(1.0f, 0.0f, 0.0f);
}
glm::vec3 Transform::get_up() const
{
return rotation * glm::vec3(0.0f, 1.0f, 0.0f);
}
void Transform::set_rotation(float angle_rad, const glm::vec3& axis)
{
rotation = glm::angleAxis(angle_rad, glm::normalize(axis));
}
void Transform::set_euler_angles(const glm::vec3& euler_rad)
{
rotation = glm::quat(euler_rad);
}
} // namespace Fan

45
src/transform.hpp Normal file
View File

@@ -0,0 +1,45 @@
#ifndef FAN_TRANSFORM_HPP_
#define FAN_TRANSFORM_HPP_
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/quaternion.hpp>
#include <glm/gtx/quaternion.hpp>
namespace Fan
{
struct Transform
{
glm::vec3 position{0.0f, 0.0f, 0.0f};
glm::quat rotation{1.0f, 0.0f, 0.0f, 0.0f};
glm::vec3 scale{1.0f, 1.0f, 1.0f};
Transform() = default;
explicit Transform(const glm::vec3& position)
: position(position) {}
// Rotate relative to current orientation
void rotate(float angle_rad, const glm::vec3& axis);
// Get the model matrix of the transform
glm::mat4 get_model_matrix() const;
// Get Euler angles in radians
glm::vec3 get_euler_angles() const;
// Get direction vectors
glm::vec3 get_forward() const;
glm::vec3 get_right() const;
glm::vec3 get_up() const;
// Set rotation using axis-angle (angle in radians)
void set_rotation(float angle_rad, const glm::vec3& axis);
// Set rotation using Euler angles in radians (pitch, yaw, roll / X, Y, Z)
void set_euler_angles(const glm::vec3& euler_rad);
};
} // namespace Fan
#endif // FAN_TRANSFORM_HPP_

20
src/utils.cpp Normal file
View File

@@ -0,0 +1,20 @@
#include <fstream>
#include <sstream>
#include "utils.hpp"
namespace Fan
{
Opt<std::string> read_entire_file(const std::string& file_path)
{
std::ifstream file(file_path);
if (!file) { return std::nullopt; }
std::ostringstream buffer;
buffer << file.rdbuf();
return buffer.str();
}
} // namespace Fan

27
src/utils.hpp Normal file
View File

@@ -0,0 +1,27 @@
#ifndef FAN_UTILS_HPP_
#define FAN_UTILS_HPP_
#include <memory>
#include <optional>
#include <string>
namespace Fan
{
template <typename T>
using Rc = std::shared_ptr<T>;
template <typename T, typename... Args>
Rc<T> make_rc(Args&&... args)
{
return std::make_shared<T>(std::forward<Args>(args)...);
}
template <typename T>
using Opt = std::optional<T>;
Opt<std::string> read_entire_file(const std::string& file_path);
} // namespace Fan
#endif // FAN_UTILS_HPP_

18
src/vertex.hpp Normal file
View File

@@ -0,0 +1,18 @@
#ifndef FAN_VERTEX_HPP_
#define FAN_VERTEX_HPP_
#include <glm/glm.hpp>
namespace Fan
{
struct Vertex
{
glm::vec3 position;
glm::vec3 normal;
glm::vec2 texture_coords;
};
} // namespace Fan
#endif // FAN_VERTEX_HPP_

270
src/window.cpp Normal file
View File

@@ -0,0 +1,270 @@
#include <iostream>
#include <utility>
#include <glad/gl.h>
#include <imgui.h>
#include <imgui_impl_glfw.h>
#include <imgui_impl_opengl3.h>
#include "window.hpp"
namespace Fan
{
Rc<Window> Window::create(int width, int height, const std::string& title)
{
glfwSetErrorCallback(error_callback);
if (!glfwInit()) {
std::cerr << "ERROR: WINDOW: Could not initialize GLFW" << std::endl;
return nullptr;
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow *window = glfwCreateWindow(width, height, title.c_str(), nullptr, nullptr);
if (window == nullptr) {
std::cerr << "ERROR: WINDOW: Could not create window" << std::endl;
glfwTerminate();
return nullptr;
}
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
glfwSetCursorPosCallback(window, mouse_callback);
glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE);
if (!gladLoadGL(glfwGetProcAddress)) {
std::cerr << "ERROR: WINDOW: Could not initialize OpenGL context" << std::endl;
glfwDestroyWindow(window);
glfwTerminate();
return nullptr;
}
int fb_width, fb_height;
glfwGetFramebufferSize(window, &fb_width, &fb_height);
glViewport(0, 0, fb_width, fb_height);
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGuiIO& io = ImGui::GetIO();
io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
io.IniFilename = nullptr;
ImGui_ImplGlfw_InitForOpenGL(window, true);
ImGui_ImplOpenGL3_Init();
return make_rc<Window>(window, width, height);
}
Window::Window(GLFWwindow *window, int width, int height)
: m_width(width)
, m_height(height)
, m_window(window)
{
// Bind this instance to the window for static callbacks
glfwSetWindowUserPointer(window, this);
};
Window::~Window()
{
if (!is_valid()) { return; }
ImGui_ImplOpenGL3_Shutdown();
ImGui_ImplGlfw_Shutdown();
ImGui::DestroyContext();
glfwDestroyWindow(m_window);
glfwTerminate();
}
Window::Window(Window&& other) noexcept
: m_delta_time(other.m_delta_time)
, m_width(other.m_width)
, m_height(other.m_height)
, m_window(std::exchange(other.m_window, nullptr))
, m_last_frame(other.m_last_frame)
, m_callback_user_data(other.m_callback_user_data)
, m_mouse_user_callback(other.m_mouse_user_callback)
, m_current_keys(std::move(other.m_current_keys))
, m_previous_keys(std::move(other.m_previous_keys))
{
if (m_window != nullptr) {
glfwSetWindowUserPointer(m_window, this);
}
}
Window& Window::operator=(Window&& other) noexcept
{
if (this == &other) { return *this; }
std::swap(m_delta_time, other.m_delta_time);
std::swap(m_width, other.m_width);
std::swap(m_height, other.m_height);
std::swap(m_window, other.m_window);
std::swap(m_last_frame, other.m_last_frame);
std::swap(m_callback_user_data, other.m_callback_user_data);
std::swap(m_mouse_user_callback, other.m_mouse_user_callback);
std::swap(m_current_keys, other.m_current_keys);
std::swap(m_previous_keys, other.m_previous_keys);
if (m_window != nullptr) {
glfwSetWindowUserPointer(m_window, this);
}
if (other.m_window != nullptr) {
glfwSetWindowUserPointer(other.m_window, &other);
}
return *this;
}
bool Window::should_close() const
{
return is_valid() ? glfwWindowShouldClose(m_window) : true;
}
bool Window::is_valid() const
{
return m_window != nullptr;
}
bool Window::is_fullscreen() const
{
return is_valid() && (glfwGetWindowMonitor(m_window) != nullptr);
}
bool Window::is_key_down(int glfw_key)
{
return is_valid() && m_current_keys[glfw_key];
}
bool Window::is_key_pressed(int glfw_key)
{
return is_valid() && m_current_keys[glfw_key] && !m_previous_keys[glfw_key];
}
float Window::get_delta_time()
{
return m_delta_time;
}
int Window::get_width() const
{
return m_width;
}
int Window::get_height() const
{
return m_height;
}
void Window::set_should_close(bool enabled)
{
if (is_valid()) { glfwSetWindowShouldClose(m_window, enabled); }
}
void Window::set_mouse_grab(bool enabled)
{
if (is_valid()) {
glfwSetInputMode(m_window, GLFW_CURSOR, enabled ? GLFW_CURSOR_DISABLED : GLFW_CURSOR_NORMAL);
}
}
void Window::set_fullscreen(bool enabled)
{
if (!is_valid() || enabled == is_fullscreen()) { return; }
static int windowed_x = 100;
static int windowed_y = 100;
static int windowed_width = 800;
static int windowed_height = 600;
if (enabled) {
glfwGetWindowPos(m_window, &windowed_x, &windowed_y);
glfwGetWindowSize(m_window, &windowed_width, &windowed_height);
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
if (monitor == nullptr) { return; }
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
if (mode == nullptr) { return; }
glfwSetWindowMonitor(m_window, monitor, 0, 0,
mode->width, mode->height, mode->refreshRate);
} else {
glfwSetWindowMonitor(m_window, nullptr, windowed_x, windowed_y,
windowed_width, windowed_height, GLFW_DONT_CARE);
}
}
void Window::set_vsync(bool enabled)
{
if (is_valid()) glfwSwapInterval(enabled ? 1 : 0);
}
void Window::set_callback_user_data(void *data)
{
m_callback_user_data = data;
}
void Window::set_mouse_callback(MouseCallback callback)
{
m_mouse_user_callback = callback;
}
void Window::begin()
{
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplGlfw_NewFrame();
ImGui::NewFrame();
}
void Window::update()
{
if (!is_valid()) { return; }
float current_time = static_cast<float>(glfwGetTime());
m_delta_time = current_time - m_last_frame;
m_last_frame = current_time;
m_previous_keys = m_current_keys;
for (int i = 32; i < 348; ++i) {
m_current_keys[i] = glfwGetKey(m_window, i) == GLFW_PRESS;
}
}
void Window::end()
{
if (!is_valid()) { return; }
glfwGetWindowSize(m_window, &m_width, &m_height);
ImGui::Render();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glfwSwapBuffers(m_window);
glfwPollEvents();
}
void Window::error_callback(int error, const char* description)
{
std::cerr << "ERROR: WINDOW: GLFW: code: " << error << " msg: " << description << std::endl;
}
void Window::framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
(void) window;
glViewport(0, 0, width, height);
}
void Window::mouse_callback(GLFWwindow* window, double x_pos, double y_pos)
{
Window* win = static_cast<Window*>(glfwGetWindowUserPointer(window));
if (win == nullptr || !win->is_valid() || win->m_mouse_user_callback == nullptr) { return; }
win->m_mouse_user_callback(x_pos, y_pos, win->m_callback_user_data);
}
} // namespace Fan

70
src/window.hpp Normal file
View File

@@ -0,0 +1,70 @@
#ifndef FAN_WINDOW_HPP_
#define FAN_WINDOW_HPP_
#include <string>
#include <unordered_map>
#include <GLFW/glfw3.h>
#include "utils.hpp"
namespace Fan
{
class Window
{
public:
static Rc<Window> create(int width, int height, const std::string& title);
Window(GLFWwindow* window, int width, int height);
~Window();
Window(const Window&) = delete;
Window& operator=(const Window&) = delete;
Window(Window&& other) noexcept;
Window& operator=(Window&& other) noexcept;
bool should_close() const;
bool is_valid() const;
bool is_fullscreen() const;
bool is_key_down(int glfw_key);
bool is_key_pressed(int glfw_key);
float get_delta_time();
int get_width() const;
int get_height() const;
void set_should_close(bool enabled);
void set_mouse_grab(bool enabled);
void set_fullscreen(bool enabled);
void set_vsync(bool enabled);
// User callbacks
using MouseCallback = void (*)(double x_pos, double y_pos, void* user_data);
void set_callback_user_data(void *data);
void set_mouse_callback(MouseCallback callback);
// Main loop functions
void begin();
void update();
void end();
private:
float m_delta_time{};
int m_width{};
int m_height{};
GLFWwindow* m_window{};
float m_last_frame{};
void *m_callback_user_data{};
MouseCallback m_mouse_user_callback{};
std::unordered_map<int, bool> m_current_keys{};
std::unordered_map<int, bool> m_previous_keys{};
static void error_callback(int error, const char* description);
static void framebuffer_size_callback(GLFWwindow* window, int width, int height);
static void mouse_callback(GLFWwindow* window, double x_pos, double y_pos);
};
} // namespace Fan
#endif // FAN_WINDOW_HPP_

View File

@@ -0,0 +1,311 @@
#ifndef __khrplatform_h_
#define __khrplatform_h_
/*
** Copyright (c) 2008-2018 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/* Khronos platform-specific types and definitions.
*
* The master copy of khrplatform.h is maintained in the Khronos EGL
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
* The last semantic modification to khrplatform.h was at commit ID:
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
*
* Adopters may modify this file to suit their platform. Adopters are
* encouraged to submit platform specific modifications to the Khronos
* group so that they can be included in future versions of this file.
* Please submit changes by filing pull requests or issues on
* the EGL Registry repository linked above.
*
*
* See the Implementer's Guidelines for information about where this file
* should be located on your system and for more details of its use:
* http://www.khronos.org/registry/implementers_guide.pdf
*
* This file should be included as
* #include <KHR/khrplatform.h>
* by Khronos client API header files that use its types and defines.
*
* The types in khrplatform.h should only be used to define API-specific types.
*
* Types defined in khrplatform.h:
* khronos_int8_t signed 8 bit
* khronos_uint8_t unsigned 8 bit
* khronos_int16_t signed 16 bit
* khronos_uint16_t unsigned 16 bit
* khronos_int32_t signed 32 bit
* khronos_uint32_t unsigned 32 bit
* khronos_int64_t signed 64 bit
* khronos_uint64_t unsigned 64 bit
* khronos_intptr_t signed same number of bits as a pointer
* khronos_uintptr_t unsigned same number of bits as a pointer
* khronos_ssize_t signed size
* khronos_usize_t unsigned size
* khronos_float_t signed 32 bit floating point
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
* nanoseconds
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
* khronos_boolean_enum_t enumerated boolean type. This should
* only be used as a base type when a client API's boolean type is
* an enum. Client APIs which use an integer or other type for
* booleans cannot use this as the base type for their boolean.
*
* Tokens defined in khrplatform.h:
*
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
*
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
*
* Calling convention macros defined in this file:
* KHRONOS_APICALL
* KHRONOS_APIENTRY
* KHRONOS_APIATTRIBUTES
*
* These may be used in function prototypes as:
*
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
* int arg1,
* int arg2) KHRONOS_APIATTRIBUTES;
*/
#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
# define KHRONOS_STATIC 1
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APICALL
*-------------------------------------------------------------------------
* This precedes the return type of the function in the function prototype.
*/
#if defined(KHRONOS_STATIC)
/* If the preprocessor constant KHRONOS_STATIC is defined, make the
* header compatible with static linking. */
# define KHRONOS_APICALL
#elif defined(_WIN32)
# define KHRONOS_APICALL __declspec(dllimport)
#elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default")))
#else
# define KHRONOS_APICALL
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIENTRY
*-------------------------------------------------------------------------
* This follows the return type of the function and precedes the function
* name in the function prototype.
*/
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
/* Win32 but not WinCE */
# define KHRONOS_APIENTRY __stdcall
#else
# define KHRONOS_APIENTRY
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIATTRIBUTES
*-------------------------------------------------------------------------
* This follows the closing parenthesis of the function prototype arguments.
*/
#if defined (__ARMCC_2__)
#define KHRONOS_APIATTRIBUTES __softfp
#else
#define KHRONOS_APIATTRIBUTES
#endif
/*-------------------------------------------------------------------------
* basic type definitions
*-----------------------------------------------------------------------*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
/*
* Using <stdint.h>
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
/*
* To support platform where unsigned long cannot be used interchangeably with
* inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
* Ideally, we could just use (u)intptr_t everywhere, but this could result in
* ABI breakage if khronos_uintptr_t is changed from unsigned long to
* unsigned long long or similar (this results in different C++ name mangling).
* To avoid changes for existing platforms, we restrict usage of intptr_t to
* platforms where the size of a pointer is larger than the size of long.
*/
#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
#define KHRONOS_USE_INTPTR_T
#endif
#endif
#elif defined(__VMS ) || defined(__sgi)
/*
* Using <inttypes.h>
*/
#include <inttypes.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
/*
* Win32
*/
typedef __int32 khronos_int32_t;
typedef unsigned __int32 khronos_uint32_t;
typedef __int64 khronos_int64_t;
typedef unsigned __int64 khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__sun__) || defined(__digital__)
/*
* Sun or Digital
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#if defined(__arch64__) || defined(_LP64)
typedef long int khronos_int64_t;
typedef unsigned long int khronos_uint64_t;
#else
typedef long long int khronos_int64_t;
typedef unsigned long long int khronos_uint64_t;
#endif /* __arch64__ */
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif 0
/*
* Hypothetical platform with no float or int64 support
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#define KHRONOS_SUPPORT_INT64 0
#define KHRONOS_SUPPORT_FLOAT 0
#else
/*
* Generic fallback
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#endif
/*
* Types that are (so far) the same on all platforms
*/
typedef signed char khronos_int8_t;
typedef unsigned char khronos_uint8_t;
typedef signed short int khronos_int16_t;
typedef unsigned short int khronos_uint16_t;
/*
* Types that differ between LLP64 and LP64 architectures - in LLP64,
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use.
*/
#ifdef KHRONOS_USE_INTPTR_T
typedef intptr_t khronos_intptr_t;
typedef uintptr_t khronos_uintptr_t;
#elif defined(_WIN64)
typedef signed long long int khronos_intptr_t;
typedef unsigned long long int khronos_uintptr_t;
#else
typedef signed long int khronos_intptr_t;
typedef unsigned long int khronos_uintptr_t;
#endif
#if defined(_WIN64)
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_ssize_t;
typedef unsigned long int khronos_usize_t;
#endif
#if KHRONOS_SUPPORT_FLOAT
/*
* Float type
*/
typedef float khronos_float_t;
#endif
#if KHRONOS_SUPPORT_INT64
/* Time types
*
* These types can be used to represent a time interval in nanoseconds or
* an absolute Unadjusted System Time. Unadjusted System Time is the number
* of nanoseconds since some arbitrary system event (e.g. since the last
* time the system booted). The Unadjusted System Time is an unsigned
* 64 bit value that wraps back to 0 every 584 years. Time intervals
* may be either signed or unsigned.
*/
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
typedef khronos_int64_t khronos_stime_nanoseconds_t;
#endif
/*
* Dummy value used to pad enum types to 32 bits.
*/
#ifndef KHRONOS_MAX_ENUM
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
#endif
/*
* Enumerated boolean type
*
* Values other than zero should be considered to be true. Therefore
* comparisons should not be made against KHRONOS_TRUE.
*/
typedef enum {
KHRONOS_FALSE = 0,
KHRONOS_TRUE = 1,
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
} khronos_boolean_enum_t;
#endif /* __khrplatform_h_ */

13702
thirdparty/glad/include/glad/gl.h vendored Normal file

File diff suppressed because one or more lines are too long

8050
thirdparty/glad/src/gl.c vendored Normal file

File diff suppressed because it is too large Load Diff

34
thirdparty/glm/.appveyor.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
clone_folder: c:\dev\glm-cmake
os:
- Visual Studio 2013
platform:
- x86
- x86_64
build_script:
- md build_pure_11
- cd build_pure_11
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build . --config Debug
- cmake --build . --config Release
- cd ..
- md build_simd_11
- cd build_simd_11
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_LANG_EXTENSIONS=ON ..
- cmake --build . --config Debug
- cmake --build . --config Release
- cd ..
- md build_pure_98
- cd build_pure_98
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build . --config Debug
- cmake --build . --config Release
- cd ..
- md build_simd_98
- cd build_simd_98
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON ..
- cmake --build . --config Debug
- cmake --build . --config Release
- cd ..

54
thirdparty/glm/.gitignore vendored Normal file
View File

@@ -0,0 +1,54 @@
# Compiled Object files
*.slo
*.lo
*.o
*.obj
# Precompiled Headers
*.gch
*.pch
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# CMake
CMakeCache.txt
CMakeFiles
cmake_install.cmake
install_manifest.txt
*.cmake
# ^ May need to add future .cmake files as exceptions
# Test logs
Testing/*
# Test input
test/gtc/*.dds
# Project Files
Makefile
*.cbp
*.user
# Misc.
*.log
# local build(s)
build*

84
thirdparty/glm/.travis.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
language: cpp
os:
- linux
- osx
matrix:
include:
- compiler: gcc
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
env: COMPILER=g++-4.9
- compiler: clang
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.8
packages:
- clang-3.8
env: COMPILER=clang++-3.8
compiler:
- clang
before_script:
script:
- mkdir ./build_pure_11
- cd ./build_pure_11
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build .
- ctest
- cd ..
- mkdir ./build_pure_98
- cd ./build_pure_98
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build .
- ctest
- cd ..
- mkdir ./build_pure_11_debug
- cd ./build_pure_11_debug
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build .
- ctest
- cd ..
- mkdir ./build_pure_98_debug
- cd ./build_pure_98_debug
- cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_FORCE_PURE=ON ..
- cmake --build .
- ctest
- cd ..
- mkdir ./build_simd_11
- cd ./build_simd_11
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
- cmake --build .
- ctest
- cd ..
- mkdir ./build_simd_98
- cd ./build_simd_98
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Release -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
- cmake --build .
- ctest
- cd ..
- mkdir ./build_simd_11_debug
- cd ./build_simd_11_debug
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_11=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
- cmake --build .
- ctest
- cd ..
- mkdir ./build_simd_98_debug
- cd ./build_simd_98_debug
- if [[ $TRAVIS_OS_NAME == 'osx' ]]; then cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_SSE3=ON ..; else cmake -DCMAKE_CXX_COMPILER=$COMPILER -DCMAKE_BUILD_TYPE=Debug -DGLM_TEST_ENABLE=ON -DGLM_TEST_ENABLE_CXX_98=ON -DGLM_TEST_ENABLE_SIMD_AVX=ON ..; fi
- cmake --build .
- ctest
- cd ..

232
thirdparty/glm/CMakeLists.txt vendored Normal file
View File

@@ -0,0 +1,232 @@
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
cmake_policy(VERSION 2.6)
if (NOT CMAKE_VERSION VERSION_LESS "3.1")
cmake_policy(SET CMP0054 NEW)
endif()
project(glm)
set(GLM_VERSION "0.9.8")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
enable_testing()
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
option(GLM_STATIC_LIBRARY_ENABLE "GLM static library" OFF)
if(GLM_STATIC_LIBRARY_ENABLE)
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_STATIC_LIBRARY_ENABLE with ON to build an optional static library")
endif()
option(GLM_DYNAMIC_LIBRARY_ENABLE "GLM static library" OFF)
if(GLM_DYNAMIC_LIBRARY_ENABLE)
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_DYNAMIC_LIBRARY_ENABLE with ON to build an optional dynamic library")
endif()
option(GLM_TEST_ENABLE "GLM test" OFF)
if(NOT GLM_TEST_ENABLE)
message(STATUS "GLM is a header only library, no need to build it. Set the option GLM_TEST_ENABLE with ON to build and run the test bench")
endif()
option(GLM_TEST_ENABLE_FAST_MATH "Enable fast math optimizations" OFF)
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND UNIX))
option(GLM_TEST_ENABLE_CXX_98 "Enable C++ 98" OFF)
option(GLM_TEST_ENABLE_CXX_0X "Enable C++ 0x" OFF)
option(GLM_TEST_ENABLE_CXX_11 "Enable C++ 11" OFF)
option(GLM_TEST_ENABLE_CXX_1Y "Enable C++ 1y" OFF)
option(GLM_TEST_ENABLE_CXX_14 "Enable C++ 14" OFF)
option(GLM_TEST_ENABLE_CXX_1Z "Enable C++ 1z" OFF)
if(GLM_TEST_ENABLE_CXX_1Z)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1z")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++1Z")
elseif(GLM_TEST_ENABLE_CXX_14)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++14")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++14")
elseif(GLM_TEST_ENABLE_CXX_1Y)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++1y")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++1y")
elseif(GLM_TEST_ENABLE_CXX_11)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++11")
elseif(GLM_TEST_ENABLE_CXX_0X)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++0x")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++0x")
elseif(GLM_TEST_ENABLE_CXX_98)
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++98")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_CXX_FLAGS "-std=c++98")
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_definitions(-Wno-long-long)
endif()
endif()
endif()
option(GLM_TEST_ENABLE_LANG_EXTENSIONS "Enable language extensions" OFF)
if(GLM_TEST_ENABLE_LANG_EXTENSIONS)
if(GLM_TEST_ENABLE_FAST_MATH)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-ffast-math)
endif()
if(MSVC)
add_definitions(/fp:fast)
endif()
elseif(NOT GLM_TEST_ENABLE_FAST_MATH)
if(MSVC)
add_definitions(/fp:precise)
endif()
endif()
else()
if(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") OR (("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") AND WIN32))
add_definitions(/Za)
elseif(("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU"))
add_definitions(-pedantic)
endif()
endif()
option(GLM_TEST_ENABLE_SIMD_SSE2 "Enable SSE2 optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_SSE3 "Enable SSE3 optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_AVX "Enable AVX optimizations" OFF)
option(GLM_TEST_ENABLE_SIMD_AVX2 "Enable AVX2 optimizations" OFF)
option(GLM_TEST_FORCE_PURE "Force 'pure' instructions" OFF)
if(GLM_TEST_FORCE_PURE)
add_definitions(-DGLM_FORCE_PURE)
if(CMAKE_COMPILER_IS_GNUCXX)
add_definitions(-mfpmath=387)
endif()
message(STATUS "GLM: No SIMD instruction set")
elseif(GLM_TEST_ENABLE_SIMD_AVX2)
if(CMAKE_COMPILER_IS_GNUCXX OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
add_definitions(-mavx2)
elseif(GLM_USE_INTEL)
add_definitions(/QxAVX2)
elseif(MSVC)
add_definitions(/arch:AVX2)
endif()
message(STATUS "GLM: AVX2 instruction set")
elseif(GLM_TEST_ENABLE_SIMD_AVX)
if(CMAKE_COMPILER_IS_GNUCXX OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
add_definitions(-mavx)
elseif(GLM_USE_INTEL)
add_definitions(/QxAVX)
elseif(MSVC)
add_definitions(/arch:AVX)
endif()
message(STATUS "GLM: AVX instruction set")
elseif(GLM_TEST_ENABLE_SIMD_SSE3)
if(CMAKE_COMPILER_IS_GNUCXX OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
add_definitions(-msse3)
elseif(GLM_USE_INTEL)
add_definitions(/QxSSE3)
elseif(MSVC AND NOT CMAKE_CL_64)
add_definitions(/arch:SSE2) # VC doesn't support /arch:SSE3
endif()
message(STATUS "GLM: SSE3 instruction set")
elseif(GLM_TEST_ENABLE_SIMD_SSE2)
if(CMAKE_COMPILER_IS_GNUCXX OR ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang"))
add_definitions(-msse2)
elseif(GLM_USE_INTEL)
add_definitions(/QxSSE2)
elseif(MSVC AND NOT CMAKE_CL_64)
add_definitions(/arch:SSE2)
endif()
message(STATUS "GLM: SSE2 instruction set")
endif()
if(CMAKE_COMPILER_IS_GNUCXX)
#add_definitions(-S)
#add_definitions(-s)
add_definitions(-O2)
#add_definitions(-fprofile-arcs -ftest-coverage) gcov
#ctest_enable_coverage()
endif()
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
add_definitions(/FAs)
endif()
include_directories("${PROJECT_SOURCE_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/test/external")
add_subdirectory(glm)
add_subdirectory(test)
set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake"
VERSION ${GLM_VERSION}
COMPATIBILITY AnyNewerVersion
)
# build tree package config
configure_file(
cmake/glmBuildConfig.cmake.in
glmConfig.cmake
@ONLY
)
# install tree package config
configure_package_config_file(
cmake/glmConfig.cmake.in
${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake
INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR}
PATH_VARS CMAKE_INSTALL_INCLUDEDIR
NO_CHECK_REQUIRED_COMPONENTS_MACRO
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake"
DESTINATION ${GLM_INSTALL_CONFIGDIR}
)
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
add_library(glm INTERFACE)
target_include_directories(glm INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
)
install(TARGETS glm EXPORT glmTargets)
export(
EXPORT glmTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake"
)
install(
EXPORT glmTargets FILE glmTargets.cmake
DESTINATION ${GLM_INSTALL_CONFIGDIR}
)
endif()
# build pkg-config file
configure_file(
"./cmake/glm.pc.in"
"glm.pc"
@ONLY
)
# install pkg-config file
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/glm.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)
export(PACKAGE glm)

7
thirdparty/glm/cmake/glm.pc.in vendored Normal file
View File

@@ -0,0 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
includedir=${prefix}/include
Name: GLM
Description: OpenGL Mathematics
Version: @GLM_VERSION@
Cflags: -I${includedir}

View File

@@ -0,0 +1,6 @@
set(GLM_VERSION "@GLM_VERSION@")
set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@")
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
endif()

View File

@@ -0,0 +1,9 @@
set(GLM_VERSION "@GLM_VERSION@")
@PACKAGE_INIT@
set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
if (NOT CMAKE_VERSION VERSION_LESS "3.0")
include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
endif()

54
thirdparty/glm/copying.txt vendored Normal file
View File

@@ -0,0 +1,54 @@
================================================================================
OpenGL Mathematics (GLM)
--------------------------------------------------------------------------------
GLM can be distributed and/or modified under the terms of either
a) The Happy Bunny License, or b) the MIT License.
================================================================================
The Happy Bunny License (Modified MIT License)
--------------------------------------------------------------------------------
Copyright (c) 2005 - 2016 G-Truc Creation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
Restrictions: By making use of the Software for military purposes, you choose
to make a Bunny unhappy.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================================================
The MIT License
--------------------------------------------------------------------------------
Copyright (c) 2005 - 2016 G-Truc Creation
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

66
thirdparty/glm/doc/api/a00001.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _features.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_features.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00001_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00001_source.html">_features.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,457 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _features.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_features.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00001.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// #define GLM_CXX98_EXCEPTIONS</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">// #define GLM_CXX98_RTTI</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">// #define GLM_CXX11_RVALUE_REFERENCES</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">// Rvalue references - GCC 4.3</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">// GLM_CXX11_TRAILING_RETURN</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">// Rvalue references for *this - GCC not supported</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">// Initialization of class objects by rvalues - GCC any</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="comment">// GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="comment">// Non-static data member initializers - GCC 4.7</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="comment">// #define GLM_CXX11_VARIADIC_TEMPLATE</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="comment">// Variadic templates - GCC 4.3</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">// Extending variadic template template parameters - GCC 4.4</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">// #define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment">// Initializer lists - GCC 4.4</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment">// #define GLM_CXX11_STATIC_ASSERT </span></div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">// Static assertions - GCC 4.3</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">// auto-typed variables - GCC 4.4</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment">// Multi-declarator auto - GCC 4.4</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment">// Removal of auto as a storage-class specifier - GCC 4.4</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment">// #define GLM_CXX11_AUTO_TYPE</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment">// New function declarator syntax - GCC 4.4</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment">// #define GLM_CXX11_LAMBDAS</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">// New wording for C++0x lambdas - GCC 4.5</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="comment">// #define GLM_CXX11_DECLTYPE</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="comment">// Declared type of an expression - GCC 4.3</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="comment">// Right angle brackets - GCC 4.3</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="comment">// Default template arguments for function templates DR226 GCC 4.3</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment">// Solving the SFINAE problem for expressions DR339 GCC 4.4</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">// #define GLM_CXX11_ALIAS_TEMPLATE</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment">// Template aliases N2258 GCC 4.7</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;<span class="comment">// Extern templates N1987 Yes</span></div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="comment">// #define GLM_CXX11_NULLPTR</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="comment">// Null pointer constant N2431 GCC 4.6</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="comment">// #define GLM_CXX11_STRONG_ENUMS</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="comment">// Strongly-typed enums N2347 GCC 4.4</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">// Forward declarations for enums N2764 GCC 4.6</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">// Generalized attributes N2761 GCC 4.8</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment">// Generalized constant expressions N2235 GCC 4.6</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment">// Alignment support N2341 GCC 4.8</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">// #define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment">// Delegating constructors N1986 GCC 4.7</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">// Inheriting constructors N2540 GCC 4.8</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment">// #define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment">// Explicit conversion operators N2437 GCC 4.5</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment">// New character types N2249 GCC 4.4</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="comment">// Unicode string literals N2442 GCC 4.5</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="comment">// Raw string literals N2442 GCC 4.5</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="comment">// Universal character name literals N2170 GCC 4.5</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="comment">// #define GLM_CXX11_USER_LITERALS</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment">// User-defined literals N2765 GCC 4.7</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="comment">// Standard Layout Types N2342 GCC 4.5</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="comment">// #define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="comment">// #define GLM_CXX11_DELETED_FUNCTIONS</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="comment">// Defaulted and deleted functions N2346 GCC 4.4</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="comment">// Extended friend declarations N1791 GCC 4.7</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;<span class="comment">// Extending sizeof N2253 GCC 4.4</span></div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="comment">// #define GLM_CXX11_INLINE_NAMESPACES</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="comment">// Inline namespaces N2535 GCC 4.4</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">// #define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="comment">// Unrestricted unions N2544 GCC 4.6</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="comment">// #define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="comment">// Local and unnamed types as template arguments N2657 GCC 4.5</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment">// #define GLM_CXX11_RANGE_FOR</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="comment">// Range-based for N2930 GCC 4.6</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="comment">// #define GLM_CXX11_OVERRIDE_CONTROL</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="comment">// Explicit virtual overrides N2928 N3206 N3272 GCC 4.7</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="comment">// http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">// Minimal support for garbage collection and reachability-based leak detection N2670 No</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment">// #define GLM_CXX11_NOEXCEPT</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">// Allowing move constructors to throw [noexcept] N3050 GCC 4.6 (core language only)</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">// Defining move special member functions N3053 GCC 4.6</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.html</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment">// Sequence points N2239 Yes</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment">// Atomic operations N2427 GCC 4.4</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment">// Strong Compare and Exchange N2748 GCC 4.5</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">// Bidirectional Fences N2752 GCC 4.8</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment">// Memory model N2429 GCC 4.8</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">// Data-dependency ordering: atomics and memory model N2664 GCC 4.4</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="comment">// Propagating exceptions N2179 GCC 4.4</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="comment">// Abandoning a process and at_quick_exit N2440 GCC 4.8</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment">// Allow atomics use in signal handlers N2547 Yes</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="comment">// Thread-local storage N2659 GCC 4.8</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="comment">// Dynamic initialization and destruction with concurrency N2660 GCC 4.3</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="comment">// __func__ predefined identifier N2340 GCC 4.3</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="comment">// C99 preprocessor N1653 GCC 4.3</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">// long long N1811 GCC 4.3</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">// </span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment">// Extended integral types N1988 Yes</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment">// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor">#if(GLM_COMPILER &amp; GLM_COMPILER_GCC)</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor"># if(GLM_COMPILER &gt;= GLM_COMPILER_GCC43)</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor">#elif(GLM_COMPILER &amp; GLM_COMPILER_CLANG)</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_exceptions))</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor"># define GLM_CXX98_EXCEPTIONS</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_rtti))</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor"># define GLM_CXX98_RTTI</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_access_control_sfinae))</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"># define GLM_CXX11_ACCESS_CONTROL_SFINAE</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_alias_templates))</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"># define GLM_CXX11_ALIAS_TEMPLATE</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_alignas))</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor"># define GLM_CXX11_ALIGNAS</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_attributes))</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor"># define GLM_CXX11_ATTRIBUTES</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_constexpr))</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor"># define GLM_CXX11_CONSTEXPR</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_decltype))</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor"># define GLM_CXX11_DECLTYPE</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_default_function_template_args))</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor"># define GLM_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_defaulted_functions))</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor"># define GLM_CXX11_DEFAULTED_FUNCTIONS</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_delegating_constructors))</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="preprocessor"># define GLM_CXX11_DELEGATING_CONSTRUCTORS</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_deleted_functions))</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor"># define GLM_CXX11_DELETED_FUNCTIONS</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_explicit_conversions))</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"># define GLM_CXX11_EXPLICIT_CONVERSIONS</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_generalized_initializers))</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"># define GLM_CXX11_GENERALIZED_INITIALIZERS</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_implicit_moves))</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor"># define GLM_CXX11_IMPLICIT_MOVES</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_inheriting_constructors))</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor"># define GLM_CXX11_INHERITING_CONSTRUCTORS</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_inline_namespaces))</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"># define GLM_CXX11_INLINE_NAMESPACES</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_lambdas))</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor"># define GLM_CXX11_LAMBDAS</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_local_type_template_args))</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor"># define GLM_CXX11_LOCAL_TYPE_TEMPLATE_ARGS</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_noexcept))</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="preprocessor"># define GLM_CXX11_NOEXCEPT</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;</div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_nonstatic_member_init))</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"># define GLM_CXX11_NONSTATIC_MEMBER_INIT</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_nullptr))</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor"># define GLM_CXX11_NULLPTR</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;</div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_override_control))</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor"># define GLM_CXX11_OVERRIDE_CONTROL</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;</div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_reference_qualified_functions))</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"># define GLM_CXX11_REFERENCE_QUALIFIED_FUNCTIONS</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_range_for))</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor"># define GLM_CXX11_RANGE_FOR</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_raw_string_literals))</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor"># define GLM_CXX11_RAW_STRING_LITERALS</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;</div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_rvalue_references))</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor"># define GLM_CXX11_RVALUE_REFERENCES</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_static_assert))</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor"># define GLM_CXX11_STATIC_ASSERT</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_auto_type))</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor"># define GLM_CXX11_AUTO_TYPE</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_strong_enums))</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="preprocessor"># define GLM_CXX11_STRONG_ENUMS</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_trailing_return))</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"># define GLM_CXX11_TRAILING_RETURN</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;</div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_unicode_literals))</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"># define GLM_CXX11_UNICODE_LITERALS</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_unrestricted_unions))</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"># define GLM_CXX11_UNRESTRICTED_UNIONS</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_user_literals))</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor"># define GLM_CXX11_USER_LITERALS</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;</div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor"># if(__has_feature(cxx_variadic_templates))</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="preprocessor"># define GLM_CXX11_VARIADIC_TEMPLATES</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor">#endif//(GLM_COMPILER &amp; GLM_COMPILER_CLANG)</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00002.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _fixes.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_fixes.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00002_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00002_source.html">_fixes.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,83 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _fixes.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_fixes.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00002.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;cmath&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#ifdef max</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#undef max</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#ifdef min</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#undef min</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#ifdef isnan</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#undef isnan</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#ifdef isinf</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#undef isinf</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#ifdef log2</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor">#undef log2</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00003.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _noise.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_noise.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00003_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00003_source.html">_noise.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,167 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _noise.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_noise.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00003.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;../vec2.hpp&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;../vec3.hpp&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;../vec4.hpp&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;../common.hpp&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a>{</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; GLM_FUNC_QUALIFIER T mod289(T <span class="keyword">const</span> &amp; x)</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keywordflow">return</span> x - <a class="code" href="a00146.html#ga568b822b78f045f77c3325e165b44d5d">floor</a>(x * static_cast&lt;T&gt;(1.0) / static_cast&lt;T&gt;(289.0)) * <span class="keyword">static_cast&lt;</span>T<span class="keyword">&gt;</span>(289.0);</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; }</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; GLM_FUNC_QUALIFIER T permute(T <span class="keyword">const</span> &amp; x)</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; }</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; permute(tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; x)</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; }</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; permute(tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; x)</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; }</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; permute(tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; x)</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; {</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordflow">return</span> mod289(((x * static_cast&lt;T&gt;(34)) + static_cast&lt;T&gt;(1)) * x);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; }</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment"> template &lt;typename T, precision P, template&lt;typename&gt; class vecType&gt;</span></div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; permute(vecType&lt;T, P&gt; const &amp; x)</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> return mod289(((x * T(34)) + T(1)) * x);</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_FUNC_QUALIFIER T taylorInvSqrt(T <span class="keyword">const</span> &amp; r)</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; {</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; taylorInvSqrt(tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; r)</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; }</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; taylorInvSqrt(tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; r)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; taylorInvSqrt(tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; r)</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; {</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keywordflow">return</span> T(1.79284291400159) - T(0.85373472095314) * r;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; }</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"> template &lt;typename T, precision P, template&lt;typename&gt; class vecType&gt;</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; taylorInvSqrt(vecType&lt;T, P&gt; const &amp; r)</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment"> return T(1.79284291400159) - T(0.85373472095314) * r;</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; fade(tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; t)</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; {</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; }</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; </div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; fade(tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; t)</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; </div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; fade(tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; t)</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; {</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">/*</span></div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"> template &lt;typename T, precision P, template &lt;typename&gt; class vecType&gt;</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; fade(vecType&lt;T, P&gt; const &amp; t)</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment"> {</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"> return (t * t * t) * (t * (t * T(6) - T(15)) + T(10));</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment"> }</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment">*/</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00146_html_ga568b822b78f045f77c3325e165b44d5d"><div class="ttname"><a href="a00146.html#ga568b822b78f045f77c3325e165b44d5d">glm::floor</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; floor(vecType&lt; T, P &gt; const &amp;x)</div><div class="ttdoc">Returns a value equal to the nearest integer that is less then or equal to x. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00004.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _swizzle.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_swizzle.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00004_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00004_source.html">_swizzle.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,857 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _swizzle.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_swizzle.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00004.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a>{</div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;{</div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160; <span class="comment">// Internal class for implementing swizzle operators</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, <span class="keywordtype">int</span> N&gt;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">struct </span>_swizzle_base0</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; {</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; GLM_FUNC_QUALIFIER T&amp; elem(<span class="keywordtype">size_t</span> i){ <span class="keywordflow">return</span> (reinterpret_cast&lt;T*&gt;(_buffer))[i]; }</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; GLM_FUNC_QUALIFIER T <span class="keyword">const</span>&amp; elem(<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span>{ <span class="keywordflow">return</span> (reinterpret_cast&lt;const T*&gt;(_buffer))[i]; }</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="comment">// Use an opaque buffer to *ensure* the compiler doesn&#39;t call a constructor.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="comment">// The size 1 buffer is assumed to aligned to the actual members so that the</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="comment">// elem() </span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; <span class="keywordtype">char</span> _buffer[1];</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; };</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">bool</span> Aligned&gt;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; <span class="keyword">struct </span>_swizzle_base1 : <span class="keyword">public</span> _swizzle_base0&lt;T, N&gt;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; {</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; };</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">bool</span> Aligned&gt;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">struct </span>_swizzle_base1&lt;2, T, P, vecType, E0,E1,-1,-2, Aligned&gt; : <span class="keyword">public</span> _swizzle_base0&lt;T, 2&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vecType&lt;T, P&gt;(this-&gt;elem(E0), this-&gt;elem(E1)); }</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; };</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">bool</span> Aligned&gt;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">struct </span>_swizzle_base1&lt;3, T, P, vecType, E0,E1,E2,-1, Aligned&gt; : <span class="keyword">public</span> _swizzle_base0&lt;T, 3&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vecType&lt;T, P&gt;(this-&gt;elem(E0), this-&gt;elem(E1), this-&gt;elem(E2)); }</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; };</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">bool</span> Aligned&gt;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">struct </span>_swizzle_base1&lt;4, T, P, vecType, E0,E1,E2,E3, Aligned&gt; : <span class="keyword">public</span> _swizzle_base0&lt;T, 4&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; { </div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator ()()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> vecType&lt;T, P&gt;(this-&gt;elem(E0), this-&gt;elem(E1), this-&gt;elem(E2), this-&gt;elem(E3)); }</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; };</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; <span class="comment">// Internal class for implementing swizzle operators</span></div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="comment">/*</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"> Template parameters:</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> ValueType = type of scalar values (e.g. float, double)</span></div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> VecType = class the swizzle is applies to (e.g. tvec3&lt;float&gt;)</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> N = number of components in the vector (e.g. 3)</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"> E0...3 = what index the n-th element of this swizzle refers to in the unswizzled vec</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment"> DUPLICATE_ELEMENTS = 1 if there is a repeated element, 0 otherwise (used to specialize swizzles</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment"> containing duplicate elements so that they cannot be used as r-values). </span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3, <span class="keywordtype">int</span> DUPLICATE_ELEMENTS&gt;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">struct </span>_swizzle_base2 : <span class="keyword">public</span> _swizzle_base1&lt;N, T, P, vecType, E0,E1,E2,E3, detail::is_aligned&lt;P&gt;::value&gt;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; GLM_FUNC_QUALIFIER _swizzle_base2&amp; operator= (<span class="keyword">const</span> T&amp; t)</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; {</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i)</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; (*<span class="keyword">this</span>)[i] = t;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; GLM_FUNC_QUALIFIER _swizzle_base2&amp; operator= (vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">struct </span>op { </div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T&amp; <a class="code" href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T&amp; t) { e = t; } </div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; _apply_op(that, op());</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; }</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator -= (vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">struct </span>op { </div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T&amp; <a class="code" href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T&amp; t) { e -= t; } </div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; };</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; _apply_op(that, op());</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator += (vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that)</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">struct </span>op { </div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T&amp; <a class="code" href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T&amp; t) { e += t; } </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; };</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; _apply_op(that, op());</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; }</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator *= (vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that)</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; {</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">struct </span>op { </div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T&amp; <a class="code" href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T&amp; t) { e *= t; } </div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; };</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; _apply_op(that, op());</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; }</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator /= (vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that)</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; {</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keyword">struct </span>op { </div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> operator() (T&amp; <a class="code" href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">e</a>, T&amp; t) { e /= t; } </div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; };</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; _apply_op(that, op());</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; GLM_FUNC_QUALIFIER T&amp; operator[](<span class="keywordtype">size_t</span> i)</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> this-&gt;elem(offset_dst[i]);</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; GLM_FUNC_QUALIFIER T operator[](<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <span class="keywordflow">return</span> this-&gt;elem(offset_dst[i]);</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; }</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; GLM_FUNC_QUALIFIER <span class="keywordtype">void</span> _apply_op(vecType&lt;T, P&gt; <span class="keyword">const</span>&amp; that, U op)</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <span class="comment">// Make a copy of the data in this == &amp;that.</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="comment">// The copier should optimize out the copy in cases where the function is</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="comment">// properly inlined and the copy is not necessary.</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; T t[N];</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i)</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; t[i] = that[i];</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; N; ++i)</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; op( (*<span class="keyword">this</span>)[i], t[i] );</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; }</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; };</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="comment">// Specialization for swizzles containing duplicate elements. These cannot be modified.</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3&gt;</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keyword">struct </span>_swizzle_base2&lt;N, T, P, vecType, E0,E1,E2,E3, 1&gt; : <span class="keyword">public</span> _swizzle_base1&lt;N, T, P, vecType, E0,E1,E2,E3, detail::is_aligned&lt;P&gt;::value&gt;</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; {</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">struct </span>Stub {};</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; GLM_FUNC_QUALIFIER _swizzle_base2&amp; operator= (Stub <span class="keyword">const</span> &amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; GLM_FUNC_QUALIFIER T operator[] (<span class="keywordtype">size_t</span> i)<span class="keyword"> const</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="keyword"> </span>{</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> offset_dst[4] = { E0, E1, E2, E3 };</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keywordflow">return</span> this-&gt;elem(offset_dst[i]);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; }</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; };</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keyword">template</span> &lt;<span class="keywordtype">int</span> N, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType, <span class="keywordtype">int</span> E0, <span class="keywordtype">int</span> E1, <span class="keywordtype">int</span> E2, <span class="keywordtype">int</span> E3&gt;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">struct </span>_swizzle : <span class="keyword">public</span> _swizzle_base2&lt;N, T, P, vecType, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)&gt;</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; {</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keyword">typedef</span> _swizzle_base2&lt;N, T, P, vecType, E0, E1, E2, E3, (E0 == E1 || E0 == E2 || E0 == E3 || E1 == E2 || E1 == E3 || E2 == E3)&gt; base_type;</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keyword">using</span> base_type::operator=;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">operator</span> vecType&lt;T, P&gt; () <span class="keyword">const</span> { <span class="keywordflow">return</span> (*<span class="keyword">this</span>)(); }</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; };</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">// To prevent the C++ syntax from getting entirely overwhelming, define some alias macros</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_TEMPLATE1 template &lt;int N, typename T, precision P, template &lt;typename, precision&gt; class vecType, int E0, int E1, int E2, int E3&gt;</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_TEMPLATE2 template &lt;int N, typename T, precision P, template &lt;typename, precision&gt; class vecType, int E0, int E1, int E2, int E3, int F0, int F1, int F2, int F3&gt;</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_TYPE1 _swizzle&lt;N, T, P, vecType, E0, E1, E2, E3&gt;</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_TYPE2 _swizzle&lt;N, T, P, vecType, F0, F1, F2, F3&gt;</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="comment">// Wrapper for a binary operator (e.g. u.yy + v.zy)</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE2 \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator OPERAND ( const _GLM_SWIZZLE_TYPE1&amp; a, const _GLM_SWIZZLE_TYPE2&amp; b) \</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"> return a() OPERAND b(); \</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator OPERAND ( const _GLM_SWIZZLE_TYPE1&amp; a, const vecType&lt;T, P&gt;&amp; b) \</span></div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"> return a() OPERAND b; \</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator OPERAND ( const vecType&lt;T, P&gt;&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b) \</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"> return a OPERAND b(); \</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment">// Wrapper for a operand between a swizzle and a binary (e.g. 1.0f - u.xyz)</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(OPERAND) \</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator OPERAND ( const _GLM_SWIZZLE_TYPE1&amp; a, const T&amp; b) \</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor"> return a() OPERAND b; \</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER vecType&lt;T, P&gt; operator OPERAND ( const T&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b) \</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor"> return a OPERAND b(); \</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment">// Macro for wrapping a function taking one argument (e.g. abs())</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_FUNCTION_1_ARGS(RETURN_TYPE,FUNCTION) \</span></div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a) \</span></div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"> return FUNCTION(a()); \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="comment">// Macro for wrapping a function taking two vector arguments (e.g. dot()).</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_FUNCTION_2_ARGS(RETURN_TYPE,FUNCTION) \</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE2 \</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const _GLM_SWIZZLE_TYPE2&amp; b) \</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b()); \</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b) \</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b()); \</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const typename V&amp; b) \</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b); \</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const V&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b) \</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"> return FUNCTION(a, b()); \</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"> } </span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment">// Macro for wrapping a function take 2 vec arguments followed by a scalar (e.g. mix()).</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="comment">//</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(RETURN_TYPE,FUNCTION) \</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE2 \</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const _GLM_SWIZZLE_TYPE2&amp; b, const T&amp; c) \</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b(), c); \</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b, const T&amp; c) \</span></div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b(), c); \</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const _GLM_SWIZZLE_TYPE1&amp; a, const typename S0::vec_type&amp; b, const T&amp; c)\</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"> return FUNCTION(a(), b, c); \</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor"> } \</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="preprocessor"> _GLM_SWIZZLE_TEMPLATE1 \</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor"> GLM_FUNC_QUALIFIER typename _GLM_SWIZZLE_TYPE1::RETURN_TYPE FUNCTION(const typename V&amp; a, const _GLM_SWIZZLE_TYPE1&amp; b, const T&amp; c) \</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor"> return FUNCTION(a, b(), c); \</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor"> } </span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; </div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;}<span class="comment">//namespace detail </span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;{</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(-)</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; _GLM_SWIZZLE_SCALAR_BINARY_OPERATOR_IMPLEMENTATION(*)</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(+)</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(-)</div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(*)</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; _GLM_SWIZZLE_VECTOR_BINARY_OPERATOR_IMPLEMENTATION(/)</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; }</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="comment">// Swizzles are distinct types from the unswizzled type. The below macros will</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="comment">// provide template specializations for the swizzle types for the given functions</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// so that the compiler does not have any ambiguity to choosing how to handle</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="comment">// the function.</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="comment">// The alternative is to use the operator()() when calling the function in order</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// to explicitly convert the swizzled type to the unswizzled type.</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, abs);</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acos);</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, acosh);</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, all);</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_1_ARGS(vec_type, any);</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_2_ARGS(value_type, dot);</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, cross);</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_2_ARGS(vec_type, step); </span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">//_GLM_SWIZZLE_FUNCTION_2_ARGS_SCALAR(vec_type, mix);</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;}</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE2_2_MEMBERS(T, P, V, E0,E1) \</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2, T, P, V, 0,0,-1,-2&gt; E0 ## E0; }; \</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2, T, P, V, 0,1,-1,-2&gt; E0 ## E1; }; \</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2, T, P, V, 1,0,-1,-2&gt; E1 ## E0; }; \</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2, T, P, V, 1,1,-1,-2&gt; E1 ## E1; }; </span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE2_3_MEMBERS(T, P, V, E0,E1) \</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 0,0,0,-1&gt; E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 0,0,1,-1&gt; E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 0,1,0,-1&gt; E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 0,1,1,-1&gt; E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 1,0,0,-1&gt; E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 1,0,1,-1&gt; E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 1,1,0,-1&gt; E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3,T, P, V, 1,1,1,-1&gt; E1 ## E1 ## E1; }; </span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE2_4_MEMBERS(T, P, V, E0,E1) \</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,0,0&gt; E0 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,0,1&gt; E0 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,1,0&gt; E0 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,1,1&gt; E0 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,0,0&gt; E0 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,0,1&gt; E0 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,1,0&gt; E0 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,1,1&gt; E0 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,0,0&gt; E1 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,0,1&gt; E1 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,1,0&gt; E1 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,1,1&gt; E1 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,0,0&gt; E1 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,0,1&gt; E1 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,1,0&gt; E1 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,1,1&gt; E1 ## E1 ## E1 ## E1; };</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE3_2_MEMBERS(T, P, V, E0,E1,E2) \</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,0,-1,-2&gt; E0 ## E0; }; \</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,1,-1,-2&gt; E0 ## E1; }; \</span></div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,2,-1,-2&gt; E0 ## E2; }; \</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,0,-1,-2&gt; E1 ## E0; }; \</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,1,-1,-2&gt; E1 ## E1; }; \</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,2,-1,-2&gt; E1 ## E2; }; \</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,0,-1,-2&gt; E2 ## E0; }; \</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,1,-1,-2&gt; E2 ## E1; }; \</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,2,-1,-2&gt; E2 ## E2; };</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE3_3_MEMBERS(T, P, V ,E0,E1,E2) \</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,0,-1&gt; E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,1,-1&gt; E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,2,-1&gt; E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,0,-1&gt; E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,1,-1&gt; E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,2,-1&gt; E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,0,-1&gt; E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,1,-1&gt; E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,2,-1&gt; E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,0,-1&gt; E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,1,-1&gt; E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,2,-1&gt; E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,0,-1&gt; E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,1,-1&gt; E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,2,-1&gt; E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,0,-1&gt; E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,1,-1&gt; E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,2,-1&gt; E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,0,-1&gt; E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,1,-1&gt; E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,2,-1&gt; E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,0,-1&gt; E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,1,-1&gt; E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,2,-1&gt; E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,0,-1&gt; E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,1,-1&gt; E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,2,-1&gt; E2 ## E2 ## E2; };</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE3_4_MEMBERS(T, P, V, E0,E1,E2) \</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,0,0&gt; E0 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,0,1&gt; E0 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,0,2&gt; E0 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,1,0&gt; E0 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,1,1&gt; E0 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,1,2&gt; E0 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,2,0&gt; E0 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,2,1&gt; E0 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,0,2,2&gt; E0 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,0,0&gt; E0 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,0,1&gt; E0 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,0,2&gt; E0 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,1,0&gt; E0 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,1,1&gt; E0 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,1,2&gt; E0 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,2,0&gt; E0 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,2,1&gt; E0 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,1,2,2&gt; E0 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,0,0&gt; E0 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,0,1&gt; E0 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,0,2&gt; E0 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,1,0&gt; E0 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,1,1&gt; E0 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,1,2&gt; E0 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,2,0&gt; E0 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,2,1&gt; E0 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 0,2,2,2&gt; E0 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,0,0&gt; E1 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,0,1&gt; E1 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,0,2&gt; E1 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,1,0&gt; E1 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,1,1&gt; E1 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,1,2&gt; E1 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,2,0&gt; E1 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,2,1&gt; E1 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,0,2,2&gt; E1 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,0,0&gt; E1 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,0,1&gt; E1 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,0,2&gt; E1 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,1,0&gt; E1 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,1,1&gt; E1 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,1,2&gt; E1 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,2,0&gt; E1 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,2,1&gt; E1 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,1,2,2&gt; E1 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,0,0&gt; E1 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,0,1&gt; E1 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,0,2&gt; E1 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,1,0&gt; E1 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,1,1&gt; E1 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,1,2&gt; E1 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,2,0&gt; E1 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,2,1&gt; E1 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 1,2,2,2&gt; E1 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,0,0&gt; E2 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,0,1&gt; E2 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,0,2&gt; E2 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,1,0&gt; E2 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,1,1&gt; E2 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,1,2&gt; E2 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,2,0&gt; E2 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,2,1&gt; E2 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,0,2,2&gt; E2 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,0,0&gt; E2 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,0,1&gt; E2 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,0,2&gt; E2 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,1,0&gt; E2 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,1,1&gt; E2 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,1,2&gt; E2 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,2,0&gt; E2 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,2,1&gt; E2 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,1,2,2&gt; E2 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,0,0&gt; E2 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,0,1&gt; E2 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,0,2&gt; E2 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,1,0&gt; E2 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,1,1&gt; E2 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,1,2&gt; E2 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,2,0&gt; E2 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,2,1&gt; E2 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4,T, P, V, 2,2,2,2&gt; E2 ## E2 ## E2 ## E2; }; </span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;</div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE4_2_MEMBERS(T, P, V, E0,E1,E2,E3) \</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,0,-1,-2&gt; E0 ## E0; }; \</span></div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,1,-1,-2&gt; E0 ## E1; }; \</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,2,-1,-2&gt; E0 ## E2; }; \</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 0,3,-1,-2&gt; E0 ## E3; }; \</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,0,-1,-2&gt; E1 ## E0; }; \</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,1,-1,-2&gt; E1 ## E1; }; \</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,2,-1,-2&gt; E1 ## E2; }; \</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 1,3,-1,-2&gt; E1 ## E3; }; \</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,0,-1,-2&gt; E2 ## E0; }; \</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,1,-1,-2&gt; E2 ## E1; }; \</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,2,-1,-2&gt; E2 ## E2; }; \</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 2,3,-1,-2&gt; E2 ## E3; }; \</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 3,0,-1,-2&gt; E3 ## E0; }; \</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 3,1,-1,-2&gt; E3 ## E1; }; \</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 3,2,-1,-2&gt; E3 ## E2; }; \</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;2,T, P, V, 3,3,-1,-2&gt; E3 ## E3; }; </span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;</div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE4_3_MEMBERS(T, P, V, E0,E1,E2,E3) \</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,0,-1&gt; E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,1,-1&gt; E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,2,-1&gt; E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,0,3,-1&gt; E0 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,0,-1&gt; E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,1,-1&gt; E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,2,-1&gt; E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,1,3,-1&gt; E0 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,0,-1&gt; E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,1,-1&gt; E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,2,-1&gt; E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,2,3,-1&gt; E0 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,3,0,-1&gt; E0 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,3,1,-1&gt; E0 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,3,2,-1&gt; E0 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 0,3,3,-1&gt; E0 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,0,-1&gt; E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,1,-1&gt; E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,2,-1&gt; E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,0,3,-1&gt; E1 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,0,-1&gt; E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,1,-1&gt; E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,2,-1&gt; E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,1,3,-1&gt; E1 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,0,-1&gt; E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,1,-1&gt; E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,2,-1&gt; E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,2,3,-1&gt; E1 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,3,0,-1&gt; E1 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,3,1,-1&gt; E1 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,3,2,-1&gt; E1 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 1,3,3,-1&gt; E1 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,0,-1&gt; E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,1,-1&gt; E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,2,-1&gt; E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,0,3,-1&gt; E2 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,0,-1&gt; E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,1,-1&gt; E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,2,-1&gt; E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,1,3,-1&gt; E2 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,0,-1&gt; E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,1,-1&gt; E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,2,-1&gt; E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,2,3,-1&gt; E2 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,3,0,-1&gt; E2 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,3,1,-1&gt; E2 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,3,2,-1&gt; E2 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 2,3,3,-1&gt; E2 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,0,0,-1&gt; E3 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,0,1,-1&gt; E3 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,0,2,-1&gt; E3 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,0,3,-1&gt; E3 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,1,0,-1&gt; E3 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,1,1,-1&gt; E3 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,1,2,-1&gt; E3 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,1,3,-1&gt; E3 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,2,0,-1&gt; E3 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,2,1,-1&gt; E3 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,2,2,-1&gt; E3 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,2,3,-1&gt; E3 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,3,0,-1&gt; E3 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,3,1,-1&gt; E3 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,3,2,-1&gt; E3 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;3, T, P, V, 3,3,3,-1&gt; E3 ## E3 ## E3; }; </span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;</div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor">#define _GLM_SWIZZLE4_4_MEMBERS(T, P, V, E0,E1,E2,E3) \</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,0,0&gt; E0 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,0,1&gt; E0 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,0,2&gt; E0 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,0,3&gt; E0 ## E0 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,1,0&gt; E0 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,1,1&gt; E0 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,1,2&gt; E0 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,1,3&gt; E0 ## E0 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,2,0&gt; E0 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,2,1&gt; E0 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,2,2&gt; E0 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,2,3&gt; E0 ## E0 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,3,0&gt; E0 ## E0 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,3,1&gt; E0 ## E0 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,3,2&gt; E0 ## E0 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,0,3,3&gt; E0 ## E0 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,0,0&gt; E0 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,0,1&gt; E0 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,0,2&gt; E0 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,0,3&gt; E0 ## E1 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,1,0&gt; E0 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,1,1&gt; E0 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,1,2&gt; E0 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,1,3&gt; E0 ## E1 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,2,0&gt; E0 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,2,1&gt; E0 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,2,2&gt; E0 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,2,3&gt; E0 ## E1 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,3,0&gt; E0 ## E1 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,3,1&gt; E0 ## E1 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,3,2&gt; E0 ## E1 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,1,3,3&gt; E0 ## E1 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,0,0&gt; E0 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,0,1&gt; E0 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,0,2&gt; E0 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,0,3&gt; E0 ## E2 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,1,0&gt; E0 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,1,1&gt; E0 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,1,2&gt; E0 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,1,3&gt; E0 ## E2 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,2,0&gt; E0 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,2,1&gt; E0 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,2,2&gt; E0 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,2,3&gt; E0 ## E2 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,3,0&gt; E0 ## E2 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,3,1&gt; E0 ## E2 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,3,2&gt; E0 ## E2 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,2,3,3&gt; E0 ## E2 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,0,0&gt; E0 ## E3 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,0,1&gt; E0 ## E3 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,0,2&gt; E0 ## E3 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,0,3&gt; E0 ## E3 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,1,0&gt; E0 ## E3 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,1,1&gt; E0 ## E3 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,1,2&gt; E0 ## E3 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,1,3&gt; E0 ## E3 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,2,0&gt; E0 ## E3 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,2,1&gt; E0 ## E3 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,2,2&gt; E0 ## E3 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,2,3&gt; E0 ## E3 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,3,0&gt; E0 ## E3 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,3,1&gt; E0 ## E3 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,3,2&gt; E0 ## E3 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 0,3,3,3&gt; E0 ## E3 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,0,0&gt; E1 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,0,1&gt; E1 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,0,2&gt; E1 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,0,3&gt; E1 ## E0 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,1,0&gt; E1 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,1,1&gt; E1 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,1,2&gt; E1 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,1,3&gt; E1 ## E0 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,2,0&gt; E1 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,2,1&gt; E1 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,2,2&gt; E1 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,2,3&gt; E1 ## E0 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,3,0&gt; E1 ## E0 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,3,1&gt; E1 ## E0 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,3,2&gt; E1 ## E0 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,0,3,3&gt; E1 ## E0 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,0,0&gt; E1 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,0,1&gt; E1 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,0,2&gt; E1 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,0,3&gt; E1 ## E1 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,1,0&gt; E1 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,1,1&gt; E1 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,1,2&gt; E1 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,1,3&gt; E1 ## E1 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,2,0&gt; E1 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,2,1&gt; E1 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,2,2&gt; E1 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,2,3&gt; E1 ## E1 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,3,0&gt; E1 ## E1 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,3,1&gt; E1 ## E1 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,3,2&gt; E1 ## E1 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,1,3,3&gt; E1 ## E1 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,0,0&gt; E1 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,0,1&gt; E1 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,0,2&gt; E1 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,0,3&gt; E1 ## E2 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,1,0&gt; E1 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,1,1&gt; E1 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,1,2&gt; E1 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,1,3&gt; E1 ## E2 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,2,0&gt; E1 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,2,1&gt; E1 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,2,2&gt; E1 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,2,3&gt; E1 ## E2 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,3,0&gt; E1 ## E2 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,3,1&gt; E1 ## E2 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,3,2&gt; E1 ## E2 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,2,3,3&gt; E1 ## E2 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,0,0&gt; E1 ## E3 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,0,1&gt; E1 ## E3 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,0,2&gt; E1 ## E3 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,0,3&gt; E1 ## E3 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,1,0&gt; E1 ## E3 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,1,1&gt; E1 ## E3 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,1,2&gt; E1 ## E3 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,1,3&gt; E1 ## E3 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,2,0&gt; E1 ## E3 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,2,1&gt; E1 ## E3 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,2,2&gt; E1 ## E3 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,2,3&gt; E1 ## E3 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,3,0&gt; E1 ## E3 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,3,1&gt; E1 ## E3 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,3,2&gt; E1 ## E3 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 1,3,3,3&gt; E1 ## E3 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,0,0&gt; E2 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,0,1&gt; E2 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,0,2&gt; E2 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,0,3&gt; E2 ## E0 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,1,0&gt; E2 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,1,1&gt; E2 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,1,2&gt; E2 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,1,3&gt; E2 ## E0 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,2,0&gt; E2 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,2,1&gt; E2 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,2,2&gt; E2 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,2,3&gt; E2 ## E0 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,3,0&gt; E2 ## E0 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,3,1&gt; E2 ## E0 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,3,2&gt; E2 ## E0 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,0,3,3&gt; E2 ## E0 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,0,0&gt; E2 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,0,1&gt; E2 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,0,2&gt; E2 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,0,3&gt; E2 ## E1 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,1,0&gt; E2 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,1,1&gt; E2 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,1,2&gt; E2 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,1,3&gt; E2 ## E1 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,2,0&gt; E2 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,2,1&gt; E2 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,2,2&gt; E2 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,2,3&gt; E2 ## E1 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,3,0&gt; E2 ## E1 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,3,1&gt; E2 ## E1 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,3,2&gt; E2 ## E1 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,1,3,3&gt; E2 ## E1 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,0,0&gt; E2 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,0,1&gt; E2 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,0,2&gt; E2 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,0,3&gt; E2 ## E2 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,1,0&gt; E2 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,1,1&gt; E2 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,1,2&gt; E2 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,1,3&gt; E2 ## E2 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,2,0&gt; E2 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,2,1&gt; E2 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,2,2&gt; E2 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,2,3&gt; E2 ## E2 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,3,0&gt; E2 ## E2 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,3,1&gt; E2 ## E2 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,3,2&gt; E2 ## E2 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,2,3,3&gt; E2 ## E2 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,0,0&gt; E2 ## E3 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,0,1&gt; E2 ## E3 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,0,2&gt; E2 ## E3 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,0,3&gt; E2 ## E3 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,1,0&gt; E2 ## E3 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,1,1&gt; E2 ## E3 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,1,2&gt; E2 ## E3 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,1,3&gt; E2 ## E3 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,2,0&gt; E2 ## E3 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,2,1&gt; E2 ## E3 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,2,2&gt; E2 ## E3 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,2,3&gt; E2 ## E3 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,3,0&gt; E2 ## E3 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,3,1&gt; E2 ## E3 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,3,2&gt; E2 ## E3 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 2,3,3,3&gt; E2 ## E3 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,0,0&gt; E3 ## E0 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,0,1&gt; E3 ## E0 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,0,2&gt; E3 ## E0 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,0,3&gt; E3 ## E0 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,1,0&gt; E3 ## E0 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,1,1&gt; E3 ## E0 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,1,2&gt; E3 ## E0 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,1,3&gt; E3 ## E0 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,2,0&gt; E3 ## E0 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,2,1&gt; E3 ## E0 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,2,2&gt; E3 ## E0 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,2,3&gt; E3 ## E0 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,3,0&gt; E3 ## E0 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,3,1&gt; E3 ## E0 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,3,2&gt; E3 ## E0 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,0,3,3&gt; E3 ## E0 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,0,0&gt; E3 ## E1 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,0,1&gt; E3 ## E1 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,0,2&gt; E3 ## E1 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,0,3&gt; E3 ## E1 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,1,0&gt; E3 ## E1 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,1,1&gt; E3 ## E1 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,1,2&gt; E3 ## E1 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,1,3&gt; E3 ## E1 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,2,0&gt; E3 ## E1 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,2,1&gt; E3 ## E1 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,2,2&gt; E3 ## E1 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,2,3&gt; E3 ## E1 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,3,0&gt; E3 ## E1 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,3,1&gt; E3 ## E1 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,3,2&gt; E3 ## E1 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,1,3,3&gt; E3 ## E1 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,0,0&gt; E3 ## E2 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,0,1&gt; E3 ## E2 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,0,2&gt; E3 ## E2 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,0,3&gt; E3 ## E2 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,1,0&gt; E3 ## E2 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,1,1&gt; E3 ## E2 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,1,2&gt; E3 ## E2 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,1,3&gt; E3 ## E2 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,2,0&gt; E3 ## E2 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,2,1&gt; E3 ## E2 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,2,2&gt; E3 ## E2 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,2,3&gt; E3 ## E2 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,3,0&gt; E3 ## E2 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,3,1&gt; E3 ## E2 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,3,2&gt; E3 ## E2 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,2,3,3&gt; E3 ## E2 ## E3 ## E3; }; \</span></div>
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,0,0&gt; E3 ## E3 ## E0 ## E0; }; \</span></div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,0,1&gt; E3 ## E3 ## E0 ## E1; }; \</span></div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,0,2&gt; E3 ## E3 ## E0 ## E2; }; \</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,0,3&gt; E3 ## E3 ## E0 ## E3; }; \</span></div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,1,0&gt; E3 ## E3 ## E1 ## E0; }; \</span></div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,1,1&gt; E3 ## E3 ## E1 ## E1; }; \</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,1,2&gt; E3 ## E3 ## E1 ## E2; }; \</span></div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,1,3&gt; E3 ## E3 ## E1 ## E3; }; \</span></div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,2,0&gt; E3 ## E3 ## E2 ## E0; }; \</span></div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,2,1&gt; E3 ## E3 ## E2 ## E1; }; \</span></div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,2,2&gt; E3 ## E3 ## E2 ## E2; }; \</span></div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,2,3&gt; E3 ## E3 ## E2 ## E3; }; \</span></div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,3,0&gt; E3 ## E3 ## E3 ## E0; }; \</span></div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,3,1&gt; E3 ## E3 ## E3 ## E1; }; \</span></div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,3,2&gt; E3 ## E3 ## E3 ## E2; }; \</span></div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;<span class="preprocessor"> struct { detail::_swizzle&lt;4, T, P, V, 3,3,3,3&gt; E3 ## E3 ## E3 ## E3; };</span></div>
<div class="ttc" id="a00162_html_ga4b7956eb6e2fbedfc7cf2e46e85c5139"><div class="ttname"><a href="a00162.html#ga4b7956eb6e2fbedfc7cf2e46e85c5139">glm::e</a></div><div class="ttdeci">GLM_FUNC_DECL GLM_CONSTEXPR genType e()</div><div class="ttdoc">Return e constant. </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00005.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _swizzle_func.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_swizzle_func.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00005_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00005_source.html">_swizzle_func.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,754 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _swizzle_func.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_swizzle_func.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00005.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt; A ## B() CONST \</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B); \</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt; A ## B ## C() CONST \</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B, this-&gt;C); \</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt; A ## B ## C ## D() CONST \</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B, this-&gt;C, this-&gt;D); \</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B) \</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"> template &lt;typename TMPL_TYPE&gt; \</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE&gt; CLASS_TYPE&lt;TMPL_TYPE, PRECISION&gt;::A ## B() CONST \</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B); \</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C) \</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor"> template &lt;typename TMPL_TYPE&gt; \</span></div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE&gt; CLASS_TYPE&lt;TMPL_TYPE, PRECISION&gt;::A ## B ## C() CONST \</span></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B, this-&gt;C); \</span></div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_ENTRY_DEF(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, CONST, A, B, C, D) \</span></div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor"> template &lt;typename TMPL_TYPE&gt; \</span></div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="preprocessor"> SWIZZLED_TYPE&lt;TMPL_TYPE&gt; CLASS_TYPE&lt;TMPL_TYPE, PRECISION&gt;::A ## B ## C ## D() CONST \</span></div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor"> { \</span></div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="preprocessor"> return SWIZZLED_TYPE&lt;TMPL_TYPE, PRECISION&gt;(this-&gt;A, this-&gt;B, this-&gt;C, this-&gt;D); \</span></div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="preprocessor"> }</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#define GLM_MUTABLE</span></div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \</span></div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A)</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE) \</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, x, y) \</span></div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, r, g) \</span></div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, s, t)</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_REF_FROM_VEC2(valType, detail::vec2, detail::ref2)</span></div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \</span></div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \</span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \</span></div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B)</span></div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B, C) \</span></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C, B) \</span></div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A, C) \</span></div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C, A) \</span></div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A, B) \</span></div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B, A)</span></div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C)</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE) \</span></div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, x, y, z) \</span></div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, r, g, b) \</span></div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, s, t, p)</span></div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_REF_FROM_VEC3(valType, detail::vec3, detail::ref2, detail::ref3)</span></div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, B) \</span></div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, C) \</span></div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, A, D) \</span></div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, A) \</span></div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, C) \</span></div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, B, D) \</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, A) \</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, B) \</span></div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, C, D) \</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, A) \</span></div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, B) \</span></div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, GLM_MUTABLE, D, C)</span></div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C) \</span></div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D) \</span></div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B) \</span></div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D) \</span></div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B) \</span></div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C) \</span></div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C) \</span></div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D) \</span></div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A) \</span></div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D) \</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A) \</span></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C) \</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B) \</span></div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D) \</span></div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A) \</span></div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D) \</span></div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A) \</span></div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B) \</span></div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B) \</span></div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C) \</span></div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A) \</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C) \</span></div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A) \</span></div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B)</span></div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, B, D) \</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, C, D, B) \</span></div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, B, C) \</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, D, C, B) \</span></div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, D, C) \</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , A, B, C, D) \</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, A, D) \</span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, C, D, A) \</span></div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, A, C) \</span></div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, D, C, A) \</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, D, C) \</span></div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , B, A, C, D) \</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, A, D) \</span></div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, B, D, A) \</span></div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, A, B) \</span></div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, D, B, A) \</span></div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, D, B) \</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , C, A, B, D) \</span></div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, B, A) \</span></div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, C, A, B) \</span></div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, B, C) \</span></div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, A, C, B) \</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, A, C) \</span></div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, , D, B, C, A)</span></div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160;</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)</span></div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160;</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_REF_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \</span></div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \</span></div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \</span></div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_REF_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)</span></div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160;</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_REF_FROM_VEC4(valType, detail::vec4, detail::ref2, detail::ref3, detail::ref4)</span></div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \</span></div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \</span></div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \</span></div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \</span></div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B)</span></div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \</span></div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \</span></div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \</span></div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \</span></div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \</span></div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \</span></div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \</span></div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \</span></div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B)</span></div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B) \</span></div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \</span></div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \</span></div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \</span></div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \</span></div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \</span></div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \</span></div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \</span></div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \</span></div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \</span></div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \</span></div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \</span></div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \</span></div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \</span></div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \</span></div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \</span></div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B)</span></div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B) \</span></div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B) \</span></div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B) \</span></div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC2_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B)</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC2(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \</span></div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y) \</span></div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g) \</span></div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC2_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t)</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_VEC_FROM_VEC2(valType, detail::vec2, detail::vec2, detail::vec3, detail::vec4)</span></div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \</span></div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \</span></div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \</span></div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \</span></div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \</span></div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \</span></div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C)</span></div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \</span></div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \</span></div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \</span></div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \</span></div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \</span></div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \</span></div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \</span></div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \</span></div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \</span></div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \</span></div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \</span></div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \</span></div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \</span></div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \</span></div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \</span></div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \</span></div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \</span></div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \</span></div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \</span></div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C)</span></div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \</span></div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \</span></div>
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \</span></div>
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \</span></div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \</span></div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \</span></div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \</span></div>
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \</span></div>
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \</span></div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \</span></div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \</span></div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \</span></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \</span></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \</span></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \</span></div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \</span></div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \</span></div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \</span></div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \</span></div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \</span></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \</span></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \</span></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \</span></div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \</span></div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \</span></div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \</span></div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \</span></div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \</span></div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \</span></div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \</span></div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \</span></div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \</span></div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \</span></div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \</span></div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \</span></div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \</span></div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \</span></div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \</span></div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \</span></div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \</span></div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \</span></div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \</span></div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \</span></div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \</span></div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \</span></div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \</span></div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \</span></div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \</span></div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \</span></div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \</span></div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \</span></div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \</span></div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \</span></div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \</span></div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \</span></div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \</span></div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \</span></div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \</span></div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \</span></div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \</span></div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \</span></div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \</span></div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \</span></div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \</span></div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \</span></div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \</span></div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \</span></div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \</span></div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \</span></div>
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C)</span></div>
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;</div>
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C) \</span></div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC3_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C)</span></div>
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div>
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC3(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z) \</span></div>
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b) \</span></div>
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC3_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p)</span></div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;</div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_VEC_FROM_VEC3(valType, detail::vec3, detail::vec2, detail::vec3, detail::vec4)</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A) \</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B) \</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C) \</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D) \</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A) \</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B) \</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C) \</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D) \</span></div>
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A) \</span></div>
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B) \</span></div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C) \</span></div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D) \</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A) \</span></div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B) \</span></div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C) \</span></div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D)</span></div>
<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;</div>
<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A) \</span></div>
<div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B) \</span></div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C) \</span></div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D) \</span></div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A) \</span></div>
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B) \</span></div>
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C) \</span></div>
<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D) \</span></div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A) \</span></div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B) \</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C) \</span></div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D) \</span></div>
<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A) \</span></div>
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B) \</span></div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C) \</span></div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D) \</span></div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A) \</span></div>
<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B) \</span></div>
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C) \</span></div>
<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D) \</span></div>
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A) \</span></div>
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B) \</span></div>
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C) \</span></div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D) \</span></div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A) \</span></div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B) \</span></div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C) \</span></div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D) \</span></div>
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A) \</span></div>
<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B) \</span></div>
<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C) \</span></div>
<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D) \</span></div>
<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A) \</span></div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B) \</span></div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C) \</span></div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D) \</span></div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A) \</span></div>
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B) \</span></div>
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C) \</span></div>
<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D) \</span></div>
<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A) \</span></div>
<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B) \</span></div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C) \</span></div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D) \</span></div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A) \</span></div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B) \</span></div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C) \</span></div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D) \</span></div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A) \</span></div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B) \</span></div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C) \</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D) \</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A) \</span></div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B) \</span></div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C) \</span></div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D) \</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A) \</span></div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B) \</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C) \</span></div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D) \</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A) \</span></div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B) \</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C) \</span></div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D)</span></div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160;</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, A) \</span></div>
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, B) \</span></div>
<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, C) \</span></div>
<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, A, D) \</span></div>
<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, A) \</span></div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, B) \</span></div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, C) \</span></div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, B, D) \</span></div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, A) \</span></div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, B) \</span></div>
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, C) \</span></div>
<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, C, D) \</span></div>
<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, A) \</span></div>
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, B) \</span></div>
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, C) \</span></div>
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, A, D, D) \</span></div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, A) \</span></div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, B) \</span></div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, C) \</span></div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, A, D) \</span></div>
<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, A) \</span></div>
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, B) \</span></div>
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, C) \</span></div>
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, B, D) \</span></div>
<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, A) \</span></div>
<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, B) \</span></div>
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, C) \</span></div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, C, D) \</span></div>
<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, A) \</span></div>
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, B) \</span></div>
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, C) \</span></div>
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, B, D, D) \</span></div>
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, A) \</span></div>
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, B) \</span></div>
<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, C) \</span></div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, A, D) \</span></div>
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, A) \</span></div>
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, B) \</span></div>
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, C) \</span></div>
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, B, D) \</span></div>
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, A) \</span></div>
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, B) \</span></div>
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, C) \</span></div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, C, D) \</span></div>
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, A) \</span></div>
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, B) \</span></div>
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, C) \</span></div>
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, C, D, D) \</span></div>
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, A) \</span></div>
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, B) \</span></div>
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, C) \</span></div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, A, D) \</span></div>
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, A) \</span></div>
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, B) \</span></div>
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, C) \</span></div>
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, B, D) \</span></div>
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, A) \</span></div>
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, B) \</span></div>
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, C) \</span></div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, C, D) \</span></div>
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, A) \</span></div>
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, B) \</span></div>
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, C) \</span></div>
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, A, D, D, D) \</span></div>
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, A) \</span></div>
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, B) \</span></div>
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, C) \</span></div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, A, D) \</span></div>
<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, A) \</span></div>
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, B) \</span></div>
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, C) \</span></div>
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, B, D) \</span></div>
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, A) \</span></div>
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, B) \</span></div>
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, C) \</span></div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, C, D) \</span></div>
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, A) \</span></div>
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, B) \</span></div>
<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, C) \</span></div>
<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, A, D, D) \</span></div>
<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, A) \</span></div>
<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, B) \</span></div>
<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, C) \</span></div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, A, D) \</span></div>
<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, A) \</span></div>
<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, B) \</span></div>
<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, C) \</span></div>
<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, B, D) \</span></div>
<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, A) \</span></div>
<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, B) \</span></div>
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, C) \</span></div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, C, D) \</span></div>
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, A) \</span></div>
<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, B) \</span></div>
<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, C) \</span></div>
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, B, D, D) \</span></div>
<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, A) \</span></div>
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, B) \</span></div>
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, C) \</span></div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, A, D) \</span></div>
<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, A) \</span></div>
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, B) \</span></div>
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, C) \</span></div>
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, B, D) \</span></div>
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, A) \</span></div>
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, B) \</span></div>
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, C) \</span></div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, C, D) \</span></div>
<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, A) \</span></div>
<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, B) \</span></div>
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, C) \</span></div>
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, C, D, D) \</span></div>
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, A) \</span></div>
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, B) \</span></div>
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, C) \</span></div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, A, D) \</span></div>
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, A) \</span></div>
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, B) \</span></div>
<div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, C) \</span></div>
<div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, B, D) \</span></div>
<div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, A) \</span></div>
<div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, B) \</span></div>
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, C) \</span></div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, C, D) \</span></div>
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, A) \</span></div>
<div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, B) \</span></div>
<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, C) \</span></div>
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, B, D, D, D) \</span></div>
<div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, A) \</span></div>
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, B) \</span></div>
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, C) \</span></div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, A, D) \</span></div>
<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, A) \</span></div>
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, B) \</span></div>
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, C) \</span></div>
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, B, D) \</span></div>
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, A) \</span></div>
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, B) \</span></div>
<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, C) \</span></div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, C, D) \</span></div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, A) \</span></div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, B) \</span></div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, C) \</span></div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, A, D, D) \</span></div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, A) \</span></div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, B) \</span></div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, C) \</span></div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, A, D) \</span></div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, A) \</span></div>
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, B) \</span></div>
<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, C) \</span></div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, B, D) \</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, A) \</span></div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, B) \</span></div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, C) \</span></div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, C, D) \</span></div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, A) \</span></div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, B) \</span></div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, C) \</span></div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, B, D, D) \</span></div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, A) \</span></div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, B) \</span></div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, C) \</span></div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, A, D) \</span></div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, A) \</span></div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, B) \</span></div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, C) \</span></div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, B, D) \</span></div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, A) \</span></div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, B) \</span></div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, C) \</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, C, D) \</span></div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, A) \</span></div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, B) \</span></div>
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, C) \</span></div>
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, C, D, D) \</span></div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, A) \</span></div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, B) \</span></div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, C) \</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, A, D) \</span></div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, A) \</span></div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, B) \</span></div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, C) \</span></div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, B, D) \</span></div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, A) \</span></div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, B) \</span></div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, C) \</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, C, D) \</span></div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, A) \</span></div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, B) \</span></div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, C) \</span></div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, C, D, D, D) \</span></div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, A) \</span></div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, B) \</span></div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, C) \</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, A, D) \</span></div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, A) \</span></div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, B) \</span></div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, C) \</span></div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, B, D) \</span></div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, A) \</span></div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, B) \</span></div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, C) \</span></div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, C, D) \</span></div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, A) \</span></div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, B) \</span></div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, C) \</span></div>
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, A, D, D) \</span></div>
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, A) \</span></div>
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, B) \</span></div>
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, C) \</span></div>
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, A, D) \</span></div>
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, A) \</span></div>
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, B) \</span></div>
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, C) \</span></div>
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, B, D) \</span></div>
<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, A) \</span></div>
<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, B) \</span></div>
<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, C) \</span></div>
<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, C, D) \</span></div>
<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, A) \</span></div>
<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, B) \</span></div>
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, C) \</span></div>
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, B, D, D) \</span></div>
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, A) \</span></div>
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, B) \</span></div>
<div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, C) \</span></div>
<div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, A, D) \</span></div>
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, A) \</span></div>
<div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, B) \</span></div>
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, C) \</span></div>
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, B, D) \</span></div>
<div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, A) \</span></div>
<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, B) \</span></div>
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, C) \</span></div>
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, C, D) \</span></div>
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, A) \</span></div>
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, B) \</span></div>
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, C) \</span></div>
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, C, D, D) \</span></div>
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, A) \</span></div>
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, B) \</span></div>
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, C) \</span></div>
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, A, D) \</span></div>
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, A) \</span></div>
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, B) \</span></div>
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, C) \</span></div>
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, B, D) \</span></div>
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, A) \</span></div>
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, B) \</span></div>
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, C) \</span></div>
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, C, D) \</span></div>
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, A) \</span></div>
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, B) \</span></div>
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, C) \</span></div>
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_ENTRY(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_TYPE, const, D, D, D, D)</span></div>
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;</div>
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC2_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC3_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC3_TYPE, A, B, C, D) \</span></div>
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC4_FROM_VEC4_SWIZZLE(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC4_TYPE, A, B, C, D)</span></div>
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;</div>
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="preprocessor">#define GLM_SWIZZLE_GEN_VEC_FROM_VEC4(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE) \</span></div>
<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, x, y, z, w) \</span></div>
<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, r, g, b, a) \</span></div>
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="preprocessor"> GLM_SWIZZLE_GEN_VEC_FROM_VEC4_COMP(TMPL_TYPE, PRECISION, CLASS_TYPE, SWIZZLED_VEC2_TYPE, SWIZZLED_VEC3_TYPE, SWIZZLED_VEC4_TYPE, s, t, p, q)</span></div>
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;</div>
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment">//GLM_SWIZZLE_GEN_VEC_FROM_VEC4(valType, detail::vec4, detail::vec2, detail::vec3, detail::vec4)</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00006.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _vectorize.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_vectorize.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00006_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00006_source.html">_vectorize.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,194 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: _vectorize.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_e529a619cfdec1fa4c331fb042fd332f.html">detail</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">_vectorize.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00006.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00128.html">type_vec1.hpp</a>&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00129.html">type_vec2.hpp</a>&quot;</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00130.html">type_vec3.hpp</a>&quot;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00131.html">type_vec4.hpp</a>&quot;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;</div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a>{</div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span>detail</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">struct </span>functor1{};</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;</div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <span class="keyword">struct </span>functor1&lt;R, T, P, tvec1&gt;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; {</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec1&lt;R, P&gt; call(R (*Func) (T x), tvec1&lt;T, P&gt; <span class="keyword">const</span> &amp; v)</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; {</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; <span class="keywordflow">return</span> tvec1&lt;R, P&gt;(Func(v.x));</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; };</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">struct </span>functor1&lt;R, T, P, tvec2&gt;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; {</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec2&lt;R, P&gt; call(R (*Func) (T x), tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; v)</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; {</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="keywordflow">return</span> tvec2&lt;R, P&gt;(Func(v.x), Func(v.y));</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; }</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; };</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">struct </span>functor1&lt;R, T, P, tvec3&gt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; {</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec3&lt;R, P&gt; call(R (*Func) (T x), tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; v)</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordflow">return</span> tvec3&lt;R, P&gt;(Func(v.x), Func(v.y), Func(v.z));</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; }</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; };</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">struct </span>functor1&lt;R, T, P, tvec4&gt;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; {</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec4&lt;R, P&gt; call(R (*Func) (T x), tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; v)</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; {</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keywordflow">return</span> tvec4&lt;R, P&gt;(Func(v.x), Func(v.y), Func(v.z), Func(v.w));</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; }</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; };</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">struct </span>functor2{};</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">struct </span>functor2&lt;T, P, tvec1&gt;</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; {</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec1&lt;T, P&gt; call(T (*Func) (T x, T y), tvec1&lt;T, P&gt; <span class="keyword">const</span> &amp; a, tvec1&lt;T, P&gt; <span class="keyword">const</span> &amp; b)</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; {</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keywordflow">return</span> tvec1&lt;T, P&gt;(Func(a.x, b.x));</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; }</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; };</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keyword">struct </span>functor2&lt;T, P, tvec2&gt;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; {</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec2&lt;T, P&gt; call(T (*Func) (T x, T y), tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; a, tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; b)</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; {</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> tvec2&lt;T, P&gt;(Func(a.x, b.x), Func(a.y, b.y));</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; }</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; };</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keyword">struct </span>functor2&lt;T, P, tvec3&gt;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec3&lt;T, P&gt; call(T (*Func) (T x, T y), tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; a, tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; b)</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; {</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keywordflow">return</span> tvec3&lt;T, P&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z));</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; }</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; };</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; <span class="keyword">struct </span>functor2&lt;T, P, tvec4&gt;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; {</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec4&lt;T, P&gt; call(T (*Func) (T x, T y), tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; a, tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; b)</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; {</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">return</span> tvec4&lt;T, P&gt;(Func(a.x, b.x), Func(a.y, b.y), Func(a.z, b.z), Func(a.w, b.w));</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; };</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keyword">struct </span>functor2_vec_sca{};</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;T, P, tvec1&gt;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; {</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec1&lt;T, P&gt; call(T (*Func) (T x, T y), tvec1&lt;T, P&gt; <span class="keyword">const</span> &amp; a, T b)</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> tvec1&lt;T, P&gt;(Func(a.x, b));</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; };</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;T, P, tvec2&gt;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; {</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec2&lt;T, P&gt; call(T (*Func) (T x, T y), tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; a, T b)</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> tvec2&lt;T, P&gt;(Func(a.x, b), Func(a.y, b));</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; };</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;T, P, tvec3&gt;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; {</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec3&lt;T, P&gt; call(T (*Func) (T x, T y), tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; a, T b)</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; {</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">return</span> tvec3&lt;T, P&gt;(Func(a.x, b), Func(a.y, b), Func(a.z, b));</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; }</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; };</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keyword">struct </span>functor2_vec_sca&lt;T, P, tvec4&gt;</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; GLM_FUNC_QUALIFIER <span class="keyword">static</span> tvec4&lt;T, P&gt; call(T (*Func) (T x, T y), tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; a, T b)</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordflow">return</span> tvec4&lt;T, P&gt;(Func(a.x, b), Func(a.y, b), Func(a.z, b), Func(a.w, b));</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; }</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; };</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;}<span class="comment">//namespace detail</span></div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="ttc" id="a00130_html"><div class="ttname"><a href="a00130.html">type_vec3.hpp</a></div><div class="ttdoc">GLM Core </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00129_html"><div class="ttname"><a href="a00129.html">type_vec2.hpp</a></div><div class="ttdoc">GLM Core </div></div>
<div class="ttc" id="a00131_html"><div class="ttname"><a href="a00131.html">type_vec4.hpp</a></div><div class="ttdoc">GLM Core </div></div>
<div class="ttc" id="a00128_html"><div class="ttname"><a href="a00128.html">type_vec1.hpp</a></div><div class="ttdoc">GLM Core </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

141
thirdparty/glm/doc/api/a00007.html vendored Normal file
View File

@@ -0,0 +1,141 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: associated_min_max.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">associated_min_max.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00007_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga7d9c8785230c8db60f72ec8975f1ba45">associatedMax</a> (T x, U a, T y, U b)</td></tr>
<tr class="separator:ga7d9c8785230c8db60f72ec8975f1ba45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga10ba6001798f42a0f941f19ff30e066a"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga10ba6001798f42a0f941f19ff30e066a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec2&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga10ba6001798f42a0f941f19ff30e066a">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b)</td></tr>
<tr class="separator:ga10ba6001798f42a0f941f19ff30e066a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga62ca63cca6b21387b8a25474f441a869"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga62ca63cca6b21387b8a25474f441a869"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga62ca63cca6b21387b8a25474f441a869">associatedMax</a> (T x, vecType&lt; U, P &gt; const &amp;a, T y, vecType&lt; U, P &gt; const &amp;b)</td></tr>
<tr class="separator:ga62ca63cca6b21387b8a25474f441a869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5364520173815b66a9d9e452c38bf312"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga5364520173815b66a9d9e452c38bf312"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga5364520173815b66a9d9e452c38bf312">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b)</td></tr>
<tr class="separator:ga5364520173815b66a9d9e452c38bf312"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:gaec891e363d91abbf3a4443cf2f652209"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#gaec891e363d91abbf3a4443cf2f652209">associatedMax</a> (T x, U a, T y, U b, T z, U c)</td></tr>
<tr class="separator:gaec891e363d91abbf3a4443cf2f652209"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga065a0c1eb7837118ef79be88dfd78487"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga065a0c1eb7837118ef79be88dfd78487"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga065a0c1eb7837118ef79be88dfd78487">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b, vecType&lt; T, P &gt; const &amp;z, vecType&lt; U, P &gt; const &amp;c)</td></tr>
<tr class="separator:ga065a0c1eb7837118ef79be88dfd78487"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga553431a468e251623408603bcb51c9cb"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga553431a468e251623408603bcb51c9cb"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga553431a468e251623408603bcb51c9cb">associatedMax</a> (T x, vecType&lt; U, P &gt; const &amp;a, T y, vecType&lt; U, P &gt; const &amp;b, T z, vecType&lt; U, P &gt; const &amp;c)</td></tr>
<tr class="separator:ga553431a468e251623408603bcb51c9cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga327136e6a568569c03a056f90814b656"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga327136e6a568569c03a056f90814b656"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga327136e6a568569c03a056f90814b656">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b, vecType&lt; T, P &gt; const &amp;z, U c)</td></tr>
<tr class="separator:ga327136e6a568569c03a056f90814b656"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga3038ffcb43eaa6af75897a99a5047ccc">associatedMax</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
<tr class="separator:ga3038ffcb43eaa6af75897a99a5047ccc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf607886421c35cd7e4f41a50d7c330e3"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gaf607886421c35cd7e4f41a50d7c330e3"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#gaf607886421c35cd7e4f41a50d7c330e3">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b, vecType&lt; T, P &gt; const &amp;z, vecType&lt; U, P &gt; const &amp;c, vecType&lt; T, P &gt; const &amp;w, vecType&lt; U, P &gt; const &amp;d)</td></tr>
<tr class="separator:gaf607886421c35cd7e4f41a50d7c330e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7a165de1af9a3f9193516a3b47407086"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga7a165de1af9a3f9193516a3b47407086"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga7a165de1af9a3f9193516a3b47407086">associatedMax</a> (T x, vecType&lt; U, P &gt; const &amp;a, T y, vecType&lt; U, P &gt; const &amp;b, T z, vecType&lt; U, P &gt; const &amp;c, T w, vecType&lt; U, P &gt; const &amp;d)</td></tr>
<tr class="separator:ga7a165de1af9a3f9193516a3b47407086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3122fbe8133ea54749b10fb93e8a167e"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga3122fbe8133ea54749b10fb93e8a167e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a> (vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b, vecType&lt; T, P &gt; const &amp;z, U c, vecType&lt; T, P &gt; const &amp;w, U d)</td></tr>
<tr class="separator:ga3122fbe8133ea54749b10fb93e8a167e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P&gt; </td></tr>
<tr class="memitem:gacc01bd272359572fc28437ae214a02df"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#gacc01bd272359572fc28437ae214a02df">associatedMin</a> (T x, U a, T y, U b)</td></tr>
<tr class="separator:gacc01bd272359572fc28437ae214a02df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8b538d10872626668a078e2bd495af25"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga8b538d10872626668a078e2bd495af25"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec2&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga8b538d10872626668a078e2bd495af25">associatedMin</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b)</td></tr>
<tr class="separator:ga8b538d10872626668a078e2bd495af25"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1dccff48fa5650c746533de83467da6e"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga1dccff48fa5650c746533de83467da6e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga1dccff48fa5650c746533de83467da6e">associatedMin</a> (T x, const vecType&lt; U, P &gt; &amp;a, T y, const vecType&lt; U, P &gt; &amp;b)</td></tr>
<tr class="separator:ga1dccff48fa5650c746533de83467da6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga076717f4e07c6ae725cc1382d1ac4869"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga076717f4e07c6ae725cc1382d1ac4869"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga076717f4e07c6ae725cc1382d1ac4869">associatedMin</a> (vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b)</td></tr>
<tr class="separator:ga076717f4e07c6ae725cc1382d1ac4869"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:gad0aa8f86259a26d839d34a3577a923fc"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#gad0aa8f86259a26d839d34a3577a923fc">associatedMin</a> (T x, U a, T y, U b, T z, U c)</td></tr>
<tr class="separator:gad0aa8f86259a26d839d34a3577a923fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5bc6b9acbf9e060d58a342fbe3b73d43"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga5bc6b9acbf9e060d58a342fbe3b73d43"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga5bc6b9acbf9e060d58a342fbe3b73d43">associatedMin</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b, vecType&lt; T, P &gt; const &amp;z, vecType&lt; U, P &gt; const &amp;c)</td></tr>
<tr class="separator:ga5bc6b9acbf9e060d58a342fbe3b73d43"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U &gt; </td></tr>
<tr class="memitem:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL U&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga432224ebe2085eaa2b63a077ecbbbff6">associatedMin</a> (T x, U a, T y, U b, T z, U c, T w, U d)</td></tr>
<tr class="separator:ga432224ebe2085eaa2b63a077ecbbbff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga88e031f22b80215505928900d3dde549"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga88e031f22b80215505928900d3dde549"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga88e031f22b80215505928900d3dde549">associatedMin</a> (vecType&lt; T, P &gt; const &amp;x, vecType&lt; U, P &gt; const &amp;a, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;b, vecType&lt; T, P &gt; const &amp;z, vecType&lt; U, P &gt; const &amp;c, vecType&lt; T, P &gt; const &amp;w, vecType&lt; U, P &gt; const &amp;d)</td></tr>
<tr class="separator:ga88e031f22b80215505928900d3dde549"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0f63b0dce5a5c3242cc6d9847e7d14f1"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga0f63b0dce5a5c3242cc6d9847e7d14f1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga0f63b0dce5a5c3242cc6d9847e7d14f1">associatedMin</a> (T x, vecType&lt; U, P &gt; const &amp;a, T y, vecType&lt; U, P &gt; const &amp;b, T z, vecType&lt; U, P &gt; const &amp;c, T w, vecType&lt; U, P &gt; const &amp;d)</td></tr>
<tr class="separator:ga0f63b0dce5a5c3242cc6d9847e7d14f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga00a949fd345f4b31b259f033d3ab4a1c"><td class="memTemplParams" colspan="2">template&lt;typename T , typename U , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga00a949fd345f4b31b259f033d3ab4a1c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; U, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a> (vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b, vecType&lt; T, P &gt; const &amp;z, U c, vecType&lt; T, P &gt; const &amp;w, U d)</td></tr>
<tr class="separator:ga00a949fd345f4b31b259f033d3ab4a1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00181.html">GLM_GTX_associated_min_max</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
<a class="el" href="a00192.html" title="Min and max functions for 3 to 4 parameters. ">GLM_GTX_extented_min_max</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00007_source.html">associated_min_max.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,207 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: associated_min_max.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">associated_min_max.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00007.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependency:</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_associated_min_max extension included&quot;)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(T x, U a, T y, U b);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; GLM_FUNC_DECL tvec2&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; T x, <span class="keyword">const</span> vecType&lt;U, P&gt;&amp; a,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; T y, <span class="keyword">const</span> vecType&lt;U, P&gt;&amp; b);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, U a,</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, U b);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; T x, U a,</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; T y, U b,</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; T z, U c);</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c);</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; T x, U a,</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; T y, U b,</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; T z, U c,</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; T w, U d);</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c,</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; w, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; d);</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; T x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; T y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; T z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c,</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; T w, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; d);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">associatedMin</a>(</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, U a,</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, U b,</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, U c,</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; w, U d);</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(T x, U a, T y, U b);</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; GLM_FUNC_DECL tvec2&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b);</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; T x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; T y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b);</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, U a,</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, U b);</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; T x, U a,</div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; T y, U b,</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; T z, U c);</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c);</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; T x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; T y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; T z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, U a,</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, U b,</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, U c);</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U&gt;</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; GLM_FUNC_DECL U <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; T x, U a,</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; T y, U b,</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; T z, U c,</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; T w, U d);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c,</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; w, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; d);</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; T x, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; a,</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; T y, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; b,</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; T z, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; c,</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; T w, vecType&lt;U, P&gt; <span class="keyword">const</span> &amp; d);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> T, <span class="keyword">typename</span> U, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; GLM_FUNC_DECL vecType&lt;U, P&gt; <a class="code" href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">associatedMax</a>(</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; x, U a,</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; y, U b,</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; z, U c,</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; w, U d);</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;} <span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="preprocessor">#include &quot;associated_min_max.inl&quot;</span></div>
<div class="ttc" id="a00181_html_ga3122fbe8133ea54749b10fb93e8a167e"><div class="ttname"><a href="a00181.html#ga3122fbe8133ea54749b10fb93e8a167e">glm::associatedMax</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; U, P &gt; associatedMax(vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b, vecType&lt; T, P &gt; const &amp;z, U c, vecType&lt; T, P &gt; const &amp;w, U d)</div><div class="ttdoc">Maximum comparison between 4 variables and returns 4 associated variable values. </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00181_html_ga00a949fd345f4b31b259f033d3ab4a1c"><div class="ttname"><a href="a00181.html#ga00a949fd345f4b31b259f033d3ab4a1c">glm::associatedMin</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; U, P &gt; associatedMin(vecType&lt; T, P &gt; const &amp;x, U a, vecType&lt; T, P &gt; const &amp;y, U b, vecType&lt; T, P &gt; const &amp;z, U c, vecType&lt; T, P &gt; const &amp;w, U d)</div><div class="ttdoc">Minimum comparison between 4 variables and returns 4 associated variable values. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

102
thirdparty/glm/doc/api/a00008.html vendored Normal file
View File

@@ -0,0 +1,102 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: bit.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bit.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00008_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga0dcc8fe7c3d3ad60dea409281efa3d05">highestBitValue</a> (genIUType Value)</td></tr>
<tr class="separator:ga0dcc8fe7c3d3ad60dea409281efa3d05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5eea3a4d429040af13d39a7d7cd84d73"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga5eea3a4d429040af13d39a7d7cd84d73"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga5eea3a4d429040af13d39a7d7cd84d73">highestBitValue</a> (vecType&lt; T, P &gt; const &amp;value)</td></tr>
<tr class="separator:ga5eea3a4d429040af13d39a7d7cd84d73"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a> (genIUType Value)</td></tr>
<tr class="separator:ga2ff6568089f3a9b67f5c30918855fc6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga8cda2459871f574a0aecbe702ac93291"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga8cda2459871f574a0aecbe702ac93291">powerOfTwoAbove</a> (genIUType Value)</td></tr>
<tr class="separator:ga8cda2459871f574a0aecbe702ac93291"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafe08808a50226b75b50e640a08b32ddc"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gafe08808a50226b75b50e640a08b32ddc"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#gafe08808a50226b75b50e640a08b32ddc">powerOfTwoAbove</a> (vecType&lt; T, P &gt; const &amp;value)</td></tr>
<tr class="separator:gafe08808a50226b75b50e640a08b32ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga3de7df63c589325101a2817a56f8e29d"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga3de7df63c589325101a2817a56f8e29d">powerOfTwoBelow</a> (genIUType Value)</td></tr>
<tr class="separator:ga3de7df63c589325101a2817a56f8e29d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae33bb1ca2b55846b23a0f0796a679195"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gae33bb1ca2b55846b23a0f0796a679195"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#gae33bb1ca2b55846b23a0f0796a679195">powerOfTwoBelow</a> (vecType&lt; T, P &gt; const &amp;value)</td></tr>
<tr class="separator:gae33bb1ca2b55846b23a0f0796a679195"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga5f65973a5d2ea38c719e6a663149ead9">powerOfTwoNearest</a> (genIUType Value)</td></tr>
<tr class="separator:ga5f65973a5d2ea38c719e6a663149ead9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2d7e85995d097518b8d70cd409bda39e"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga2d7e85995d097518b8d70cd409bda39e"><td class="memTemplItemLeft" align="right" valign="top">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00182.html#ga2d7e85995d097518b8d70cd409bda39e">powerOfTwoNearest</a> (vecType&lt; T, P &gt; const &amp;value)</td></tr>
<tr class="separator:ga2d7e85995d097518b8d70cd409bda39e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00182.html">GLM_GTX_bit</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
gtc_half_float (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00008_source.html">bit.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,111 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: bit.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">bit.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00008.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../gtc/bitfield.hpp&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;</div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_bit extension is deprecated, include GLM_GTC_bitfield and GLM_GTC_integer instead&quot;)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;{</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00182.html#ga5eea3a4d429040af13d39a7d7cd84d73">highestBitValue</a>(genIUType Value);</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00182.html#ga2ff6568089f3a9b67f5c30918855fc6f">lowestBitValue</a>(genIUType Value);</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00182.html#ga5eea3a4d429040af13d39a7d7cd84d73">highestBitValue</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; value);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00182.html#gafe08808a50226b75b50e640a08b32ddc">powerOfTwoAbove</a>(genIUType Value);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00182.html#gafe08808a50226b75b50e640a08b32ddc">powerOfTwoAbove</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; value);</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00182.html#gae33bb1ca2b55846b23a0f0796a679195">powerOfTwoBelow</a>(genIUType Value);</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00182.html#gae33bb1ca2b55846b23a0f0796a679195">powerOfTwoBelow</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; value);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL genIUType <a class="code" href="a00182.html#ga2d7e85995d097518b8d70cd409bda39e">powerOfTwoNearest</a>(genIUType Value);</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; GLM_DEPRECATED GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00182.html#ga2d7e85995d097518b8d70cd409bda39e">powerOfTwoNearest</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; value);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;} <span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="preprocessor">#include &quot;bit.inl&quot;</span></div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;</div>
<div class="ttc" id="a00182_html_gae33bb1ca2b55846b23a0f0796a679195"><div class="ttname"><a href="a00182.html#gae33bb1ca2b55846b23a0f0796a679195">glm::powerOfTwoBelow</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt; powerOfTwoBelow(vecType&lt; T, P &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is just lower the input value. </div></div>
<div class="ttc" id="a00182_html_gafe08808a50226b75b50e640a08b32ddc"><div class="ttname"><a href="a00182.html#gafe08808a50226b75b50e640a08b32ddc">glm::powerOfTwoAbove</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt; powerOfTwoAbove(vecType&lt; T, P &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is just higher the input value. </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00182_html_ga2ff6568089f3a9b67f5c30918855fc6f"><div class="ttname"><a href="a00182.html#ga2ff6568089f3a9b67f5c30918855fc6f">glm::lowestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL genIUType lowestBitValue(genIUType Value)</div></div>
<div class="ttc" id="a00182_html_ga5eea3a4d429040af13d39a7d7cd84d73"><div class="ttname"><a href="a00182.html#ga5eea3a4d429040af13d39a7d7cd84d73">glm::highestBitValue</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; highestBitValue(vecType&lt; T, P &gt; const &amp;value)</div><div class="ttdoc">Find the highest bit set to 1 in a integer variable and return its value. </div></div>
<div class="ttc" id="a00182_html_ga2d7e85995d097518b8d70cd409bda39e"><div class="ttname"><a href="a00182.html#ga2d7e85995d097518b8d70cd409bda39e">glm::powerOfTwoNearest</a></div><div class="ttdeci">GLM_DEPRECATED GLM_FUNC_DECL vecType&lt; T, P &gt; powerOfTwoNearest(vecType&lt; T, P &gt; const &amp;value)</div><div class="ttdoc">Return the power of two number which value is the closet to the input value. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

137
thirdparty/glm/doc/api/a00009.html vendored Normal file
View File

@@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: bitfield.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_9440d7c11b99dcd7e5d369c7cf9802fe.html">gtc</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">bitfield.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00009_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga46f9295abe3b5c7658f5b13c7f819f0a">bitfieldFillOne</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
<tr class="separator:ga46f9295abe3b5c7658f5b13c7f819f0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad789042e84e8292ae95dc1af856f2ad5"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gad789042e84e8292ae95dc1af856f2ad5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#gad789042e84e8292ae95dc1af856f2ad5">bitfieldFillOne</a> (vecType&lt; T, P &gt; const &amp;Value, int FirstBit, int BitCount)</td></tr>
<tr class="separator:gad789042e84e8292ae95dc1af856f2ad5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga697b86998b7d74ee0a69d8e9f8819fee">bitfieldFillZero</a> (genIUType Value, int FirstBit, int BitCount)</td></tr>
<tr class="separator:ga697b86998b7d74ee0a69d8e9f8819fee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaddba3196316b0bd240295b09b43c2958"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gaddba3196316b0bd240295b09b43c2958"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#gaddba3196316b0bd240295b09b43c2958">bitfieldFillZero</a> (vecType&lt; T, P &gt; const &amp;Value, int FirstBit, int BitCount)</td></tr>
<tr class="separator:gaddba3196316b0bd240295b09b43c2958"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga24cad0069f9a0450abd80b3e89501adf"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga24cad0069f9a0450abd80b3e89501adf">bitfieldInterleave</a> (int8 x, int8 y)</td></tr>
<tr class="separator:ga24cad0069f9a0450abd80b3e89501adf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9a4976a529aec2cee56525e1165da484"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint16&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga9a4976a529aec2cee56525e1165da484">bitfieldInterleave</a> (uint8 x, uint8 y)</td></tr>
<tr class="separator:ga9a4976a529aec2cee56525e1165da484"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac51c33a394593f0631fa3aa5bb778809"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gac51c33a394593f0631fa3aa5bb778809">bitfieldInterleave</a> (int16 x, int16 y)</td></tr>
<tr class="separator:gac51c33a394593f0631fa3aa5bb778809"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga94f3646a5667f4be56f8dcf3310e963f">bitfieldInterleave</a> (uint16 x, uint16 y)</td></tr>
<tr class="separator:ga94f3646a5667f4be56f8dcf3310e963f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gaebb756a24a0784e3d6fba8bd011ab77a">bitfieldInterleave</a> (int32 x, int32 y)</td></tr>
<tr class="separator:gaebb756a24a0784e3d6fba8bd011ab77a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga2f1e2b3fe699e7d897ae38b2115ddcbd">bitfieldInterleave</a> (uint32 x, uint32 y)</td></tr>
<tr class="separator:ga2f1e2b3fe699e7d897ae38b2115ddcbd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8fdb724dccd4a07d57efc01147102137"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga8fdb724dccd4a07d57efc01147102137">bitfieldInterleave</a> (int8 x, int8 y, int8 z)</td></tr>
<tr class="separator:ga8fdb724dccd4a07d57efc01147102137"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga9fc2a0dd5dcf8b00e113f272a5feca93">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z)</td></tr>
<tr class="separator:ga9fc2a0dd5dcf8b00e113f272a5feca93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa901c36a842fa5d126ea650549f17b24"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gaa901c36a842fa5d126ea650549f17b24">bitfieldInterleave</a> (int16 x, int16 y, int16 z)</td></tr>
<tr class="separator:gaa901c36a842fa5d126ea650549f17b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga3afd6d38881fe3948c53d4214d2197fd">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z)</td></tr>
<tr class="separator:ga3afd6d38881fe3948c53d4214d2197fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad2075d96a6640121edaa98ea534102ca"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gad2075d96a6640121edaa98ea534102ca">bitfieldInterleave</a> (int32 x, int32 y, int32 z)</td></tr>
<tr class="separator:gad2075d96a6640121edaa98ea534102ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab19fbc739fc0cf7247978602c36f7da8"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gab19fbc739fc0cf7247978602c36f7da8">bitfieldInterleave</a> (uint32 x, uint32 y, uint32 z)</td></tr>
<tr class="separator:gab19fbc739fc0cf7247978602c36f7da8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga8a44ae22f5c953b296c42d067dccbe6d">bitfieldInterleave</a> (int8 x, int8 y, int8 z, int8 w)</td></tr>
<tr class="separator:ga8a44ae22f5c953b296c42d067dccbe6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga14bb274d54a3c26f4919dd7ed0dd0c36">bitfieldInterleave</a> (uint8 x, uint8 y, uint8 z, uint8 w)</td></tr>
<tr class="separator:ga14bb274d54a3c26f4919dd7ed0dd0c36"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL int64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#ga180a63161e1319fbd5a53c84d0429c7a">bitfieldInterleave</a> (int16 x, int16 y, int16 z, int16 w)</td></tr>
<tr class="separator:ga180a63161e1319fbd5a53c84d0429c7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafca8768671a14c8016facccb66a89f26"><td class="memItemLeft" align="right" valign="top">GLM_FUNC_DECL uint64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a> (uint16 x, uint16 y, uint16 z, uint16 w)</td></tr>
<tr class="separator:gafca8768671a14c8016facccb66a89f26"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga2eb49678a344ce1495bdb5586d9896b9">bitfieldRotateLeft</a> (genIUType In, int Shift)</td></tr>
<tr class="separator:ga2eb49678a344ce1495bdb5586d9896b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga410d130917d85b865718e3ebc32cf0ef"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga410d130917d85b865718e3ebc32cf0ef"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga410d130917d85b865718e3ebc32cf0ef">bitfieldRotateLeft</a> (vecType&lt; T, P &gt; const &amp;In, int Shift)</td></tr>
<tr class="separator:ga410d130917d85b865718e3ebc32cf0ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga1c33d075c5fb8bd8dbfd5092bfc851ca">bitfieldRotateRight</a> (genIUType In, int Shift)</td></tr>
<tr class="separator:ga1c33d075c5fb8bd8dbfd5092bfc851ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga96b56fd2adad1eeaee9e10dfe83904ba"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga96b56fd2adad1eeaee9e10dfe83904ba"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga96b56fd2adad1eeaee9e10dfe83904ba">bitfieldRotateRight</a> (vecType&lt; T, P &gt; const &amp;In, int Shift)</td></tr>
<tr class="separator:ga96b56fd2adad1eeaee9e10dfe83904ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplParams" colspan="2">template&lt;typename genIUType &gt; </td></tr>
<tr class="memitem:gad7eba518a0b71662114571ee76939f8a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genIUType&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#gad7eba518a0b71662114571ee76939f8a">mask</a> (genIUType Bits)</td></tr>
<tr class="separator:gad7eba518a0b71662114571ee76939f8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga073dbd8642f550b51da3572541431c1c"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecIUType&gt; </td></tr>
<tr class="memitem:ga073dbd8642f550b51da3572541431c1c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecIUType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00160.html#ga073dbd8642f550b51da3572541431c1c">mask</a> (vecIUType&lt; T, P &gt; const &amp;v)</td></tr>
<tr class="separator:ga073dbd8642f550b51da3572541431c1c"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00160.html">GLM_GTC_bitfield</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
<a class="el" href="a00160.html" title="Allow to perform bit operations on integer values. ">GLM_GTC_bitfield</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00009_source.html">bitfield.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,149 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: bitfield.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_9440d7c11b99dcd7e5d369c7cf9802fe.html">gtc</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">bitfield.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00009.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../detail/setup.hpp&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../detail/precision.hpp&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../detail/type_int.hpp&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;../detail/_vectorize.hpp&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_bitfield extension included&quot;)</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;{</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00160.html#ga073dbd8642f550b51da3572541431c1c">mask</a>(genIUType Bits);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecIUType&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; GLM_FUNC_DECL vecIUType&lt;T, P&gt; <a class="code" href="a00160.html#ga073dbd8642f550b51da3572541431c1c">mask</a>(vecIUType&lt;T, P&gt; <span class="keyword">const</span> &amp; v);</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00160.html#ga96b56fd2adad1eeaee9e10dfe83904ba">bitfieldRotateRight</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00160.html#ga96b56fd2adad1eeaee9e10dfe83904ba">bitfieldRotateRight</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; In, <span class="keywordtype">int</span> Shift);</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00160.html#ga410d130917d85b865718e3ebc32cf0ef">bitfieldRotateLeft</a>(genIUType In, <span class="keywordtype">int</span> Shift);</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00160.html#ga410d130917d85b865718e3ebc32cf0ef">bitfieldRotateLeft</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; In, <span class="keywordtype">int</span> Shift);</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00160.html#gad789042e84e8292ae95dc1af856f2ad5">bitfieldFillOne</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00160.html#gad789042e84e8292ae95dc1af856f2ad5">bitfieldFillOne</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genIUType&gt;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; GLM_FUNC_DECL genIUType <a class="code" href="a00160.html#gaddba3196316b0bd240295b09b43c2958">bitfieldFillZero</a>(genIUType Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00160.html#gaddba3196316b0bd240295b09b43c2958">bitfieldFillZero</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; Value, <span class="keywordtype">int</span> FirstBit, <span class="keywordtype">int</span> BitCount);</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; GLM_FUNC_DECL int16 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y);</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; GLM_FUNC_DECL uint16 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y);</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y);</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y);</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; GLM_FUNC_DECL int64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y);</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; GLM_FUNC_DECL uint64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z);</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z);</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; GLM_FUNC_DECL int64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z);</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; GLM_FUNC_DECL uint64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; GLM_FUNC_DECL int64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int32 x, int32 y, int32 z);</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160;</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; GLM_FUNC_DECL uint64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint32 x, uint32 y, uint32 z);</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; GLM_FUNC_DECL int32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int8 x, int8 y, int8 z, int8 w);</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; GLM_FUNC_DECL uint32 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint8 x, uint8 y, uint8 z, uint8 w);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; GLM_FUNC_DECL int64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(int16 x, int16 y, int16 z, int16 w);</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; GLM_FUNC_DECL uint64 <a class="code" href="a00160.html#gafca8768671a14c8016facccb66a89f26">bitfieldInterleave</a>(uint16 x, uint16 y, uint16 z, uint16 w);</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;} <span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="preprocessor">#include &quot;bitfield.inl&quot;</span></div>
<div class="ttc" id="a00160_html_gafca8768671a14c8016facccb66a89f26"><div class="ttname"><a href="a00160.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>
<div class="ttc" id="a00160_html_ga410d130917d85b865718e3ebc32cf0ef"><div class="ttname"><a href="a00160.html#ga410d130917d85b865718e3ebc32cf0ef">glm::bitfieldRotateLeft</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; bitfieldRotateLeft(vecType&lt; T, P &gt; const &amp;In, int Shift)</div><div class="ttdoc">Rotate all bits to the left. </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00160_html_ga073dbd8642f550b51da3572541431c1c"><div class="ttname"><a href="a00160.html#ga073dbd8642f550b51da3572541431c1c">glm::mask</a></div><div class="ttdeci">GLM_FUNC_DECL vecIUType&lt; T, P &gt; mask(vecIUType&lt; T, P &gt; const &amp;v)</div><div class="ttdoc">Build a mask of &#39;count&#39; bits. </div></div>
<div class="ttc" id="a00160_html_gad789042e84e8292ae95dc1af856f2ad5"><div class="ttname"><a href="a00160.html#gad789042e84e8292ae95dc1af856f2ad5">glm::bitfieldFillOne</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; bitfieldFillOne(vecType&lt; T, P &gt; const &amp;Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 1 a range of bits. </div></div>
<div class="ttc" id="a00160_html_ga96b56fd2adad1eeaee9e10dfe83904ba"><div class="ttname"><a href="a00160.html#ga96b56fd2adad1eeaee9e10dfe83904ba">glm::bitfieldRotateRight</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; bitfieldRotateRight(vecType&lt; T, P &gt; const &amp;In, int Shift)</div><div class="ttdoc">Rotate all bits to the right. </div></div>
<div class="ttc" id="a00160_html_gaddba3196316b0bd240295b09b43c2958"><div class="ttname"><a href="a00160.html#gaddba3196316b0bd240295b09b43c2958">glm::bitfieldFillZero</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; bitfieldFillZero(vecType&lt; T, P &gt; const &amp;Value, int FirstBit, int BitCount)</div><div class="ttdoc">Set to 0 a range of bits. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

80
thirdparty/glm/doc/api/a00010.html vendored Normal file
View File

@@ -0,0 +1,80 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: closest_point.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">closest_point.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00010_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gac26353282a8213e469f5e33560c1200f"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gac26353282a8213e469f5e33560c1200f"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gac26353282a8213e469f5e33560c1200f">closestPointOnLine</a> (tvec3&lt; T, P &gt; const &amp;point, tvec3&lt; T, P &gt; const &amp;a, tvec3&lt; T, P &gt; const &amp;b)</td></tr>
<tr class="separator:gac26353282a8213e469f5e33560c1200f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadc7010070bb0cacd284f560299b21660"><td class="memTemplParams" colspan="2"><a class="anchor" id="gadc7010070bb0cacd284f560299b21660"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gadc7010070bb0cacd284f560299b21660"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec2&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00183.html#gadc7010070bb0cacd284f560299b21660">closestPointOnLine</a> (tvec2&lt; T, P &gt; const &amp;point, tvec2&lt; T, P &gt; const &amp;a, tvec2&lt; T, P &gt; const &amp;b)</td></tr>
<tr class="separator:gadc7010070bb0cacd284f560299b21660"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00183.html">GLM_GTX_closest_point</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00010_source.html">closest_point.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: closest_point.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">closest_point.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00010.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependency:</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_closest_point extension included&quot;)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00183.html#gadc7010070bb0cacd284f560299b21660">closestPointOnLine</a>(</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; point,</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; a, </div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; b);</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; GLM_FUNC_DECL tvec2&lt;T, P&gt; <a class="code" href="a00183.html#gadc7010070bb0cacd284f560299b21660">closestPointOnLine</a>(</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; point,</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; a, </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; tvec2&lt;T, P&gt; <span class="keyword">const</span> &amp; b); </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;}<span class="comment">// namespace glm</span></div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="preprocessor">#include &quot;closest_point.inl&quot;</span></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00183_html_gadc7010070bb0cacd284f560299b21660"><div class="ttname"><a href="a00183.html#gadc7010070bb0cacd284f560299b21660">glm::closestPointOnLine</a></div><div class="ttdeci">GLM_FUNC_DECL tvec2&lt; T, P &gt; closestPointOnLine(tvec2&lt; T, P &gt; const &amp;point, tvec2&lt; T, P &gt; const &amp;a, tvec2&lt; T, P &gt; const &amp;b)</div><div class="ttdoc">2d lines work as well </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

88
thirdparty/glm/doc/api/a00011.html vendored Normal file
View File

@@ -0,0 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_9440d7c11b99dcd7e5d369c7cf9802fe.html">gtc</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gtc/color_space.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00011_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gad813dcd99644cafc775e83d6504ccb93"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gad813dcd99644cafc775e83d6504ccb93"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00161.html#gad813dcd99644cafc775e83d6504ccb93">convertLinearToSRGB</a> (vecType&lt; T, P &gt; const &amp;ColorLinear)</td></tr>
<tr class="separator:gad813dcd99644cafc775e83d6504ccb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63f8b003da7acf44370eb47bfb8b3d42"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga63f8b003da7acf44370eb47bfb8b3d42"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00161.html#ga63f8b003da7acf44370eb47bfb8b3d42">convertLinearToSRGB</a> (vecType&lt; T, P &gt; const &amp;ColorLinear, T Gamma)</td></tr>
<tr class="separator:ga63f8b003da7acf44370eb47bfb8b3d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga28e98e64347cf385cadc1ceb4def55c9"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga28e98e64347cf385cadc1ceb4def55c9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00161.html#ga28e98e64347cf385cadc1ceb4def55c9">convertSRGBToLinear</a> (vecType&lt; T, P &gt; const &amp;ColorSRGB)</td></tr>
<tr class="separator:ga28e98e64347cf385cadc1ceb4def55c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga61c4f0efdf55c29d9cfbd26141fddef8"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga61c4f0efdf55c29d9cfbd26141fddef8"></a>
template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga61c4f0efdf55c29d9cfbd26141fddef8"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00161.html#ga61c4f0efdf55c29d9cfbd26141fddef8">convertSRGBToLinear</a> (vecType&lt; T, P &gt; const &amp;ColorSRGB, T Gamma)</td></tr>
<tr class="separator:ga61c4f0efdf55c29d9cfbd26141fddef8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00161.html">GLM_GTC_color_space</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
<a class="el" href="a00161.html" title="Allow to perform bit operations on integer values. ">GLM_GTC_color_space</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00011_source.html">gtc/color_space.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,97 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_9440d7c11b99dcd7e5d369c7cf9802fe.html">gtc</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gtc/color_space.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00011.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../detail/setup.hpp&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../detail/precision.hpp&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../exponential.hpp&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;../vec3.hpp&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;../vec4.hpp&quot;</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTC_color_space extension included&quot;)</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;{</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00161.html#ga63f8b003da7acf44370eb47bfb8b3d42">convertLinearToSRGB</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; ColorLinear);</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00161.html#ga63f8b003da7acf44370eb47bfb8b3d42">convertLinearToSRGB</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; ColorLinear, T Gamma);</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00161.html#ga61c4f0efdf55c29d9cfbd26141fddef8">convertSRGBToLinear</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; ColorSRGB);</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="comment">// IEC 61966-2-1:1999 specification https://www.w3.org/Graphics/Color/srgb</span></div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00161.html#ga61c4f0efdf55c29d9cfbd26141fddef8">convertSRGBToLinear</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; ColorSRGB, T Gamma);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;} <span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;color_space.inl&quot;</span></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00161_html_ga61c4f0efdf55c29d9cfbd26141fddef8"><div class="ttname"><a href="a00161.html#ga61c4f0efdf55c29d9cfbd26141fddef8">glm::convertSRGBToLinear</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; convertSRGBToLinear(vecType&lt; T, P &gt; const &amp;ColorSRGB, T Gamma)</div><div class="ttdoc">Convert a sRGB color to linear color using a custom gamma correction. </div></div>
<div class="ttc" id="a00161_html_ga63f8b003da7acf44370eb47bfb8b3d42"><div class="ttname"><a href="a00161.html#ga63f8b003da7acf44370eb47bfb8b3d42">glm::convertLinearToSRGB</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; convertLinearToSRGB(vecType&lt; T, P &gt; const &amp;ColorLinear, T Gamma)</div><div class="ttdoc">Convert a linear color to sRGB color using a custom gamma correction. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

91
thirdparty/glm/doc/api/a00012.html vendored Normal file
View File

@@ -0,0 +1,91 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gtx/color_space.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00012_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gae72039c00a7be2f03a3b94b37a54349a"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gae72039c00a7be2f03a3b94b37a54349a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#gae72039c00a7be2f03a3b94b37a54349a">hsvColor</a> (tvec3&lt; T, P &gt; const &amp;rgbValue)</td></tr>
<tr class="separator:gae72039c00a7be2f03a3b94b37a54349a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa2f38a5100c3e1c7d39920df43bd8cbe"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gaa2f38a5100c3e1c7d39920df43bd8cbe"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#gaa2f38a5100c3e1c7d39920df43bd8cbe">luminosity</a> (tvec3&lt; T, P &gt; const &amp;color)</td></tr>
<tr class="separator:gaa2f38a5100c3e1c7d39920df43bd8cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga36b0619e31daf57bc4a54dac2dcf34b7"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga36b0619e31daf57bc4a54dac2dcf34b7"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">rgbColor</a> (tvec3&lt; T, P &gt; const &amp;hsvValue)</td></tr>
<tr class="separator:ga36b0619e31daf57bc4a54dac2dcf34b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafecfb15d58da8445103745af3348e516"><td class="memTemplParams" colspan="2">template&lt;typename T &gt; </td></tr>
<tr class="memitem:gafecfb15d58da8445103745af3348e516"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tmat4x4&lt; T, defaultp &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#gafecfb15d58da8445103745af3348e516">saturation</a> (T const s)</td></tr>
<tr class="separator:gafecfb15d58da8445103745af3348e516"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga632ee8dadb44e90a05885f6f8c07d46c"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga632ee8dadb44e90a05885f6f8c07d46c"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#ga632ee8dadb44e90a05885f6f8c07d46c">saturation</a> (T const s, tvec3&lt; T, P &gt; const &amp;color)</td></tr>
<tr class="separator:ga632ee8dadb44e90a05885f6f8c07d46c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2033e0566c595230714af396744e8a61"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga2033e0566c595230714af396744e8a61"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec4&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00184.html#ga2033e0566c595230714af396744e8a61">saturation</a> (T const s, tvec4&lt; T, P &gt; const &amp;color)</td></tr>
<tr class="separator:ga2033e0566c595230714af396744e8a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00184.html">GLM_GTX_color_space</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00012_source.html">gtx/color_space.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,107 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gtx/color_space.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00012.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependency:</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_color_space extension included&quot;)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">rgbColor</a>(</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; hsvValue);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00184.html#gae72039c00a7be2f03a3b94b37a54349a">hsvColor</a>(</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; rgbValue);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; GLM_FUNC_DECL tmat4x4&lt;T, defaultp&gt; <a class="code" href="a00184.html#ga2033e0566c595230714af396744e8a61">saturation</a>(</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; T <span class="keyword">const</span> s);</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00184.html#ga2033e0566c595230714af396744e8a61">saturation</a>(</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; T <span class="keyword">const</span> s,</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; color);</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; </div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; GLM_FUNC_DECL tvec4&lt;T, P&gt; <a class="code" href="a00184.html#ga2033e0566c595230714af396744e8a61">saturation</a>(</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; T <span class="keyword">const</span> s,</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; tvec4&lt;T, P&gt; <span class="keyword">const</span> &amp; color);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; GLM_FUNC_DECL T <a class="code" href="a00184.html#gaa2f38a5100c3e1c7d39920df43bd8cbe">luminosity</a>(</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; color);</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;<span class="preprocessor">#include &quot;color_space.inl&quot;</span></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00184_html_ga2033e0566c595230714af396744e8a61"><div class="ttname"><a href="a00184.html#ga2033e0566c595230714af396744e8a61">glm::saturation</a></div><div class="ttdeci">GLM_FUNC_DECL tvec4&lt; T, P &gt; saturation(T const s, tvec4&lt; T, P &gt; const &amp;color)</div><div class="ttdoc">Modify the saturation of a color. </div></div>
<div class="ttc" id="a00184_html_gae72039c00a7be2f03a3b94b37a54349a"><div class="ttname"><a href="a00184.html#gae72039c00a7be2f03a3b94b37a54349a">glm::hsvColor</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; hsvColor(tvec3&lt; T, P &gt; const &amp;rgbValue)</div><div class="ttdoc">Converts a color from RGB color space to its color in HSV color space. </div></div>
<div class="ttc" id="a00184_html_ga36b0619e31daf57bc4a54dac2dcf34b7"><div class="ttname"><a href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; rgbColor(tvec3&lt; T, P &gt; const &amp;hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
<div class="ttc" id="a00184_html_gaa2f38a5100c3e1c7d39920df43bd8cbe"><div class="ttname"><a href="a00184.html#gaa2f38a5100c3e1c7d39920df43bd8cbe">glm::luminosity</a></div><div class="ttdeci">GLM_FUNC_DECL T luminosity(tvec3&lt; T, P &gt; const &amp;color)</div><div class="ttdoc">Compute color luminosity associating ratios (0.33, 0.59, 0.11) to RGB canals. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

85
thirdparty/glm/doc/api/a00013.html vendored Normal file
View File

@@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space_YCoCg.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">color_space_YCoCg.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00013_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga19481f6947c5b5482debd41e71b8c941"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga19481f6947c5b5482debd41e71b8c941"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00185.html#ga19481f6947c5b5482debd41e71b8c941">rgb2YCoCg</a> (tvec3&lt; T, P &gt; const &amp;rgbColor)</td></tr>
<tr class="separator:ga19481f6947c5b5482debd41e71b8c941"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2e534594cc8ad252d23b14fb363ae9e2"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga2e534594cc8ad252d23b14fb363ae9e2"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00185.html#ga2e534594cc8ad252d23b14fb363ae9e2">rgb2YCoCgR</a> (tvec3&lt; T, P &gt; const &amp;rgbColor)</td></tr>
<tr class="separator:ga2e534594cc8ad252d23b14fb363ae9e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6d7e988a79b299ca1fa59f537e13800b"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga6d7e988a79b299ca1fa59f537e13800b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00185.html#ga6d7e988a79b299ca1fa59f537e13800b">YCoCg2rgb</a> (tvec3&lt; T, P &gt; const &amp;YCoCgColor)</td></tr>
<tr class="separator:ga6d7e988a79b299ca1fa59f537e13800b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4bac5462c00df0ae89242ecdbbe5dbad"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga4bac5462c00df0ae89242ecdbbe5dbad"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00185.html#ga4bac5462c00df0ae89242ecdbbe5dbad">YCoCgR2rgb</a> (tvec3&lt; T, P &gt; const &amp;YCoCgColor)</td></tr>
<tr class="separator:ga4bac5462c00df0ae89242ecdbbe5dbad"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00185.html">GLM_GTX_color_space_YCoCg</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00013_source.html">color_space_YCoCg.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,98 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: color_space_YCoCg.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">color_space_YCoCg.hpp</div> </div>
</div><!--header-->
<div class="contents">
<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>&#160;</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">// Dependency:</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_color_space_YCoCg extension included&quot;)</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;{</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00185.html#ga19481f6947c5b5482debd41e71b8c941">rgb2YCoCg</a>(</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; <a class="code" href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">rgbColor</a>);</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00185.html#ga6d7e988a79b299ca1fa59f537e13800b">YCoCg2rgb</a>(</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; YCoCgColor);</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00185.html#ga2e534594cc8ad252d23b14fb363ae9e2">rgb2YCoCgR</a>(</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; <a class="code" href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">rgbColor</a>);</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt;</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; GLM_FUNC_DECL tvec3&lt;T, P&gt; <a class="code" href="a00185.html#ga4bac5462c00df0ae89242ecdbbe5dbad">YCoCgR2rgb</a>(</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; tvec3&lt;T, P&gt; <span class="keyword">const</span> &amp; YCoCgColor);</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="preprocessor">#include &quot;color_space_YCoCg.inl&quot;</span></div>
<div class="ttc" id="a00185_html_ga6d7e988a79b299ca1fa59f537e13800b"><div class="ttname"><a href="a00185.html#ga6d7e988a79b299ca1fa59f537e13800b">glm::YCoCg2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; YCoCg2rgb(tvec3&lt; T, P &gt; const &amp;YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCg color space to RGB color space. </div></div>
<div class="ttc" id="a00185_html_ga2e534594cc8ad252d23b14fb363ae9e2"><div class="ttname"><a href="a00185.html#ga2e534594cc8ad252d23b14fb363ae9e2">glm::rgb2YCoCgR</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; rgb2YCoCgR(tvec3&lt; T, P &gt; const &amp;rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCgR color space. </div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00185_html_ga19481f6947c5b5482debd41e71b8c941"><div class="ttname"><a href="a00185.html#ga19481f6947c5b5482debd41e71b8c941">glm::rgb2YCoCg</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; rgb2YCoCg(tvec3&lt; T, P &gt; const &amp;rgbColor)</div><div class="ttdoc">Convert a color from RGB color space to YCoCg color space. </div></div>
<div class="ttc" id="a00184_html_ga36b0619e31daf57bc4a54dac2dcf34b7"><div class="ttname"><a href="a00184.html#ga36b0619e31daf57bc4a54dac2dcf34b7">glm::rgbColor</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; rgbColor(tvec3&lt; T, P &gt; const &amp;hsvValue)</div><div class="ttdoc">Converts a color from HSV color space to its color in RGB color space. </div></div>
<div class="ttc" id="a00185_html_ga4bac5462c00df0ae89242ecdbbe5dbad"><div class="ttname"><a href="a00185.html#ga4bac5462c00df0ae89242ecdbbe5dbad">glm::YCoCgR2rgb</a></div><div class="ttdeci">GLM_FUNC_DECL tvec3&lt; T, P &gt; YCoCgR2rgb(tvec3&lt; T, P &gt; const &amp;YCoCgColor)</div><div class="ttdoc">Convert a color from YCoCgR color space to RGB color space. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

66
thirdparty/glm/doc/api/a00014.html vendored Normal file
View File

@@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: common.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">common.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00014_source.html">Go to the source code of this file.</a></p>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00156.html">GLM Core</a> </p>
<p>Definition in file <a class="el" href="a00014_source.html">common.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,65 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: common.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">common.hpp</div> </div>
</div><!--header-->
<div class="contents">
<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>&#160;</div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;</div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="a00029.html">detail/func_common.hpp</a>&quot;</span></div>
<div class="ttc" id="a00029_html"><div class="ttname"><a href="a00029.html">func_common.hpp</a></div><div class="ttdoc">GLM Core </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

81
thirdparty/glm/doc/api/a00015.html vendored Normal file
View File

@@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: common.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gtx/common.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00015_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga2580f50d4064557d62f4a533dfc6c7e3"><td class="memTemplParams" colspan="2">template&lt;typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:ga2580f50d4064557d62f4a533dfc6c7e3"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00186.html#ga2580f50d4064557d62f4a533dfc6c7e3">fmod</a> (vecType&lt; T, P &gt; const &amp;v)</td></tr>
<tr class="separator:ga2580f50d4064557d62f4a533dfc6c7e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::bool_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00186.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">isdenormal</a> (genType const &amp;x)</td></tr>
<tr class="separator:ga74aa7c7462245d83bd5a9edf9c6c2d91"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00186.html">GLM_GTX_common</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
gtc_half_float (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00015_source.html">gtx/common.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: common.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">gtx/common.hpp</div> </div>
</div><!--header-->
<div class="contents">
<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>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependencies:</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../vec2.hpp&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../vec3.hpp&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;../vec4.hpp&quot;</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;../gtc/vec1.hpp&quot;</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_common extension included&quot;)</span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt; </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; GLM_FUNC_DECL <span class="keyword">typename</span> genType::bool_type <a class="code" href="a00186.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">isdenormal</a>(genType <span class="keyword">const</span> &amp; x);</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P, <span class="keyword">template</span> &lt;<span class="keyword">typename</span>, precision&gt; <span class="keyword">class </span>vecType&gt;</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; GLM_FUNC_DECL vecType&lt;T, P&gt; <a class="code" href="a00186.html#ga2580f50d4064557d62f4a533dfc6c7e3">fmod</a>(vecType&lt;T, P&gt; <span class="keyword">const</span> &amp; v);</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="preprocessor">#include &quot;common.inl&quot;</span></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00186_html_ga74aa7c7462245d83bd5a9edf9c6c2d91"><div class="ttname"><a href="a00186.html#ga74aa7c7462245d83bd5a9edf9c6c2d91">glm::isdenormal</a></div><div class="ttdeci">GLM_FUNC_DECL genType::bool_type isdenormal(genType const &amp;x)</div><div class="ttdoc">Returns true if x is a denormalized number Numbers whose absolute value is too small to be represente...</div></div>
<div class="ttc" id="a00186_html_ga2580f50d4064557d62f4a533dfc6c7e3"><div class="ttname"><a href="a00186.html#ga2580f50d4064557d62f4a533dfc6c7e3">glm::fmod</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; fmod(vecType&lt; T, P &gt; const &amp;v)</div><div class="ttdoc">Similar to &#39;mod&#39; but with a different rounding and integer support. </div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

327
thirdparty/glm/doc/api/a00016.html vendored Normal file
View File

@@ -0,0 +1,327 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: compatibility.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">compatibility.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00016_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:gaddcd7aa2e30e61af5b38660613d3979e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaddcd7aa2e30e61af5b38660613d3979e"></a>
typedef bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaddcd7aa2e30e61af5b38660613d3979e">bool1</a></td></tr>
<tr class="separator:gaddcd7aa2e30e61af5b38660613d3979e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7f895c936f0c29c8729afbbf22806090"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7f895c936f0c29c8729afbbf22806090"></a>
typedef bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga7f895c936f0c29c8729afbbf22806090">bool1x1</a></td></tr>
<tr class="separator:ga7f895c936f0c29c8729afbbf22806090"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafa8d0bc8dfa7eeb928208305714f648d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gafa8d0bc8dfa7eeb928208305714f648d"></a>
typedef tvec2&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gafa8d0bc8dfa7eeb928208305714f648d">bool2</a></td></tr>
<tr class="separator:gafa8d0bc8dfa7eeb928208305714f648d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2bfb53bc320966c85149934fffb0329d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2bfb53bc320966c85149934fffb0329d"></a>
typedef tmat2x2&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga2bfb53bc320966c85149934fffb0329d">bool2x2</a></td></tr>
<tr class="separator:ga2bfb53bc320966c85149934fffb0329d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad02e7dff74039bb1454643e293d85dfe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad02e7dff74039bb1454643e293d85dfe"></a>
typedef tmat2x3&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gad02e7dff74039bb1454643e293d85dfe">bool2x3</a></td></tr>
<tr class="separator:gad02e7dff74039bb1454643e293d85dfe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga379c0869949e8a69c3d06d7637caa5d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga379c0869949e8a69c3d06d7637caa5d7"></a>
typedef tmat2x4&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga379c0869949e8a69c3d06d7637caa5d7">bool2x4</a></td></tr>
<tr class="separator:ga379c0869949e8a69c3d06d7637caa5d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8d74ea4c4f4bd980b650ffb27cdb659"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab8d74ea4c4f4bd980b650ffb27cdb659"></a>
typedef tvec3&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gab8d74ea4c4f4bd980b650ffb27cdb659">bool3</a></td></tr>
<tr class="separator:gab8d74ea4c4f4bd980b650ffb27cdb659"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0fc7ecb53df5be5f9d766fbbfe5190d7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0fc7ecb53df5be5f9d766fbbfe5190d7"></a>
typedef tmat3x2&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga0fc7ecb53df5be5f9d766fbbfe5190d7">bool3x2</a></td></tr>
<tr class="separator:ga0fc7ecb53df5be5f9d766fbbfe5190d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae621c9eabcba552eea5f6ade1f403605"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gae621c9eabcba552eea5f6ade1f403605"></a>
typedef tmat3x3&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gae621c9eabcba552eea5f6ade1f403605">bool3x3</a></td></tr>
<tr class="separator:gae621c9eabcba552eea5f6ade1f403605"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad13f8250579ebf79760dcf64215ddb17"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad13f8250579ebf79760dcf64215ddb17"></a>
typedef tmat3x4&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gad13f8250579ebf79760dcf64215ddb17">bool3x4</a></td></tr>
<tr class="separator:gad13f8250579ebf79760dcf64215ddb17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6e79dbfab5917c467a154638ba27898e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6e79dbfab5917c467a154638ba27898e"></a>
typedef tvec4&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga6e79dbfab5917c467a154638ba27898e">bool4</a></td></tr>
<tr class="separator:ga6e79dbfab5917c467a154638ba27898e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga184ee05ac2bbbf0a91dd364ba8e528db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga184ee05ac2bbbf0a91dd364ba8e528db"></a>
typedef tmat4x2&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga184ee05ac2bbbf0a91dd364ba8e528db">bool4x2</a></td></tr>
<tr class="separator:ga184ee05ac2bbbf0a91dd364ba8e528db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga83e4c62ab1addfe708dc3409cc0e5dfb"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga83e4c62ab1addfe708dc3409cc0e5dfb"></a>
typedef tmat4x3&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga83e4c62ab1addfe708dc3409cc0e5dfb">bool4x3</a></td></tr>
<tr class="separator:ga83e4c62ab1addfe708dc3409cc0e5dfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9770607032813e7b0ca7362a47efea1e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga9770607032813e7b0ca7362a47efea1e"></a>
typedef tmat4x4&lt; bool, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga9770607032813e7b0ca7362a47efea1e">bool4x4</a></td></tr>
<tr class="separator:ga9770607032813e7b0ca7362a47efea1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga20b861a9b6e2a300323671c57a02525b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga20b861a9b6e2a300323671c57a02525b"></a>
typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga20b861a9b6e2a300323671c57a02525b">double1</a></td></tr>
<tr class="separator:ga20b861a9b6e2a300323671c57a02525b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga45f16a4dd0db1f199afaed9fd12fe9a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga45f16a4dd0db1f199afaed9fd12fe9a8"></a>
typedef double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga45f16a4dd0db1f199afaed9fd12fe9a8">double1x1</a></td></tr>
<tr class="separator:ga45f16a4dd0db1f199afaed9fd12fe9a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa16a13c6f2768e83ca133430e82ab89e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa16a13c6f2768e83ca133430e82ab89e"></a>
typedef tvec2&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaa16a13c6f2768e83ca133430e82ab89e">double2</a></td></tr>
<tr class="separator:gaa16a13c6f2768e83ca133430e82ab89e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga320d0a71a4ad9f14a1992d40546cffa7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga320d0a71a4ad9f14a1992d40546cffa7"></a>
typedef tmat2x2&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga320d0a71a4ad9f14a1992d40546cffa7">double2x2</a></td></tr>
<tr class="separator:ga320d0a71a4ad9f14a1992d40546cffa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gade37cf30c69bacb41ceea7e32717eac7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gade37cf30c69bacb41ceea7e32717eac7"></a>
typedef tmat2x3&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gade37cf30c69bacb41ceea7e32717eac7">double2x3</a></td></tr>
<tr class="separator:gade37cf30c69bacb41ceea7e32717eac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf923922adf744404d5bfb3fafb7d0d8e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf923922adf744404d5bfb3fafb7d0d8e"></a>
typedef tmat2x4&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaf923922adf744404d5bfb3fafb7d0d8e">double2x4</a></td></tr>
<tr class="separator:gaf923922adf744404d5bfb3fafb7d0d8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed4bc64196bd25d46f6a1f417320a391"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaed4bc64196bd25d46f6a1f417320a391"></a>
typedef tvec3&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaed4bc64196bd25d46f6a1f417320a391">double3</a></td></tr>
<tr class="separator:gaed4bc64196bd25d46f6a1f417320a391"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeaac4d0e18164e4d2fe54432c0fbbcf6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaeaac4d0e18164e4d2fe54432c0fbbcf6"></a>
typedef tmat3x2&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaeaac4d0e18164e4d2fe54432c0fbbcf6">double3x2</a></td></tr>
<tr class="separator:gaeaac4d0e18164e4d2fe54432c0fbbcf6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac934f579ee5cf3cbdbb25b73f2640c0a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac934f579ee5cf3cbdbb25b73f2640c0a"></a>
typedef tmat3x3&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gac934f579ee5cf3cbdbb25b73f2640c0a">double3x3</a></td></tr>
<tr class="separator:gac934f579ee5cf3cbdbb25b73f2640c0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad84a1ea83be8fce04c1570c5e719413"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaad84a1ea83be8fce04c1570c5e719413"></a>
typedef tmat3x4&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaad84a1ea83be8fce04c1570c5e719413">double3x4</a></td></tr>
<tr class="separator:gaad84a1ea83be8fce04c1570c5e719413"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab8bbb086c9a6c2deffbe0e80afd6be56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab8bbb086c9a6c2deffbe0e80afd6be56"></a>
typedef tvec4&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gab8bbb086c9a6c2deffbe0e80afd6be56">double4</a></td></tr>
<tr class="separator:gab8bbb086c9a6c2deffbe0e80afd6be56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2f87500119da15e35e4a74780ba512bd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2f87500119da15e35e4a74780ba512bd"></a>
typedef tmat4x2&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga2f87500119da15e35e4a74780ba512bd">double4x2</a></td></tr>
<tr class="separator:ga2f87500119da15e35e4a74780ba512bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa4e6d53c03780dfa76bd399324f9fe37"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa4e6d53c03780dfa76bd399324f9fe37"></a>
typedef tmat4x3&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaa4e6d53c03780dfa76bd399324f9fe37">double4x3</a></td></tr>
<tr class="separator:gaa4e6d53c03780dfa76bd399324f9fe37"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga686a3a5590f0a0e721faba08bda301d6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga686a3a5590f0a0e721faba08bda301d6"></a>
typedef tmat4x4&lt; double, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga686a3a5590f0a0e721faba08bda301d6">double4x4</a></td></tr>
<tr class="separator:ga686a3a5590f0a0e721faba08bda301d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf5208d01f6c6fbcb7bb55d610b9c0ead"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf5208d01f6c6fbcb7bb55d610b9c0ead"></a>
typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead">float1</a></td></tr>
<tr class="separator:gaf5208d01f6c6fbcb7bb55d610b9c0ead"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga73720b8dc4620835b17f74d428f98c0c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga73720b8dc4620835b17f74d428f98c0c"></a>
typedef float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga73720b8dc4620835b17f74d428f98c0c">float1x1</a></td></tr>
<tr class="separator:ga73720b8dc4620835b17f74d428f98c0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga872a70333dd25af68b1ebba485be9e42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga872a70333dd25af68b1ebba485be9e42"></a>
typedef tvec2&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga872a70333dd25af68b1ebba485be9e42">float2</a></td></tr>
<tr class="separator:ga872a70333dd25af68b1ebba485be9e42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaad93cbc2b863e363d53d405d0451d03e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaad93cbc2b863e363d53d405d0451d03e"></a>
typedef tmat2x2&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaad93cbc2b863e363d53d405d0451d03e">float2x2</a></td></tr>
<tr class="separator:gaad93cbc2b863e363d53d405d0451d03e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga098c33a30f901f4f6a76969d6db6b01b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga098c33a30f901f4f6a76969d6db6b01b"></a>
typedef tmat2x3&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga098c33a30f901f4f6a76969d6db6b01b">float2x3</a></td></tr>
<tr class="separator:ga098c33a30f901f4f6a76969d6db6b01b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2ce4c366abc06c8bf7fe097ecea0dde"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab2ce4c366abc06c8bf7fe097ecea0dde"></a>
typedef tmat2x4&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gab2ce4c366abc06c8bf7fe097ecea0dde">float2x4</a></td></tr>
<tr class="separator:gab2ce4c366abc06c8bf7fe097ecea0dde"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2bfa618285894e34f299e4984f092d56"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2bfa618285894e34f299e4984f092d56"></a>
typedef tvec3&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga2bfa618285894e34f299e4984f092d56">float3</a></td></tr>
<tr class="separator:ga2bfa618285894e34f299e4984f092d56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf30014e7b6874f45d58eb580d04764ff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf30014e7b6874f45d58eb580d04764ff"></a>
typedef tmat3x2&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaf30014e7b6874f45d58eb580d04764ff">float3x2</a></td></tr>
<tr class="separator:gaf30014e7b6874f45d58eb580d04764ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2692a729a69615d72dbebbdd0eba2363"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2692a729a69615d72dbebbdd0eba2363"></a>
typedef tmat3x3&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga2692a729a69615d72dbebbdd0eba2363">float3x3</a></td></tr>
<tr class="separator:ga2692a729a69615d72dbebbdd0eba2363"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac38c8929ccc87a2dc81eaab97ad5190e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gac38c8929ccc87a2dc81eaab97ad5190e"></a>
typedef tmat3x4&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gac38c8929ccc87a2dc81eaab97ad5190e">float3x4</a></td></tr>
<tr class="separator:gac38c8929ccc87a2dc81eaab97ad5190e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d49ed44dd9a9e944abc30371fc9045b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga5d49ed44dd9a9e944abc30371fc9045b"></a>
typedef tvec4&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga5d49ed44dd9a9e944abc30371fc9045b">float4</a></td></tr>
<tr class="separator:ga5d49ed44dd9a9e944abc30371fc9045b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga39a2af7aa8f2d29ca40afd2256c0e7c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga39a2af7aa8f2d29ca40afd2256c0e7c8"></a>
typedef tmat4x2&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga39a2af7aa8f2d29ca40afd2256c0e7c8">float4x2</a></td></tr>
<tr class="separator:ga39a2af7aa8f2d29ca40afd2256c0e7c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad749b26be059f35394fd71c7f7a44034"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad749b26be059f35394fd71c7f7a44034"></a>
typedef tmat4x3&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gad749b26be059f35394fd71c7f7a44034">float4x3</a></td></tr>
<tr class="separator:gad749b26be059f35394fd71c7f7a44034"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf40529862492ded2f3b96a6c886f6136"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaf40529862492ded2f3b96a6c886f6136"></a>
typedef tmat4x4&lt; float, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaf40529862492ded2f3b96a6c886f6136">float4x4</a></td></tr>
<tr class="separator:gaf40529862492ded2f3b96a6c886f6136"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0670a2111b5e4a6410bd027fa0232fc3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0670a2111b5e4a6410bd027fa0232fc3"></a>
typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga0670a2111b5e4a6410bd027fa0232fc3">int1</a></td></tr>
<tr class="separator:ga0670a2111b5e4a6410bd027fa0232fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga056ffe02d3a45af626f8e62221881c7a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga056ffe02d3a45af626f8e62221881c7a"></a>
typedef int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga056ffe02d3a45af626f8e62221881c7a">int1x1</a></td></tr>
<tr class="separator:ga056ffe02d3a45af626f8e62221881c7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga2eca687990bf3a08ef28bc4a9f2fe700"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga2eca687990bf3a08ef28bc4a9f2fe700"></a>
typedef tvec2&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga2eca687990bf3a08ef28bc4a9f2fe700">int2</a></td></tr>
<tr class="separator:ga2eca687990bf3a08ef28bc4a9f2fe700"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab1c5d0631a6ae34e28bfb2851da387cc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab1c5d0631a6ae34e28bfb2851da387cc"></a>
typedef tmat2x2&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gab1c5d0631a6ae34e28bfb2851da387cc">int2x2</a></td></tr>
<tr class="separator:gab1c5d0631a6ae34e28bfb2851da387cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga6dc93f0794eb5fadd7f68b85141a2434"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga6dc93f0794eb5fadd7f68b85141a2434"></a>
typedef tmat2x3&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga6dc93f0794eb5fadd7f68b85141a2434">int2x3</a></td></tr>
<tr class="separator:ga6dc93f0794eb5fadd7f68b85141a2434"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad5da9e1b4e0c64c5436b5696ab49540e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gad5da9e1b4e0c64c5436b5696ab49540e"></a>
typedef tmat2x4&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gad5da9e1b4e0c64c5436b5696ab49540e">int2x4</a></td></tr>
<tr class="separator:gad5da9e1b4e0c64c5436b5696ab49540e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaa6ceedf08a85e5fd73a482bc8b77b88"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaaa6ceedf08a85e5fd73a482bc8b77b88"></a>
typedef tvec3&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaaa6ceedf08a85e5fd73a482bc8b77b88">int3</a></td></tr>
<tr class="separator:gaaa6ceedf08a85e5fd73a482bc8b77b88"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa98b1a06b802c975f02a5583f43632db"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa98b1a06b802c975f02a5583f43632db"></a>
typedef tmat3x2&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaa98b1a06b802c975f02a5583f43632db">int3x2</a></td></tr>
<tr class="separator:gaa98b1a06b802c975f02a5583f43632db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga20c4d23defbc123ac4745c9b4262156f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga20c4d23defbc123ac4745c9b4262156f"></a>
typedef tmat3x3&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga20c4d23defbc123ac4745c9b4262156f">int3x3</a></td></tr>
<tr class="separator:ga20c4d23defbc123ac4745c9b4262156f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7b00c53838143bce963177122ab92c39"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga7b00c53838143bce963177122ab92c39"></a>
typedef tmat3x4&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga7b00c53838143bce963177122ab92c39">int3x4</a></td></tr>
<tr class="separator:ga7b00c53838143bce963177122ab92c39"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab19c2df22e9b14081390fabd074081f1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gab19c2df22e9b14081390fabd074081f1"></a>
typedef tvec4&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gab19c2df22e9b14081390fabd074081f1">int4</a></td></tr>
<tr class="separator:gab19c2df22e9b14081390fabd074081f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa53815539021200c4e10fd282832dcd3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="gaa53815539021200c4e10fd282832dcd3"></a>
typedef tmat4x2&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#gaa53815539021200c4e10fd282832dcd3">int4x2</a></td></tr>
<tr class="separator:gaa53815539021200c4e10fd282832dcd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga4a3bf0ecd6f6ff60836c5bee26c14abe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga4a3bf0ecd6f6ff60836c5bee26c14abe"></a>
typedef tmat4x3&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga4a3bf0ecd6f6ff60836c5bee26c14abe">int4x3</a></td></tr>
<tr class="separator:ga4a3bf0ecd6f6ff60836c5bee26c14abe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga3bacf576b4b29f2f2959abff7a36652d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga3bacf576b4b29f2f2959abff7a36652d"></a>
typedef tmat4x4&lt; int, highp &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00187.html#ga3bacf576b4b29f2f2959abff7a36652d">int4x4</a></td></tr>
<tr class="separator:ga3bacf576b4b29f2f2959abff7a36652d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gac63011205bf6d0be82589dc56dd26708"><td class="memTemplParams" colspan="2"><a class="anchor" id="gac63011205bf6d0be82589dc56dd26708"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gac63011205bf6d0be82589dc56dd26708"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#gac63011205bf6d0be82589dc56dd26708">atan2</a> (T x, T y)</td></tr>
<tr class="separator:gac63011205bf6d0be82589dc56dd26708"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga525f3e849d0fc64807f8ab571b4545f9"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga525f3e849d0fc64807f8ab571b4545f9"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga525f3e849d0fc64807f8ab571b4545f9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec2&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga525f3e849d0fc64807f8ab571b4545f9">atan2</a> (const tvec2&lt; T, P &gt; &amp;x, const tvec2&lt; T, P &gt; &amp;y)</td></tr>
<tr class="separator:ga525f3e849d0fc64807f8ab571b4545f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad328042b6734d3f2c49c0ec1328b14c0"><td class="memTemplParams" colspan="2"><a class="anchor" id="gad328042b6734d3f2c49c0ec1328b14c0"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gad328042b6734d3f2c49c0ec1328b14c0"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#gad328042b6734d3f2c49c0ec1328b14c0">atan2</a> (const tvec3&lt; T, P &gt; &amp;x, const tvec3&lt; T, P &gt; &amp;y)</td></tr>
<tr class="separator:gad328042b6734d3f2c49c0ec1328b14c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga09d39c391a509a045b6c7061f15bdff5"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga09d39c391a509a045b6c7061f15bdff5"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga09d39c391a509a045b6c7061f15bdff5"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">atan2</a> (const tvec4&lt; T, P &gt; &amp;x, const tvec4&lt; T, P &gt; &amp;y)</td></tr>
<tr class="separator:ga09d39c391a509a045b6c7061f15bdff5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf4b04dcd3526996d68c1bfe17bfc8657"></a>
template&lt;typename genType &gt; </td></tr>
<tr class="memitem:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL bool&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#gaf4b04dcd3526996d68c1bfe17bfc8657">isfinite</a> (genType const &amp;x)</td></tr>
<tr class="separator:gaf4b04dcd3526996d68c1bfe17bfc8657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga553e2e95b06a0f70c718605998889d3b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga553e2e95b06a0f70c718605998889d3b"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga553e2e95b06a0f70c718605998889d3b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec1&lt; bool, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga553e2e95b06a0f70c718605998889d3b">isfinite</a> (const tvec1&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga553e2e95b06a0f70c718605998889d3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7dd492aa7d6ec21715f9a91b6e5e596a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7dd492aa7d6ec21715f9a91b6e5e596a"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga7dd492aa7d6ec21715f9a91b6e5e596a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec2&lt; bool, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga7dd492aa7d6ec21715f9a91b6e5e596a">isfinite</a> (const tvec2&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga7dd492aa7d6ec21715f9a91b6e5e596a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1be9593d810fceb278a2854da8a25273"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga1be9593d810fceb278a2854da8a25273"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga1be9593d810fceb278a2854da8a25273"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec3&lt; bool, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga1be9593d810fceb278a2854da8a25273">isfinite</a> (const tvec3&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga1be9593d810fceb278a2854da8a25273"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga8c6a59e2f2ac84fba0c5932f1c35bf7a"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga8c6a59e2f2ac84fba0c5932f1c35bf7a"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga8c6a59e2f2ac84fba0c5932f1c35bf7a"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL tvec4&lt; bool, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a> (const tvec4&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga8c6a59e2f2ac84fba0c5932f1c35bf7a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5494ba3a95ea6594c86fc75236886864"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5494ba3a95ea6594c86fc75236886864"></a>
template&lt;typename T &gt; </td></tr>
<tr class="memitem:ga5494ba3a95ea6594c86fc75236886864"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga5494ba3a95ea6594c86fc75236886864">lerp</a> (T x, T y, T a)</td></tr>
<tr class="separator:ga5494ba3a95ea6594c86fc75236886864"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0aa79a146332650a1eb18ae996c653fe"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga0aa79a146332650a1eb18ae996c653fe"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga0aa79a146332650a1eb18ae996c653fe"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec2&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga0aa79a146332650a1eb18ae996c653fe">lerp</a> (const tvec2&lt; T, P &gt; &amp;x, const tvec2&lt; T, P &gt; &amp;y, T a)</td></tr>
<tr class="separator:ga0aa79a146332650a1eb18ae996c653fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf4c885ac72b8879b05777cb516c555c9"><td class="memTemplParams" colspan="2"><a class="anchor" id="gaf4c885ac72b8879b05777cb516c555c9"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gaf4c885ac72b8879b05777cb516c555c9"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#gaf4c885ac72b8879b05777cb516c555c9">lerp</a> (const tvec3&lt; T, P &gt; &amp;x, const tvec3&lt; T, P &gt; &amp;y, T a)</td></tr>
<tr class="separator:gaf4c885ac72b8879b05777cb516c555c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga363d5d069d31a6c2cdd1e9589dde4a60"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga363d5d069d31a6c2cdd1e9589dde4a60"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga363d5d069d31a6c2cdd1e9589dde4a60"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga363d5d069d31a6c2cdd1e9589dde4a60">lerp</a> (const tvec4&lt; T, P &gt; &amp;x, const tvec4&lt; T, P &gt; &amp;y, T a)</td></tr>
<tr class="separator:ga363d5d069d31a6c2cdd1e9589dde4a60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7609b44d8aefc5a277efe73395ff4070"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga7609b44d8aefc5a277efe73395ff4070"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga7609b44d8aefc5a277efe73395ff4070"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec2&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga7609b44d8aefc5a277efe73395ff4070">lerp</a> (const tvec2&lt; T, P &gt; &amp;x, const tvec2&lt; T, P &gt; &amp;y, const tvec2&lt; T, P &gt; &amp;a)</td></tr>
<tr class="separator:ga7609b44d8aefc5a277efe73395ff4070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga90a1d1364a8d078846857178bdcc9af1"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga90a1d1364a8d078846857178bdcc9af1"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga90a1d1364a8d078846857178bdcc9af1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga90a1d1364a8d078846857178bdcc9af1">lerp</a> (const tvec3&lt; T, P &gt; &amp;x, const tvec3&lt; T, P &gt; &amp;y, const tvec3&lt; T, P &gt; &amp;a)</td></tr>
<tr class="separator:ga90a1d1364a8d078846857178bdcc9af1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae4b0244b0d882657bed0a99dfa33f379"><td class="memTemplParams" colspan="2"><a class="anchor" id="gae4b0244b0d882657bed0a99dfa33f379"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:gae4b0244b0d882657bed0a99dfa33f379"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a> (const tvec4&lt; T, P &gt; &amp;x, const tvec4&lt; T, P &gt; &amp;y, const tvec4&lt; T, P &gt; &amp;a)</td></tr>
<tr class="separator:gae4b0244b0d882657bed0a99dfa33f379"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga0fd09e616d122bc2ed9726682ffd44b7"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER T&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga0fd09e616d122bc2ed9726682ffd44b7">saturate</a> (T x)</td></tr>
<tr class="separator:ga0fd09e616d122bc2ed9726682ffd44b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5815a26488231dfdf92242cf0c2d2107"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga5815a26488231dfdf92242cf0c2d2107"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga5815a26488231dfdf92242cf0c2d2107"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec2&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga5815a26488231dfdf92242cf0c2d2107">saturate</a> (const tvec2&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga5815a26488231dfdf92242cf0c2d2107"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga02ed1a53c6df104d56b69f8fb5e9af1b"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga02ed1a53c6df104d56b69f8fb5e9af1b"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga02ed1a53c6df104d56b69f8fb5e9af1b"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec3&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga02ed1a53c6df104d56b69f8fb5e9af1b">saturate</a> (const tvec3&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga02ed1a53c6df104d56b69f8fb5e9af1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga63791409bdef9745b956406afe3157f1"><td class="memTemplParams" colspan="2"><a class="anchor" id="ga63791409bdef9745b956406afe3157f1"></a>
template&lt;typename T , precision P&gt; </td></tr>
<tr class="memitem:ga63791409bdef9745b956406afe3157f1"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00187.html#ga63791409bdef9745b956406afe3157f1">saturate</a> (const tvec4&lt; T, P &gt; &amp;x)</td></tr>
<tr class="separator:ga63791409bdef9745b956406afe3157f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00187.html">GLM_GTX_compatibility</a> </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd>
<dd>
gtc_half_float (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00016_source.html">compatibility.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

View File

@@ -0,0 +1,239 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: compatibility.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">compatibility.hpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="a00016.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">// Dependency:</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;../glm.hpp&quot;</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;../gtc/quaternion.hpp&quot;</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#if GLM_MESSAGES == GLM_MESSAGES_ENABLED &amp;&amp; !defined(GLM_EXT_INCLUDED)</span></div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor"># pragma message(&quot;GLM: GLM_GTX_compatibility extension included&quot;)</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#if GLM_COMPILER &amp; GLM_COMPILER_VC</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor"># include &lt;cfloat&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#elif GLM_COMPILER &amp; GLM_COMPILER_GCC</span></div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor"># include &lt;cmath&gt;</span></div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="preprocessor"># if(GLM_PLATFORM &amp; GLM_PLATFORM_ANDROID)</span></div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor"># undef isfinite</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor"># endif</span></div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#endif//GLM_COMPILER</span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="keyword">namespace </span><a class="code" href="a00141.html">glm</a></div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;{</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;</div>
<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="a00187.html#ga5494ba3a95ea6594c86fc75236886864"> 38</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; GLM_FUNC_QUALIFIER T <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(T x, T y, T a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="a00187.html#ga0aa79a146332650a1eb18ae996c653fe"> 39</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; y, T a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="a00187.html#gaf4c885ac72b8879b05777cb516c555c9"> 41</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; y, T a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="a00187.html#ga363d5d069d31a6c2cdd1e9589dde4a60"> 42</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; y, T a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="a00187.html#ga7609b44d8aefc5a277efe73395ff4070"> 43</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; y, <span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="a00187.html#ga90a1d1364a8d078846857178bdcc9af1"> 44</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; y, <span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379"> 45</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; <a class="code" href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">lerp</a>(<span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; y, <span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; a){<span class="keywordflow">return</span> <a class="code" href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">mix</a>(x, y, a);} </div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="a00187.html#ga0fd09e616d122bc2ed9726682ffd44b7"> 47</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER T <a class="code" href="a00187.html#ga63791409bdef9745b956406afe3157f1">saturate</a>(T x){<span class="keywordflow">return</span> <a class="code" href="a00146.html#ga93bce26c7d80d30a62f5c508f8498a6c">clamp</a>(x, T(0), T(1));} </div>
<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="a00187.html#ga5815a26488231dfdf92242cf0c2d2107"> 48</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; <a class="code" href="a00187.html#ga63791409bdef9745b956406afe3157f1">saturate</a>(<span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; x){<span class="keywordflow">return</span> <a class="code" href="a00146.html#ga93bce26c7d80d30a62f5c508f8498a6c">clamp</a>(x, T(0), T(1));} </div>
<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="a00187.html#ga02ed1a53c6df104d56b69f8fb5e9af1b"> 49</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; <a class="code" href="a00187.html#ga63791409bdef9745b956406afe3157f1">saturate</a>(<span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; x){<span class="keywordflow">return</span> <a class="code" href="a00146.html#ga93bce26c7d80d30a62f5c508f8498a6c">clamp</a>(x, T(0), T(1));} </div>
<div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="a00187.html#ga63791409bdef9745b956406afe3157f1"> 50</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; <a class="code" href="a00187.html#ga63791409bdef9745b956406afe3157f1">saturate</a>(<span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; x){<span class="keywordflow">return</span> <a class="code" href="a00146.html#ga93bce26c7d80d30a62f5c508f8498a6c">clamp</a>(x, T(0), T(1));} </div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;</div>
<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="a00187.html#gac63011205bf6d0be82589dc56dd26708"> 52</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER T <a class="code" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">atan2</a>(T x, T y){<span class="keywordflow">return</span> <a class="code" href="a00152.html#ga461e769acb8b8cb695a5a89334546611">atan</a>(x, y);} </div>
<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="a00187.html#ga525f3e849d0fc64807f8ab571b4545f9"> 53</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec2&lt;T, P&gt; <a class="code" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">atan2</a>(<span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; y){<span class="keywordflow">return</span> <a class="code" href="a00152.html#ga461e769acb8b8cb695a5a89334546611">atan</a>(x, y);} </div>
<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="a00187.html#gad328042b6734d3f2c49c0ec1328b14c0"> 54</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec3&lt;T, P&gt; <a class="code" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">atan2</a>(<span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; y){<span class="keywordflow">return</span> <a class="code" href="a00152.html#ga461e769acb8b8cb695a5a89334546611">atan</a>(x, y);} </div>
<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5"> 55</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_QUALIFIER tvec4&lt;T, P&gt; <a class="code" href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">atan2</a>(<span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; x, <span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; y){<span class="keywordflow">return</span> <a class="code" href="a00152.html#ga461e769acb8b8cb695a5a89334546611">atan</a>(x, y);} </div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> genType&gt; GLM_FUNC_DECL <span class="keywordtype">bool</span> <a class="code" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a>(genType <span class="keyword">const</span> &amp; x); </div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_DECL tvec1&lt;bool, P&gt; <a class="code" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a>(<span class="keyword">const</span> tvec1&lt;T, P&gt;&amp; x); </div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_DECL tvec2&lt;bool, P&gt; <a class="code" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a>(<span class="keyword">const</span> tvec2&lt;T, P&gt;&amp; x); </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_DECL tvec3&lt;bool, P&gt; <a class="code" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a>(<span class="keyword">const</span> tvec3&lt;T, P&gt;&amp; x); </div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T, precision P&gt; GLM_FUNC_DECL tvec4&lt;bool, P&gt; <a class="code" href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">isfinite</a>(<span class="keyword">const</span> tvec4&lt;T, P&gt;&amp; x); </div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="a00187.html#gaddcd7aa2e30e61af5b38660613d3979e"> 63</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="a00187.html#gaddcd7aa2e30e61af5b38660613d3979e">bool1</a>; </div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="a00187.html#gafa8d0bc8dfa7eeb928208305714f648d"> 64</a></span>&#160; <span class="keyword">typedef</span> tvec2&lt;bool, highp&gt; <a class="code" href="a00187.html#gafa8d0bc8dfa7eeb928208305714f648d">bool2</a>; </div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="a00187.html#gab8d74ea4c4f4bd980b650ffb27cdb659"> 65</a></span>&#160; <span class="keyword">typedef</span> tvec3&lt;bool, highp&gt; <a class="code" href="a00187.html#gab8d74ea4c4f4bd980b650ffb27cdb659">bool3</a>; </div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="a00187.html#ga6e79dbfab5917c467a154638ba27898e"> 66</a></span>&#160; <span class="keyword">typedef</span> tvec4&lt;bool, highp&gt; <a class="code" href="a00187.html#ga6e79dbfab5917c467a154638ba27898e">bool4</a>; </div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160;</div>
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="a00187.html#ga7f895c936f0c29c8729afbbf22806090"> 68</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">bool</span> <a class="code" href="a00187.html#ga7f895c936f0c29c8729afbbf22806090">bool1x1</a>; </div>
<div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="a00187.html#ga2bfb53bc320966c85149934fffb0329d"> 69</a></span>&#160; <span class="keyword">typedef</span> tmat2x2&lt;bool, highp&gt; <a class="code" href="a00187.html#ga2bfb53bc320966c85149934fffb0329d">bool2x2</a>; </div>
<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="a00187.html#gad02e7dff74039bb1454643e293d85dfe"> 70</a></span>&#160; <span class="keyword">typedef</span> tmat2x3&lt;bool, highp&gt; <a class="code" href="a00187.html#gad02e7dff74039bb1454643e293d85dfe">bool2x3</a>; </div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="a00187.html#ga379c0869949e8a69c3d06d7637caa5d7"> 71</a></span>&#160; <span class="keyword">typedef</span> tmat2x4&lt;bool, highp&gt; <a class="code" href="a00187.html#ga379c0869949e8a69c3d06d7637caa5d7">bool2x4</a>; </div>
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="a00187.html#ga0fc7ecb53df5be5f9d766fbbfe5190d7"> 72</a></span>&#160; <span class="keyword">typedef</span> tmat3x2&lt;bool, highp&gt; <a class="code" href="a00187.html#ga0fc7ecb53df5be5f9d766fbbfe5190d7">bool3x2</a>; </div>
<div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="a00187.html#gae621c9eabcba552eea5f6ade1f403605"> 73</a></span>&#160; <span class="keyword">typedef</span> tmat3x3&lt;bool, highp&gt; <a class="code" href="a00187.html#gae621c9eabcba552eea5f6ade1f403605">bool3x3</a>; </div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="a00187.html#gad13f8250579ebf79760dcf64215ddb17"> 74</a></span>&#160; <span class="keyword">typedef</span> tmat3x4&lt;bool, highp&gt; <a class="code" href="a00187.html#gad13f8250579ebf79760dcf64215ddb17">bool3x4</a>; </div>
<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="a00187.html#ga184ee05ac2bbbf0a91dd364ba8e528db"> 75</a></span>&#160; <span class="keyword">typedef</span> tmat4x2&lt;bool, highp&gt; <a class="code" href="a00187.html#ga184ee05ac2bbbf0a91dd364ba8e528db">bool4x2</a>; </div>
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="a00187.html#ga83e4c62ab1addfe708dc3409cc0e5dfb"> 76</a></span>&#160; <span class="keyword">typedef</span> tmat4x3&lt;bool, highp&gt; <a class="code" href="a00187.html#ga83e4c62ab1addfe708dc3409cc0e5dfb">bool4x3</a>; </div>
<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="a00187.html#ga9770607032813e7b0ca7362a47efea1e"> 77</a></span>&#160; <span class="keyword">typedef</span> tmat4x4&lt;bool, highp&gt; <a class="code" href="a00187.html#ga9770607032813e7b0ca7362a47efea1e">bool4x4</a>; </div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div>
<div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="a00187.html#ga0670a2111b5e4a6410bd027fa0232fc3"> 79</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="a00187.html#ga0670a2111b5e4a6410bd027fa0232fc3">int1</a>; </div>
<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="a00187.html#ga2eca687990bf3a08ef28bc4a9f2fe700"> 80</a></span>&#160; <span class="keyword">typedef</span> tvec2&lt;int, highp&gt; <a class="code" href="a00187.html#ga2eca687990bf3a08ef28bc4a9f2fe700">int2</a>; </div>
<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="a00187.html#gaaa6ceedf08a85e5fd73a482bc8b77b88"> 81</a></span>&#160; <span class="keyword">typedef</span> tvec3&lt;int, highp&gt; <a class="code" href="a00187.html#gaaa6ceedf08a85e5fd73a482bc8b77b88">int3</a>; </div>
<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="a00187.html#gab19c2df22e9b14081390fabd074081f1"> 82</a></span>&#160; <span class="keyword">typedef</span> tvec4&lt;int, highp&gt; <a class="code" href="a00187.html#gab19c2df22e9b14081390fabd074081f1">int4</a>; </div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="a00187.html#ga056ffe02d3a45af626f8e62221881c7a"> 84</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">int</span> <a class="code" href="a00187.html#ga056ffe02d3a45af626f8e62221881c7a">int1x1</a>; </div>
<div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="a00187.html#gab1c5d0631a6ae34e28bfb2851da387cc"> 85</a></span>&#160; <span class="keyword">typedef</span> tmat2x2&lt;int, highp&gt; <a class="code" href="a00187.html#gab1c5d0631a6ae34e28bfb2851da387cc">int2x2</a>; </div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="a00187.html#ga6dc93f0794eb5fadd7f68b85141a2434"> 86</a></span>&#160; <span class="keyword">typedef</span> tmat2x3&lt;int, highp&gt; <a class="code" href="a00187.html#ga6dc93f0794eb5fadd7f68b85141a2434">int2x3</a>; </div>
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="a00187.html#gad5da9e1b4e0c64c5436b5696ab49540e"> 87</a></span>&#160; <span class="keyword">typedef</span> tmat2x4&lt;int, highp&gt; <a class="code" href="a00187.html#gad5da9e1b4e0c64c5436b5696ab49540e">int2x4</a>; </div>
<div class="line"><a name="l00088"></a><span class="lineno"><a class="line" href="a00187.html#gaa98b1a06b802c975f02a5583f43632db"> 88</a></span>&#160; <span class="keyword">typedef</span> tmat3x2&lt;int, highp&gt; <a class="code" href="a00187.html#gaa98b1a06b802c975f02a5583f43632db">int3x2</a>; </div>
<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="a00187.html#ga20c4d23defbc123ac4745c9b4262156f"> 89</a></span>&#160; <span class="keyword">typedef</span> tmat3x3&lt;int, highp&gt; <a class="code" href="a00187.html#ga20c4d23defbc123ac4745c9b4262156f">int3x3</a>; </div>
<div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="a00187.html#ga7b00c53838143bce963177122ab92c39"> 90</a></span>&#160; <span class="keyword">typedef</span> tmat3x4&lt;int, highp&gt; <a class="code" href="a00187.html#ga7b00c53838143bce963177122ab92c39">int3x4</a>; </div>
<div class="line"><a name="l00091"></a><span class="lineno"><a class="line" href="a00187.html#gaa53815539021200c4e10fd282832dcd3"> 91</a></span>&#160; <span class="keyword">typedef</span> tmat4x2&lt;int, highp&gt; <a class="code" href="a00187.html#gaa53815539021200c4e10fd282832dcd3">int4x2</a>; </div>
<div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="a00187.html#ga4a3bf0ecd6f6ff60836c5bee26c14abe"> 92</a></span>&#160; <span class="keyword">typedef</span> tmat4x3&lt;int, highp&gt; <a class="code" href="a00187.html#ga4a3bf0ecd6f6ff60836c5bee26c14abe">int4x3</a>; </div>
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="a00187.html#ga3bacf576b4b29f2f2959abff7a36652d"> 93</a></span>&#160; <span class="keyword">typedef</span> tmat4x4&lt;int, highp&gt; <a class="code" href="a00187.html#ga3bacf576b4b29f2f2959abff7a36652d">int4x4</a>; </div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;</div>
<div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="a00187.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead"> 95</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="a00187.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead">float1</a>; </div>
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="a00187.html#ga872a70333dd25af68b1ebba485be9e42"> 96</a></span>&#160; <span class="keyword">typedef</span> tvec2&lt;float, highp&gt; <a class="code" href="a00187.html#ga872a70333dd25af68b1ebba485be9e42">float2</a>; </div>
<div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="a00187.html#ga2bfa618285894e34f299e4984f092d56"> 97</a></span>&#160; <span class="keyword">typedef</span> tvec3&lt;float, highp&gt; <a class="code" href="a00187.html#ga2bfa618285894e34f299e4984f092d56">float3</a>; </div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="a00187.html#ga5d49ed44dd9a9e944abc30371fc9045b"> 98</a></span>&#160; <span class="keyword">typedef</span> tvec4&lt;float, highp&gt; <a class="code" href="a00187.html#ga5d49ed44dd9a9e944abc30371fc9045b">float4</a>; </div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;</div>
<div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="a00187.html#ga73720b8dc4620835b17f74d428f98c0c"> 100</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="a00187.html#ga73720b8dc4620835b17f74d428f98c0c">float1x1</a>; </div>
<div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="a00187.html#gaad93cbc2b863e363d53d405d0451d03e"> 101</a></span>&#160; <span class="keyword">typedef</span> tmat2x2&lt;float, highp&gt; <a class="code" href="a00187.html#gaad93cbc2b863e363d53d405d0451d03e">float2x2</a>; </div>
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="a00187.html#ga098c33a30f901f4f6a76969d6db6b01b"> 102</a></span>&#160; <span class="keyword">typedef</span> tmat2x3&lt;float, highp&gt; <a class="code" href="a00187.html#ga098c33a30f901f4f6a76969d6db6b01b">float2x3</a>; </div>
<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="a00187.html#gab2ce4c366abc06c8bf7fe097ecea0dde"> 103</a></span>&#160; <span class="keyword">typedef</span> tmat2x4&lt;float, highp&gt; <a class="code" href="a00187.html#gab2ce4c366abc06c8bf7fe097ecea0dde">float2x4</a>; </div>
<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="a00187.html#gaf30014e7b6874f45d58eb580d04764ff"> 104</a></span>&#160; <span class="keyword">typedef</span> tmat3x2&lt;float, highp&gt; <a class="code" href="a00187.html#gaf30014e7b6874f45d58eb580d04764ff">float3x2</a>; </div>
<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="a00187.html#ga2692a729a69615d72dbebbdd0eba2363"> 105</a></span>&#160; <span class="keyword">typedef</span> tmat3x3&lt;float, highp&gt; <a class="code" href="a00187.html#ga2692a729a69615d72dbebbdd0eba2363">float3x3</a>; </div>
<div class="line"><a name="l00106"></a><span class="lineno"><a class="line" href="a00187.html#gac38c8929ccc87a2dc81eaab97ad5190e"> 106</a></span>&#160; <span class="keyword">typedef</span> tmat3x4&lt;float, highp&gt; <a class="code" href="a00187.html#gac38c8929ccc87a2dc81eaab97ad5190e">float3x4</a>; </div>
<div class="line"><a name="l00107"></a><span class="lineno"><a class="line" href="a00187.html#ga39a2af7aa8f2d29ca40afd2256c0e7c8"> 107</a></span>&#160; <span class="keyword">typedef</span> tmat4x2&lt;float, highp&gt; <a class="code" href="a00187.html#ga39a2af7aa8f2d29ca40afd2256c0e7c8">float4x2</a>; </div>
<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="a00187.html#gad749b26be059f35394fd71c7f7a44034"> 108</a></span>&#160; <span class="keyword">typedef</span> tmat4x3&lt;float, highp&gt; <a class="code" href="a00187.html#gad749b26be059f35394fd71c7f7a44034">float4x3</a>; </div>
<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="a00187.html#gaf40529862492ded2f3b96a6c886f6136"> 109</a></span>&#160; <span class="keyword">typedef</span> tmat4x4&lt;float, highp&gt; <a class="code" href="a00187.html#gaf40529862492ded2f3b96a6c886f6136">float4x4</a>; </div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;</div>
<div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="a00187.html#ga20b861a9b6e2a300323671c57a02525b"> 111</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="a00187.html#ga20b861a9b6e2a300323671c57a02525b">double1</a>; </div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="a00187.html#gaa16a13c6f2768e83ca133430e82ab89e"> 112</a></span>&#160; <span class="keyword">typedef</span> tvec2&lt;double, highp&gt; <a class="code" href="a00187.html#gaa16a13c6f2768e83ca133430e82ab89e">double2</a>; </div>
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="a00187.html#gaed4bc64196bd25d46f6a1f417320a391"> 113</a></span>&#160; <span class="keyword">typedef</span> tvec3&lt;double, highp&gt; <a class="code" href="a00187.html#gaed4bc64196bd25d46f6a1f417320a391">double3</a>; </div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="a00187.html#gab8bbb086c9a6c2deffbe0e80afd6be56"> 114</a></span>&#160; <span class="keyword">typedef</span> tvec4&lt;double, highp&gt; <a class="code" href="a00187.html#gab8bbb086c9a6c2deffbe0e80afd6be56">double4</a>; </div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div>
<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="a00187.html#ga45f16a4dd0db1f199afaed9fd12fe9a8"> 116</a></span>&#160; <span class="keyword">typedef</span> <span class="keywordtype">double</span> <a class="code" href="a00187.html#ga45f16a4dd0db1f199afaed9fd12fe9a8">double1x1</a>; </div>
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="a00187.html#ga320d0a71a4ad9f14a1992d40546cffa7"> 117</a></span>&#160; <span class="keyword">typedef</span> tmat2x2&lt;double, highp&gt; <a class="code" href="a00187.html#ga320d0a71a4ad9f14a1992d40546cffa7">double2x2</a>; </div>
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="a00187.html#gade37cf30c69bacb41ceea7e32717eac7"> 118</a></span>&#160; <span class="keyword">typedef</span> tmat2x3&lt;double, highp&gt; <a class="code" href="a00187.html#gade37cf30c69bacb41ceea7e32717eac7">double2x3</a>; </div>
<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="a00187.html#gaf923922adf744404d5bfb3fafb7d0d8e"> 119</a></span>&#160; <span class="keyword">typedef</span> tmat2x4&lt;double, highp&gt; <a class="code" href="a00187.html#gaf923922adf744404d5bfb3fafb7d0d8e">double2x4</a>; </div>
<div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="a00187.html#gaeaac4d0e18164e4d2fe54432c0fbbcf6"> 120</a></span>&#160; <span class="keyword">typedef</span> tmat3x2&lt;double, highp&gt; <a class="code" href="a00187.html#gaeaac4d0e18164e4d2fe54432c0fbbcf6">double3x2</a>; </div>
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="a00187.html#gac934f579ee5cf3cbdbb25b73f2640c0a"> 121</a></span>&#160; <span class="keyword">typedef</span> tmat3x3&lt;double, highp&gt; <a class="code" href="a00187.html#gac934f579ee5cf3cbdbb25b73f2640c0a">double3x3</a>; </div>
<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="a00187.html#gaad84a1ea83be8fce04c1570c5e719413"> 122</a></span>&#160; <span class="keyword">typedef</span> tmat3x4&lt;double, highp&gt; <a class="code" href="a00187.html#gaad84a1ea83be8fce04c1570c5e719413">double3x4</a>; </div>
<div class="line"><a name="l00123"></a><span class="lineno"><a class="line" href="a00187.html#ga2f87500119da15e35e4a74780ba512bd"> 123</a></span>&#160; <span class="keyword">typedef</span> tmat4x2&lt;double, highp&gt; <a class="code" href="a00187.html#ga2f87500119da15e35e4a74780ba512bd">double4x2</a>; </div>
<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="a00187.html#gaa4e6d53c03780dfa76bd399324f9fe37"> 124</a></span>&#160; <span class="keyword">typedef</span> tmat4x3&lt;double, highp&gt; <a class="code" href="a00187.html#gaa4e6d53c03780dfa76bd399324f9fe37">double4x3</a>; </div>
<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="a00187.html#ga686a3a5590f0a0e721faba08bda301d6"> 125</a></span>&#160; <span class="keyword">typedef</span> tmat4x4&lt;double, highp&gt; <a class="code" href="a00187.html#ga686a3a5590f0a0e721faba08bda301d6">double4x4</a>; </div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;}<span class="comment">//namespace glm</span></div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;<span class="preprocessor">#include &quot;compatibility.inl&quot;</span></div>
<div class="ttc" id="a00187_html_ga056ffe02d3a45af626f8e62221881c7a"><div class="ttname"><a href="a00187.html#ga056ffe02d3a45af626f8e62221881c7a">glm::int1x1</a></div><div class="ttdeci">int int1x1</div><div class="ttdoc">integer matrix with 1 component. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00084">compatibility.hpp:84</a></div></div>
<div class="ttc" id="a00187_html_gae621c9eabcba552eea5f6ade1f403605"><div class="ttname"><a href="a00187.html#gae621c9eabcba552eea5f6ade1f403605">glm::bool3x3</a></div><div class="ttdeci">tmat3x3&lt; bool, highp &gt; bool3x3</div><div class="ttdoc">boolean matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00073">compatibility.hpp:73</a></div></div>
<div class="ttc" id="a00187_html_ga2692a729a69615d72dbebbdd0eba2363"><div class="ttname"><a href="a00187.html#ga2692a729a69615d72dbebbdd0eba2363">glm::float3x3</a></div><div class="ttdeci">tmat3x3&lt; float, highp &gt; float3x3</div><div class="ttdoc">single-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00105">compatibility.hpp:105</a></div></div>
<div class="ttc" id="a00187_html_gad5da9e1b4e0c64c5436b5696ab49540e"><div class="ttname"><a href="a00187.html#gad5da9e1b4e0c64c5436b5696ab49540e">glm::int2x4</a></div><div class="ttdeci">tmat2x4&lt; int, highp &gt; int2x4</div><div class="ttdoc">integer matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00087">compatibility.hpp:87</a></div></div>
<div class="ttc" id="a00187_html_gab2ce4c366abc06c8bf7fe097ecea0dde"><div class="ttname"><a href="a00187.html#gab2ce4c366abc06c8bf7fe097ecea0dde">glm::float2x4</a></div><div class="ttdeci">tmat2x4&lt; float, highp &gt; float2x4</div><div class="ttdoc">single-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00103">compatibility.hpp:103</a></div></div>
<div class="ttc" id="a00187_html_gad749b26be059f35394fd71c7f7a44034"><div class="ttname"><a href="a00187.html#gad749b26be059f35394fd71c7f7a44034">glm::float4x3</a></div><div class="ttdeci">tmat4x3&lt; float, highp &gt; float4x3</div><div class="ttdoc">single-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00108">compatibility.hpp:108</a></div></div>
<div class="ttc" id="a00187_html_ga20b861a9b6e2a300323671c57a02525b"><div class="ttname"><a href="a00187.html#ga20b861a9b6e2a300323671c57a02525b">glm::double1</a></div><div class="ttdeci">double double1</div><div class="ttdoc">double-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00111">compatibility.hpp:111</a></div></div>
<div class="ttc" id="a00187_html_ga320d0a71a4ad9f14a1992d40546cffa7"><div class="ttname"><a href="a00187.html#ga320d0a71a4ad9f14a1992d40546cffa7">glm::double2x2</a></div><div class="ttdeci">tmat2x2&lt; double, highp &gt; double2x2</div><div class="ttdoc">double-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00117">compatibility.hpp:117</a></div></div>
<div class="ttc" id="a00187_html_gaad84a1ea83be8fce04c1570c5e719413"><div class="ttname"><a href="a00187.html#gaad84a1ea83be8fce04c1570c5e719413">glm::double3x4</a></div><div class="ttdeci">tmat3x4&lt; double, highp &gt; double3x4</div><div class="ttdoc">double-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00122">compatibility.hpp:122</a></div></div>
<div class="ttc" id="a00187_html_gab1c5d0631a6ae34e28bfb2851da387cc"><div class="ttname"><a href="a00187.html#gab1c5d0631a6ae34e28bfb2851da387cc">glm::int2x2</a></div><div class="ttdeci">tmat2x2&lt; int, highp &gt; int2x2</div><div class="ttdoc">integer matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00085">compatibility.hpp:85</a></div></div>
<div class="ttc" id="a00187_html_ga2eca687990bf3a08ef28bc4a9f2fe700"><div class="ttname"><a href="a00187.html#ga2eca687990bf3a08ef28bc4a9f2fe700">glm::int2</a></div><div class="ttdeci">tvec2&lt; int, highp &gt; int2</div><div class="ttdoc">integer vector with 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00080">compatibility.hpp:80</a></div></div>
<div class="ttc" id="a00187_html_gaed4bc64196bd25d46f6a1f417320a391"><div class="ttname"><a href="a00187.html#gaed4bc64196bd25d46f6a1f417320a391">glm::double3</a></div><div class="ttdeci">tvec3&lt; double, highp &gt; double3</div><div class="ttdoc">double-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00113">compatibility.hpp:113</a></div></div>
<div class="ttc" id="a00187_html_gae4b0244b0d882657bed0a99dfa33f379"><div class="ttname"><a href="a00187.html#gae4b0244b0d882657bed0a99dfa33f379">glm::lerp</a></div><div class="ttdeci">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt; lerp(const tvec4&lt; T, P &gt; &amp;x, const tvec4&lt; T, P &gt; &amp;y, const tvec4&lt; T, P &gt; &amp;a)</div><div class="ttdoc">Returns the component-wise result of x * (1.0 - a) + y * a, i.e., the linear blend of x and y using v...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00045">compatibility.hpp:45</a></div></div>
<div class="ttc" id="a00187_html_ga20c4d23defbc123ac4745c9b4262156f"><div class="ttname"><a href="a00187.html#ga20c4d23defbc123ac4745c9b4262156f">glm::int3x3</a></div><div class="ttdeci">tmat3x3&lt; int, highp &gt; int3x3</div><div class="ttdoc">integer matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00089">compatibility.hpp:89</a></div></div>
<div class="ttc" id="a00187_html_gac934f579ee5cf3cbdbb25b73f2640c0a"><div class="ttname"><a href="a00187.html#gac934f579ee5cf3cbdbb25b73f2640c0a">glm::double3x3</a></div><div class="ttdeci">tmat3x3&lt; double, highp &gt; double3x3</div><div class="ttdoc">double-precision floating-point matrix with 3 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00121">compatibility.hpp:121</a></div></div>
<div class="ttc" id="a00187_html_gad02e7dff74039bb1454643e293d85dfe"><div class="ttname"><a href="a00187.html#gad02e7dff74039bb1454643e293d85dfe">glm::bool2x3</a></div><div class="ttdeci">tmat2x3&lt; bool, highp &gt; bool2x3</div><div class="ttdoc">boolean matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00070">compatibility.hpp:70</a></div></div>
<div class="ttc" id="a00187_html_ga9770607032813e7b0ca7362a47efea1e"><div class="ttname"><a href="a00187.html#ga9770607032813e7b0ca7362a47efea1e">glm::bool4x4</a></div><div class="ttdeci">tmat4x4&lt; bool, highp &gt; bool4x4</div><div class="ttdoc">boolean matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00077">compatibility.hpp:77</a></div></div>
<div class="ttc" id="a00187_html_ga83e4c62ab1addfe708dc3409cc0e5dfb"><div class="ttname"><a href="a00187.html#ga83e4c62ab1addfe708dc3409cc0e5dfb">glm::bool4x3</a></div><div class="ttdeci">tmat4x3&lt; bool, highp &gt; bool4x3</div><div class="ttdoc">boolean matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00076">compatibility.hpp:76</a></div></div>
<div class="ttc" id="a00187_html_gaad93cbc2b863e363d53d405d0451d03e"><div class="ttname"><a href="a00187.html#gaad93cbc2b863e363d53d405d0451d03e">glm::float2x2</a></div><div class="ttdeci">tmat2x2&lt; float, highp &gt; float2x2</div><div class="ttdoc">single-precision floating-point matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00101">compatibility.hpp:101</a></div></div>
<div class="ttc" id="a00187_html_ga63791409bdef9745b956406afe3157f1"><div class="ttname"><a href="a00187.html#ga63791409bdef9745b956406afe3157f1">glm::saturate</a></div><div class="ttdeci">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt; saturate(const tvec4&lt; T, P &gt; &amp;x)</div><div class="ttdoc">Returns clamp(x, 0, 1) for each component in x. (From GLM_GTX_compatibility) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00050">compatibility.hpp:50</a></div></div>
<div class="ttc" id="a00187_html_gafa8d0bc8dfa7eeb928208305714f648d"><div class="ttname"><a href="a00187.html#gafa8d0bc8dfa7eeb928208305714f648d">glm::bool2</a></div><div class="ttdeci">tvec2&lt; bool, highp &gt; bool2</div><div class="ttdoc">boolean type with 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00064">compatibility.hpp:64</a></div></div>
<div class="ttc" id="a00187_html_ga8c6a59e2f2ac84fba0c5932f1c35bf7a"><div class="ttname"><a href="a00187.html#ga8c6a59e2f2ac84fba0c5932f1c35bf7a">glm::isfinite</a></div><div class="ttdeci">GLM_FUNC_DECL tvec4&lt; bool, P &gt; isfinite(const tvec4&lt; T, P &gt; &amp;x)</div><div class="ttdoc">Test whether or not a scalar or each vector component is a finite value. (From GLM_GTX_compatibility)...</div></div>
<div class="ttc" id="a00187_html_ga5d49ed44dd9a9e944abc30371fc9045b"><div class="ttname"><a href="a00187.html#ga5d49ed44dd9a9e944abc30371fc9045b">glm::float4</a></div><div class="ttdeci">tvec4&lt; float, highp &gt; float4</div><div class="ttdoc">single-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00098">compatibility.hpp:98</a></div></div>
<div class="ttc" id="a00187_html_gaf40529862492ded2f3b96a6c886f6136"><div class="ttname"><a href="a00187.html#gaf40529862492ded2f3b96a6c886f6136">glm::float4x4</a></div><div class="ttdeci">tmat4x4&lt; float, highp &gt; float4x4</div><div class="ttdoc">single-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00109">compatibility.hpp:109</a></div></div>
<div class="ttc" id="a00187_html_ga39a2af7aa8f2d29ca40afd2256c0e7c8"><div class="ttname"><a href="a00187.html#ga39a2af7aa8f2d29ca40afd2256c0e7c8">glm::float4x2</a></div><div class="ttdeci">tmat4x2&lt; float, highp &gt; float4x2</div><div class="ttdoc">single-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00107">compatibility.hpp:107</a></div></div>
<div class="ttc" id="a00187_html_gaf5208d01f6c6fbcb7bb55d610b9c0ead"><div class="ttname"><a href="a00187.html#gaf5208d01f6c6fbcb7bb55d610b9c0ead">glm::float1</a></div><div class="ttdeci">float float1</div><div class="ttdoc">single-precision floating-point vector with 1 component. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00095">compatibility.hpp:95</a></div></div>
<div class="ttc" id="a00141_html"><div class="ttname"><a href="a00141.html">glm</a></div><div class="ttdef"><b>Definition:</b> <a href="a00003_source.html#l00011">_noise.hpp:11</a></div></div>
<div class="ttc" id="a00187_html_gaf30014e7b6874f45d58eb580d04764ff"><div class="ttname"><a href="a00187.html#gaf30014e7b6874f45d58eb580d04764ff">glm::float3x2</a></div><div class="ttdeci">tmat3x2&lt; float, highp &gt; float3x2</div><div class="ttdoc">single-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00104">compatibility.hpp:104</a></div></div>
<div class="ttc" id="a00187_html_ga2f87500119da15e35e4a74780ba512bd"><div class="ttname"><a href="a00187.html#ga2f87500119da15e35e4a74780ba512bd">glm::double4x2</a></div><div class="ttdeci">tmat4x2&lt; double, highp &gt; double4x2</div><div class="ttdoc">double-precision floating-point matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00123">compatibility.hpp:123</a></div></div>
<div class="ttc" id="a00187_html_gaa4e6d53c03780dfa76bd399324f9fe37"><div class="ttname"><a href="a00187.html#gaa4e6d53c03780dfa76bd399324f9fe37">glm::double4x3</a></div><div class="ttdeci">tmat4x3&lt; double, highp &gt; double4x3</div><div class="ttdoc">double-precision floating-point matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00124">compatibility.hpp:124</a></div></div>
<div class="ttc" id="a00187_html_ga45f16a4dd0db1f199afaed9fd12fe9a8"><div class="ttname"><a href="a00187.html#ga45f16a4dd0db1f199afaed9fd12fe9a8">glm::double1x1</a></div><div class="ttdeci">double double1x1</div><div class="ttdoc">double-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00116">compatibility.hpp:116</a></div></div>
<div class="ttc" id="a00187_html_gaa53815539021200c4e10fd282832dcd3"><div class="ttname"><a href="a00187.html#gaa53815539021200c4e10fd282832dcd3">glm::int4x2</a></div><div class="ttdeci">tmat4x2&lt; int, highp &gt; int4x2</div><div class="ttdoc">integer matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00091">compatibility.hpp:91</a></div></div>
<div class="ttc" id="a00187_html_gab19c2df22e9b14081390fabd074081f1"><div class="ttname"><a href="a00187.html#gab19c2df22e9b14081390fabd074081f1">glm::int4</a></div><div class="ttdeci">tvec4&lt; int, highp &gt; int4</div><div class="ttdoc">integer vector with 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00082">compatibility.hpp:82</a></div></div>
<div class="ttc" id="a00187_html_gab8d74ea4c4f4bd980b650ffb27cdb659"><div class="ttname"><a href="a00187.html#gab8d74ea4c4f4bd980b650ffb27cdb659">glm::bool3</a></div><div class="ttdeci">tvec3&lt; bool, highp &gt; bool3</div><div class="ttdoc">boolean type with 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00065">compatibility.hpp:65</a></div></div>
<div class="ttc" id="a00146_html_gadccbaffe46f369cf1a96b2aef92cbfdd"><div class="ttname"><a href="a00146.html#gadccbaffe46f369cf1a96b2aef92cbfdd">glm::mix</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; mix(vecType&lt; T, P &gt; const &amp;x, vecType&lt; T, P &gt; const &amp;y, vecType&lt; U, P &gt; const &amp;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>
<div class="ttc" id="a00152_html_ga461e769acb8b8cb695a5a89334546611"><div class="ttname"><a href="a00152.html#ga461e769acb8b8cb695a5a89334546611">glm::atan</a></div><div class="ttdeci">GLM_FUNC_DECL vecType&lt; T, P &gt; atan(vecType&lt; T, P &gt; const &amp;y, vecType&lt; T, P &gt; const &amp;x)</div><div class="ttdoc">Arc tangent. </div></div>
<div class="ttc" id="a00187_html_gaa98b1a06b802c975f02a5583f43632db"><div class="ttname"><a href="a00187.html#gaa98b1a06b802c975f02a5583f43632db">glm::int3x2</a></div><div class="ttdeci">tmat3x2&lt; int, highp &gt; int3x2</div><div class="ttdoc">integer matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00088">compatibility.hpp:88</a></div></div>
<div class="ttc" id="a00187_html_gaeaac4d0e18164e4d2fe54432c0fbbcf6"><div class="ttname"><a href="a00187.html#gaeaac4d0e18164e4d2fe54432c0fbbcf6">glm::double3x2</a></div><div class="ttdeci">tmat3x2&lt; double, highp &gt; double3x2</div><div class="ttdoc">double-precision floating-point matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00120">compatibility.hpp:120</a></div></div>
<div class="ttc" id="a00187_html_ga09d39c391a509a045b6c7061f15bdff5"><div class="ttname"><a href="a00187.html#ga09d39c391a509a045b6c7061f15bdff5">glm::atan2</a></div><div class="ttdeci">GLM_FUNC_QUALIFIER tvec4&lt; T, P &gt; atan2(const tvec4&lt; T, P &gt; &amp;x, const tvec4&lt; T, P &gt; &amp;y)</div><div class="ttdoc">Arc tangent. Returns an angle whose tangent is y/x. The signs of x and y are used to determine what q...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00055">compatibility.hpp:55</a></div></div>
<div class="ttc" id="a00187_html_gab8bbb086c9a6c2deffbe0e80afd6be56"><div class="ttname"><a href="a00187.html#gab8bbb086c9a6c2deffbe0e80afd6be56">glm::double4</a></div><div class="ttdeci">tvec4&lt; double, highp &gt; double4</div><div class="ttdoc">double-precision floating-point vector with 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00114">compatibility.hpp:114</a></div></div>
<div class="ttc" id="a00187_html_ga184ee05ac2bbbf0a91dd364ba8e528db"><div class="ttname"><a href="a00187.html#ga184ee05ac2bbbf0a91dd364ba8e528db">glm::bool4x2</a></div><div class="ttdeci">tmat4x2&lt; bool, highp &gt; bool4x2</div><div class="ttdoc">boolean matrix with 4 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00075">compatibility.hpp:75</a></div></div>
<div class="ttc" id="a00187_html_gaf923922adf744404d5bfb3fafb7d0d8e"><div class="ttname"><a href="a00187.html#gaf923922adf744404d5bfb3fafb7d0d8e">glm::double2x4</a></div><div class="ttdeci">tmat2x4&lt; double, highp &gt; double2x4</div><div class="ttdoc">double-precision floating-point matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00119">compatibility.hpp:119</a></div></div>
<div class="ttc" id="a00187_html_ga4a3bf0ecd6f6ff60836c5bee26c14abe"><div class="ttname"><a href="a00187.html#ga4a3bf0ecd6f6ff60836c5bee26c14abe">glm::int4x3</a></div><div class="ttdeci">tmat4x3&lt; int, highp &gt; int4x3</div><div class="ttdoc">integer matrix with 4 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00092">compatibility.hpp:92</a></div></div>
<div class="ttc" id="a00187_html_gade37cf30c69bacb41ceea7e32717eac7"><div class="ttname"><a href="a00187.html#gade37cf30c69bacb41ceea7e32717eac7">glm::double2x3</a></div><div class="ttdeci">tmat2x3&lt; double, highp &gt; double2x3</div><div class="ttdoc">double-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00118">compatibility.hpp:118</a></div></div>
<div class="ttc" id="a00187_html_ga098c33a30f901f4f6a76969d6db6b01b"><div class="ttname"><a href="a00187.html#ga098c33a30f901f4f6a76969d6db6b01b">glm::float2x3</a></div><div class="ttdeci">tmat2x3&lt; float, highp &gt; float2x3</div><div class="ttdoc">single-precision floating-point matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00102">compatibility.hpp:102</a></div></div>
<div class="ttc" id="a00187_html_ga7b00c53838143bce963177122ab92c39"><div class="ttname"><a href="a00187.html#ga7b00c53838143bce963177122ab92c39">glm::int3x4</a></div><div class="ttdeci">tmat3x4&lt; int, highp &gt; int3x4</div><div class="ttdoc">integer matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00090">compatibility.hpp:90</a></div></div>
<div class="ttc" id="a00187_html_ga379c0869949e8a69c3d06d7637caa5d7"><div class="ttname"><a href="a00187.html#ga379c0869949e8a69c3d06d7637caa5d7">glm::bool2x4</a></div><div class="ttdeci">tmat2x4&lt; bool, highp &gt; bool2x4</div><div class="ttdoc">boolean matrix with 2 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00071">compatibility.hpp:71</a></div></div>
<div class="ttc" id="a00187_html_ga3bacf576b4b29f2f2959abff7a36652d"><div class="ttname"><a href="a00187.html#ga3bacf576b4b29f2f2959abff7a36652d">glm::int4x4</a></div><div class="ttdeci">tmat4x4&lt; int, highp &gt; int4x4</div><div class="ttdoc">integer matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00093">compatibility.hpp:93</a></div></div>
<div class="ttc" id="a00187_html_ga0670a2111b5e4a6410bd027fa0232fc3"><div class="ttname"><a href="a00187.html#ga0670a2111b5e4a6410bd027fa0232fc3">glm::int1</a></div><div class="ttdeci">int int1</div><div class="ttdoc">integer vector with 1 component. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00079">compatibility.hpp:79</a></div></div>
<div class="ttc" id="a00187_html_ga872a70333dd25af68b1ebba485be9e42"><div class="ttname"><a href="a00187.html#ga872a70333dd25af68b1ebba485be9e42">glm::float2</a></div><div class="ttdeci">tvec2&lt; float, highp &gt; float2</div><div class="ttdoc">single-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00096">compatibility.hpp:96</a></div></div>
<div class="ttc" id="a00187_html_ga2bfb53bc320966c85149934fffb0329d"><div class="ttname"><a href="a00187.html#ga2bfb53bc320966c85149934fffb0329d">glm::bool2x2</a></div><div class="ttdeci">tmat2x2&lt; bool, highp &gt; bool2x2</div><div class="ttdoc">boolean matrix with 2 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00069">compatibility.hpp:69</a></div></div>
<div class="ttc" id="a00187_html_ga6e79dbfab5917c467a154638ba27898e"><div class="ttname"><a href="a00187.html#ga6e79dbfab5917c467a154638ba27898e">glm::bool4</a></div><div class="ttdeci">tvec4&lt; bool, highp &gt; bool4</div><div class="ttdoc">boolean type with 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00066">compatibility.hpp:66</a></div></div>
<div class="ttc" id="a00187_html_ga686a3a5590f0a0e721faba08bda301d6"><div class="ttname"><a href="a00187.html#ga686a3a5590f0a0e721faba08bda301d6">glm::double4x4</a></div><div class="ttdeci">tmat4x4&lt; double, highp &gt; double4x4</div><div class="ttdoc">double-precision floating-point matrix with 4 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00125">compatibility.hpp:125</a></div></div>
<div class="ttc" id="a00187_html_gaddcd7aa2e30e61af5b38660613d3979e"><div class="ttname"><a href="a00187.html#gaddcd7aa2e30e61af5b38660613d3979e">glm::bool1</a></div><div class="ttdeci">bool bool1</div><div class="ttdoc">boolean type with 1 component. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00063">compatibility.hpp:63</a></div></div>
<div class="ttc" id="a00187_html_gad13f8250579ebf79760dcf64215ddb17"><div class="ttname"><a href="a00187.html#gad13f8250579ebf79760dcf64215ddb17">glm::bool3x4</a></div><div class="ttdeci">tmat3x4&lt; bool, highp &gt; bool3x4</div><div class="ttdoc">boolean matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00074">compatibility.hpp:74</a></div></div>
<div class="ttc" id="a00187_html_ga0fc7ecb53df5be5f9d766fbbfe5190d7"><div class="ttname"><a href="a00187.html#ga0fc7ecb53df5be5f9d766fbbfe5190d7">glm::bool3x2</a></div><div class="ttdeci">tmat3x2&lt; bool, highp &gt; bool3x2</div><div class="ttdoc">boolean matrix with 3 x 2 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00072">compatibility.hpp:72</a></div></div>
<div class="ttc" id="a00187_html_gac38c8929ccc87a2dc81eaab97ad5190e"><div class="ttname"><a href="a00187.html#gac38c8929ccc87a2dc81eaab97ad5190e">glm::float3x4</a></div><div class="ttdeci">tmat3x4&lt; float, highp &gt; float3x4</div><div class="ttdoc">single-precision floating-point matrix with 3 x 4 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00106">compatibility.hpp:106</a></div></div>
<div class="ttc" id="a00187_html_ga6dc93f0794eb5fadd7f68b85141a2434"><div class="ttname"><a href="a00187.html#ga6dc93f0794eb5fadd7f68b85141a2434">glm::int2x3</a></div><div class="ttdeci">tmat2x3&lt; int, highp &gt; int2x3</div><div class="ttdoc">integer matrix with 2 x 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00086">compatibility.hpp:86</a></div></div>
<div class="ttc" id="a00187_html_ga2bfa618285894e34f299e4984f092d56"><div class="ttname"><a href="a00187.html#ga2bfa618285894e34f299e4984f092d56">glm::float3</a></div><div class="ttdeci">tvec3&lt; float, highp &gt; float3</div><div class="ttdoc">single-precision floating-point vector with 3 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00097">compatibility.hpp:97</a></div></div>
<div class="ttc" id="a00146_html_ga93bce26c7d80d30a62f5c508f8498a6c"><div class="ttname"><a href="a00146.html#ga93bce26c7d80d30a62f5c508f8498a6c">glm::clamp</a></div><div class="ttdeci">GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType 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>
<div class="ttc" id="a00187_html_gaaa6ceedf08a85e5fd73a482bc8b77b88"><div class="ttname"><a href="a00187.html#gaaa6ceedf08a85e5fd73a482bc8b77b88">glm::int3</a></div><div class="ttdeci">tvec3&lt; int, highp &gt; int3</div><div class="ttdoc">integer vector with 3 components. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00081">compatibility.hpp:81</a></div></div>
<div class="ttc" id="a00187_html_ga73720b8dc4620835b17f74d428f98c0c"><div class="ttname"><a href="a00187.html#ga73720b8dc4620835b17f74d428f98c0c">glm::float1x1</a></div><div class="ttdeci">float float1x1</div><div class="ttdoc">single-precision floating-point matrix with 1 component. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00100">compatibility.hpp:100</a></div></div>
<div class="ttc" id="a00187_html_gaa16a13c6f2768e83ca133430e82ab89e"><div class="ttname"><a href="a00187.html#gaa16a13c6f2768e83ca133430e82ab89e">glm::double2</a></div><div class="ttdeci">tvec2&lt; double, highp &gt; double2</div><div class="ttdoc">double-precision floating-point vector with 2 components. (From GLM_GTX_compatibility extension) ...</div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00112">compatibility.hpp:112</a></div></div>
<div class="ttc" id="a00187_html_ga7f895c936f0c29c8729afbbf22806090"><div class="ttname"><a href="a00187.html#ga7f895c936f0c29c8729afbbf22806090">glm::bool1x1</a></div><div class="ttdeci">bool bool1x1</div><div class="ttdoc">boolean matrix with 1 x 1 component. (From GLM_GTX_compatibility extension) </div><div class="ttdef"><b>Definition:</b> <a href="a00016_source.html#l00068">compatibility.hpp:68</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

93
thirdparty/glm/doc/api/a00017.html vendored Normal file
View File

@@ -0,0 +1,93 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.10"/>
<title>0.9.8: component_wise.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">0.9.8
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.10 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_275089585c7fc1b5fd5d7d42c69cb1da.html">D:</a></li><li class="navelem"><a class="el" href="dir_7b98f88bffbed4b390b5f8f520d9c08e.html">Source</a></li><li class="navelem"><a class="el" href="dir_1f76e953200861345293ade84ac7fb6c.html">G-Truc</a></li><li class="navelem"><a class="el" href="dir_e29b03b892e0e25920d021a614d4db9b.html">glm</a></li><li class="navelem"><a class="el" href="dir_5ce58d942b2d0776e17a9a58abc01e04.html">glm</a></li><li class="navelem"><a class="el" href="dir_8d176b5b7dd0ae42ea6876078f2bde49.html">gtx</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">component_wise.hpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="a00017_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gaf71833350e15e74d31cbf8a3e7f27051"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:gaf71833350e15e74d31cbf8a3e7f27051"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::value_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gaf71833350e15e74d31cbf8a3e7f27051">compAdd</a> (genType const &amp;v)</td></tr>
<tr class="separator:gaf71833350e15e74d31cbf8a3e7f27051"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabfa4bb19298c8c73d4217ba759c496b6"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:gabfa4bb19298c8c73d4217ba759c496b6"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::value_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gabfa4bb19298c8c73d4217ba759c496b6">compMax</a> (genType const &amp;v)</td></tr>
<tr class="separator:gabfa4bb19298c8c73d4217ba759c496b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab5d0832b5c7bb01b8d7395973bfb1425"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:gab5d0832b5c7bb01b8d7395973bfb1425"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::value_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gab5d0832b5c7bb01b8d7395973bfb1425">compMin</a> (genType const &amp;v)</td></tr>
<tr class="separator:gab5d0832b5c7bb01b8d7395973bfb1425"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae8ab88024197202c9479d33bdc5a8a5d"><td class="memTemplParams" colspan="2">template&lt;typename genType &gt; </td></tr>
<tr class="memitem:gae8ab88024197202c9479d33bdc5a8a5d"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL genType::value_type&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gae8ab88024197202c9479d33bdc5a8a5d">compMul</a> (genType const &amp;v)</td></tr>
<tr class="separator:gae8ab88024197202c9479d33bdc5a8a5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaeb34fdf090d2d4da9babcdfec267f09e"><td class="memTemplParams" colspan="2">template&lt;typename floatType , typename T , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gaeb34fdf090d2d4da9babcdfec267f09e"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; floatType, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gaeb34fdf090d2d4da9babcdfec267f09e">compNormalize</a> (vecType&lt; T, P &gt; const &amp;v)</td></tr>
<tr class="separator:gaeb34fdf090d2d4da9babcdfec267f09e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaea99a3271016bfd331d9fa7587f3db37"><td class="memTemplParams" colspan="2">template&lt;typename T , typename floatType , precision P, template&lt; typename, precision &gt; class vecType&gt; </td></tr>
<tr class="memitem:gaea99a3271016bfd331d9fa7587f3db37"><td class="memTemplItemLeft" align="right" valign="top">GLM_FUNC_DECL vecType&lt; T, P &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="a00188.html#gaea99a3271016bfd331d9fa7587f3db37">compScale</a> (vecType&lt; floatType, P &gt; const &amp;v)</td></tr>
<tr class="separator:gaea99a3271016bfd331d9fa7587f3db37"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="a00188.html">GLM_GTX_component_wise</a> </p>
<dl class="section date"><dt>Date</dt><dd>2007-05-21 / 2011-06-07 </dd></dl>
<dl class="section author"><dt>Author</dt><dd>Christophe Riccio</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="a00156.html" title="The core of GLM, which implements exactly and only the GLSL specification to the degree possible...">GLM Core</a> (dependence) </dd></dl>
<p>Definition in file <a class="el" href="a00017_source.html">component_wise.hpp</a>.</p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.10
</small></address>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More